You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用python-jira无法获取Jira工作日志中的评论

问题

我正在使用python-jira库从Jira Service Management Cloud提取工作日志条目,其他功能都正常,唯独无法获取每条工作日志的评论。官方文档描述模糊,我尝试用worklog.comment调用评论,但运行代码时一直报错。以下是我的代码和错误信息,请问怎么获取工作日志的评论?

代码

jira = JIRA(server, basic_auth=(email,token))

# 定义日期筛选范围
startDate = datetime.date(2024, 2, 1)
endDate = datetime.date(2024, 2, 27)

# 定义JQL筛选工单
jql = "project in (XY) AND issuetype in ('[System] Incident', '[System] Service request') AND status = Closed AND resolutiondate >= {} AND resolutiondate <= {}".format(startDate, endDate)

# 分批获取工单并存储到issues_all
pos = 0;
batch = 100;
issues_all = []
while True:
    issues_batch = jira.search_issues(jql_str=jql, startAt=pos, maxResults=batch, fields=['worklog','customfield_10202','customfield_10198','customfield_10191'])
    if issues_batch == []:
        break
    else:
        issues_all += issues_batch
    pos += batch

with open('jiraExport.csv', 'w', newline='', encoding='utf-8') as file:
    writer = csv.writer(file, delimiter=";")
    fields = ["工单编号", "工单ID","保修依据","保修状态","保修原因","工作日志ID", "作者姓名", "作者邮箱","日志日期", "耗时", "描述"]

    writer.writerow(fields)

    for issue in issues_all:
        current_issue = jira.issue(issue)
        worklogs = current_issue.fields.worklog.worklogs
        for worklog in worklogs:
            worklog_fields = []
            worklog_fields.append(current_issue.key)
            worklog_fields.append(worklog.issueId)
            worklog_fields.append(current_issue.fields.customfield_10202)
            worklog_fields.append(current_issue.fields.customfield_10198)
            worklog_fields.append(current_issue.fields.customfield_10191)
            worklog_fields.append(worklog.id)
            worklog_fields.append(worklog.author.displayName)
            worklog_fields.append(worklog.author.emailAddress)
            worklog_fields.append(functions.datetime_to_date(worklog.started))
            worklog_fields.append(functions.seconds_to_industryHours(worklog.timeSpentSeconds))
            worklog_fields.append(worklog.comment) # <----- 报错行
            writer.writerow(worklog_fields)

错误信息

Traceback (most recent call last):
  File "C:\Users\xy\AppData\Local\Programs\Python\Python312\Lib\site-packages\jira\resources.py", line 193, in __getattr__
    return self[item]  # type: ignore
           ~~~~^^^^^^
TypeError: 'Worklog' 对象不可下标访问

在处理上述异常期间,又触发了新的异常:

Traceback (most recent call last):
  File "d:\Development\Projects\Jira Interface\main.py", line 58, in <module>
    worklog_fields.append(worklog.comment)
                          ^^^^^^^^^^^^^^^
  File "C:\Users\xy\AppData\Local\Programs\Python\Python312\Lib\site-packages\jira\resources.py", line 198, in __getattr__
    raise AttributeError(
AttributeError: <class 'jira.resources.Worklog'> 对象没有属性 'comment' ('Worklog' 对象不可下标访问)
解决方法

问题根源是通过search_issues获取工单时,返回的Worklog对象是精简版,仅包含基础信息,默认不携带评论字段,必须显式调用接口获取完整的工作日志详情。

具体修改步骤

把遍历工作日志的代码替换为以下内容,通过jira.worklog()接口单独拉取每条工作日志的完整数据:

for issue in issues_all:
    current_issue = jira.issue(issue)
    worklogs = current_issue.fields.worklog.worklogs
    for worklog in worklogs:
        # 获取完整的工作日志数据,包含评论字段
        full_worklog = jira.worklog(current_issue.key, worklog.id)
        worklog_fields = []
        worklog_fields.append(current_issue.key)
        worklog_fields.append(full_worklog.issueId)
        worklog_fields.append(current_issue.fields.customfield_10202)
        worklog_fields.append(current_issue.fields.customfield_10198)
        worklog_fields.append(current_issue.fields.customfield_10191)
        worklog_fields.append(full_worklog.id)
        worklog_fields.append(full_worklog.author.displayName)
        worklog_fields.append(full_worklog.author.emailAddress)
        worklog_fields.append(functions.datetime_to_date(full_worklog.started))
        worklog_fields.append(functions.seconds_to_industryHours(full_worklog.timeSpentSeconds))
        # 处理空评论的情况,避免报错
        worklog_fields.append(full_worklog.comment or "")
        writer.writerow(worklog_fields)

补充说明

  • 加上or ""的空值判断,是为了应对部分工作日志没有评论的场景,防止因字段为空导致写入CSV时出现异常。
  • 该方法会增加额外的API调用次数,如果工单数量较多,可根据需要添加适当的延时,避免触发Jira的API限流。

内容的提问来源于stack exchange,提问作者kinsion

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 03:23:31