如何用Python脚本更新Jira单选自定义字段customfield_11104至Staging
修复Jira单选自定义字段更新的Python脚本错误
要更新Jira的单选自定义字段customfield_11104(选项:None、PR Review、Production、Staging、Rejected)为Staging时,执行脚本出现如下错误:
{"errorMessages":[],"errors":{"customfield_11104":"Could not find valid 'id' or 'value' in the Parent Option object."}}
原脚本:
from jira import JIRA import urllib3 import sys urllib3.disable_warnings() API_token = 'xxx' jiraOptions = {'server': 'https://xxx','verify': False} authedJira = JIRA(jiraOptions, token_auth=API_token,max_retries=0) #example ticket = sys.argv[1] issue = authedJira.issue(ticket) issue.update(fields={'customfield_11104': [{'value':'Staging'}]})
错误原因
问题出在字段值的格式上——单选自定义字段不需要用数组包裹,你用了[{'value':'Staging'}]这种数组格式,这是给多选字段设计的,Jira API无法识别单选字段的数组传参,因此触发报错。
修正后的脚本
from jira import JIRA import urllib3 import sys urllib3.disable_warnings() API_token = 'xxx' jiraOptions = {'server': 'https://xxx','verify': False} authedJira = JIRA(jiraOptions, token_auth=API_token,max_retries=0) #example ticket = sys.argv[1] issue = authedJira.issue(ticket) # 去掉外层数组,直接传字典格式 issue.update(fields={'customfield_11104': {'value':'Staging'}})
可选优化方案
如果想让脚本更稳定(避免选项名称变更导致失效),可以用字段选项的ID替代名称传参。先通过以下代码获取选项ID:
# 获取字段详情 field = authedJira.field('customfield_11104') # 获取字段所有选项 options = authedJira.custom_field_options(field['id']) for opt in options: print(f"选项名称: {opt.name}, ID: {opt.id}")
之后将更新语句改为:
issue.update(fields={'customfield_11104': {'id': '对应Staging的选项ID'}})
内容的提问来源于stack exchange,提问作者Deepak Rohilla
相关产品推荐
相关产品推荐

