使用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
相关产品推荐
相关产品推荐

