用于更新jira中单选自定义字段的Python脚本



我正在尝试更新一个单选自定义字段(customfield_11104(。此字段有5个选项1。无2。PR审查3。生产4。阶段5。已拒绝。我想使用python脚本将此字段更新为staging。下面的脚本显示了一些错误。response text={"errorMessages":[],"errors":{customfield_11104":"在Parent Option对象中找不到有效的"id"或"value"。}}请您帮助使用python脚本将此自定义字段更新为暂存。

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'}]})

基于文档示例和您对自定义字段的描述。你似乎不必要地把字典放在一个清单里。

可能应该是:

issue.update(fields={'customfield_11104': {'value':'Staging'}})

或者,正如错误消息所示:

issue.update(fields={'customfield_11104': {'id':4}})

只是修改@tranbi:的答案

对于选择字段,可以使用选项的文本值或其数字ID
如果使用文本值,代码将正常工作,但一旦有人更改任何选项的文本(例如,从"暂存"更改为"暂存"(,代码就会中断。
身份证,OTOH,永远不会改变。
还要注意,ID不是以1开头的。选项ID由Jira全局分配(跨越所有自定义字段及其上下文(,因此没有两个具有相同ID的选项。

因此,要更正答案(刚刚在我的Jira Cloud实例上测试过(:
按选项文本更新:

payload = json.dumps(
{'fields': 
{'customfield_11104': {'value': 'Staging'}}
})

按选项ID:更新

payload = json.dumps(
{'fields': 
{'customfield_11104': {'id': '11204'}}
})

然后使用有效载荷执行更新:

issue.update(url, auth, headers, payload=payload)

最新更新