ValueError: Cannot convert <JIRA Status: name='Close', id='6'> to Excel

ValueError: Cannot convert <JIRA Status: name='Close', id='6'> to Excel

我正在尝试每月从 JIRA 自动执行服务台报告,从 JIRA API 获取详细信息,例如: 1.票号(钥匙) 2.总结 三、说明 4.一些自定义字段(如组织) 5.创建日期 6.更新日期 七、状态 8. 优先级

我正在使用 python JIRA 和 openpyxl 库来处理 jira 函数并将报告写入 excel sheet(计划将此 运行 稍后在一个月的特定时间通过 cronjob)

我面临的问题是我能够获得 1 到 6 的值,但卡在 7 和 8。 原因是我期待值,例如:

但我得到的是:name='Close', id='6'

但我得到的是:name='Low', id='4'

因此,当代码尝试写入 excel 时,它会抛出如下错误:

in _bind_value
raise ValueError("Cannot convert {0!r} to Excel".format(value))
ValueError: Cannot convert <JIRA Priority: name='Low', id='4'> to Excel

in _bind_value
raise ValueError("Cannot convert {0!r} to Excel".format(value))
ValueError: Cannot convert <JIRA Status: name='Close', id='6'> to Excel

这是我目前拥有的代码示例(相当简单):

issues_in_project = jira.search_issues('project = ASD AND assignee in (membersOf(jira-users)))

for issue in issues_in_project:
    key_list.append(issue.key)
    status_list.append(issue.fields.status)
    priority_list.append(issue.fields.priority)

for key in key_list:
    ws.cell(row=key_row, column=start_column).value = key
    key_row += 1

for status in status_list:
    ws.cell(row=status_row, column=start_column+1).value = status
    status_row += 1

for priority in priority_list:
    ws.cell(row=priority_row+1,column=start_column+2).value = priority
    priority_row+=1


作为票号的键值收到正常。

有没有办法通过 JIRA API 只获取值,比如 for ex for Status: Close 和 for Priority: Low 并避免 id 值进入(如上所示)与我真正的值打算得到?

问题上的一些属性是对象,例如prioritystatus。请注意错误消息提到以下内容:

<JIRA Priority: name='Low', id='4'>

<JIRA Status: name='Close', id='6'>

这些是属性的字符串表示。他们告诉你他们的类型是什么(PriorityStatus)并且他们都有某些属性,例如 nameid.

name 属性是您想要的,因此您需要像这样在 statuspriority 对象上访问它:

ws.cell(row=status_row, column=start_column+1).value = status.name

ws.cell(row=priority_row+1,column=start_column+2).value = priority.name

在最后使用.name,如下面的代码所示。这将仅从值中检索名称部分。


for status in status_list:
    ws.cell(row=status_row, column=start_column+1).value = status.name
    status_row += 1

for priority in priority_list:
    ws.cell(row=priority_row+1,column=start_column+2).value = priority.name
    priority_row+=1