如何在Node.js中通过JIRA-CLIENT获取Jira问题的Sprint ID
在Node.js中用jira-client获取Jira问题的Sprint ID
Sprint信息默认不会包含在Jira问题的基础字段返回结果里,你需要通过以下步骤来获取:
1. 找到Sprint对应的自定义字段ID
Sprint是Jira的自定义字段,不同实例的字段ID可能不同,你需要先确认这个ID:
- 方法一:调用jira-client的
listFields接口,遍历结果找到name为"Sprint"的字段,记录它的id(格式通常是customfield_xxxx)async function findSprintFieldId() { const fields = await jira.listFields(); const sprintField = fields.find(field => field.name === 'Sprint'); console.log('Sprint字段ID:', sprintField?.id); } - 方法二:在Jira网页端打开任意问题,右键点击"Sprint"字段,选择「检查」,查看元素的
name属性,值就是对应的自定义字段ID
2. 获取问题时指定该字段
用getIssue方法获取问题时,通过fields参数指定Sprint的自定义字段ID,就能拿到Sprint信息:
const JiraClient = require('jira-client'); const jira = new JiraClient({ protocol: 'https', host: '你的Jira域名', username: '你的账号', password: '你的API令牌', apiVersion: '2', strictSSL: true }); async function getIssueSprintId(issueKey) { try { // 替换成你找到的Sprint字段ID const sprintFieldId = 'customfield_10007'; const issue = await jira.getIssue(issueKey, { fields: sprintFieldId }); // 问题可能关联多个Sprint,返回的是数组 const sprints = issue.fields[sprintFieldId]; if (sprints?.length) { // 取第一个关联的Sprint ID,按需调整逻辑 const sprintId = sprints[0].id; console.log(`问题${issueKey}的Sprint ID: ${sprintId}`); return sprintId; } else { console.log(`问题${issueKey}未关联任何Sprint`); return null; } } catch (err) { console.error('获取失败:', err); } } // 调用示例 getIssueSprintId('PROJECT-123');
3. 备选方案:使用Jira敏捷API
如果你的账号有敏捷项目访问权限,也可以直接调用敏捷API获取问题关联的Sprints:
async function getSprintIdViaAgileApi(issueKey) { try { const res = await jira.get(`/rest/agile/1.0/issue/${issueKey}/sprint`); if (res.values?.length) { const sprintId = res.values[0].id; console.log(`Sprint ID: ${sprintId}`); return sprintId; } } catch (err) { console.error('获取失败:', err); } }
注意事项
- 不同Jira实例的Sprint字段ID必须自行确认,不能直接照搬示例中的ID
- 若问题未关联Sprint,返回的数组会是空的,需做好空值判断
- 确保你的Jira账号有访问目标问题和Sprint数据的权限
内容的提问来源于stack exchange,提问作者arjun singh
相关产品推荐
相关产品推荐

