需补填Jira中已完成Sprint的Story Point,支持管理层报表提取
批量将Excel中已完成Sprint的Story Point补填至Jira的方案
根据需求,这里提供几种适配不同数据量级的操作方法:
一、手动操作(适合数据量<20条的场景)
- 先整理Excel数据:确保每条记录对应Jira issue的Issue Key(如PROJ-123)和对应的Story Point值
- 逐个编辑issue:
- 在Jira搜索框输入Issue Key定位到目标问题
- 进入问题详情页,点击编辑,找到Story Point字段填入对应数值并保存
- 若需批量验证Sprint归属,可使用JQL筛选:
Sprint = "目标已完成Sprint名称" AND status = Done,确认所有需要更新的issue都在结果中
二、CSV批量导入更新(适合数据量20-100条的场景)
Jira自带的CSV导入支持更新现有问题,步骤如下:
- 将Excel文件另存为CSV格式,确保表格包含两列:
Issue key(必填,与Jira issue的key完全一致)、Story Points(列名需与Jira中该字段的名称匹配,若为自定义字段需用对应名称) - 进入Jira后台:设置→系统→外部系统导入→选择CSV
- 上传CSV文件后,在导入向导中选择更新现有问题,完成CSV列与Jira字段的映射(重点映射
Issue key和Story Points) - 预览更新内容,确认无误后执行导入
三、API脚本批量更新(适合数据量>100条的场景)
用Python结合Jira REST API实现自动化更新,示例代码如下:
import pandas as pd import requests from requests.auth import HTTPBasicAuth # 读取Excel数据 df = pd.read_excel('sprint_story_points.xlsx') # Jira实例配置,替换为你的实际信息 JIRA_URL = "https://your-jira-domain.com" JIRA_EMAIL = "your-work-email@company.com" JIRA_API_TOKEN = "your-api-token" # 从Atlassian账户生成 STORY_POINTS_FIELD_ID = "customfield_10001" # 替换为你的Story Points字段ID # 遍历更新每个issue for _, row in df.iterrows(): issue_key = row["Issue Key"] story_points = row["Story Points"] # 构造API请求 update_url = f"{JIRA_URL}/rest/api/3/issue/{issue_key}" headers = {"Content-Type": "application/json"} payload = { "fields": { STORY_POINTS_FIELD_ID: story_points } } # 发送更新请求 response = requests.put( update_url, json=payload, headers=headers, auth=HTTPBasicAuth(JIRA_EMAIL, JIRA_API_TOKEN) ) if response.status_code == 204: print(f"✅ 更新成功:{issue_key}") else: print(f"❌ 更新失败:{issue_key} | 错误信息:{response.text}")
- 前置准备:安装依赖库
pip install pandas requests,获取Jira API Token(Atlassian账户设置中生成),查询Story Points字段的自定义ID(可通过Jira字段配置页面查看) - 注意:执行前先测试1-2条记录,确保字段映射正确,避免批量错误
通用注意事项
- 操作前务必备份目标Sprint的Jira数据,或先选取少量issue进行测试
- 若目标Sprint已关闭,需确认Jira项目权限允许编辑已关闭Sprint的issue(可联系Jira管理员调整设置)
- 确保Excel中的Issue Key与Jira中的完全一致,否则无法匹配更新
内容的提问来源于stack exchange,提问作者Mona Alreasini
相关产品推荐
相关产品推荐

