如何通过Jira API过滤指定用户工作日志,排除同工单其他用户日志?
解决Jira API获取特定用户专属工作日志的问题
嘿,我来帮你搞定这个Jira工时统计的问题!你现在遇到的核心问题是:用worklogAuthor的JQL查询只能筛选出包含目标用户日志的工单,但工单里其他用户的日志也会跟着返回,对吧?下面给你两种可行的解决方案:
方案1:使用专门的用户工作日志API(推荐)
Jira其实提供了直接获取特定用户工作日志的API端点,能精准返回该用户的所有日志,完全不会混入其他人的内容。
请求示例
GET https://jira.example.com/rest/api/2/worklog/user?username=testUser&project=Test%20Project&since=-7d&startAt=0&maxResults=100
参数说明
username:目标用户的用户名(和你之前用的testUser一致)project:项目键名(比如Test Project要转义成Test%20Project)since:时间范围,-7d表示过去7天,符合你的周统计需求startAt/maxResults:分页参数,和search API用法一致,用来处理大量日志的情况
这个端点返回的结果就是纯目标用户的工作日志,直接就能用来统计工时,不需要额外过滤。
方案2:保留原search API,本地过滤日志条目
如果因为某些原因必须用现有的search API查询,那可以在拿到返回结果后,在本地对worklogs数组进行过滤,只保留目标用户的日志。
过滤逻辑示例(以JavaScript为例)
// 假设apiResponse是你从search API拿到的完整响应数据 const targetUsername = "testUser"; // 提取所有工单中属于目标用户的日志 const filteredWorklogs = apiResponse.issues.flatMap(issue => { return issue.fields.worklogs.filter(worklog => { return worklog.author.name === targetUsername; }); }); // 现在filteredWorklogs里就只有testUser的工作日志了
为什么原查询会带回其他用户的日志?
这里要解释下JQL的worklogAuthor逻辑:它是用来筛选存在该用户工作日志的工单,而不是筛选工单内的日志条目。所以只要工单里有目标用户的一条日志,整个工单的所有日志都会被返回,这是JQL的设计特性,不是bug哦。
内容的提问来源于stack exchange,提问作者John Daniel
相关产品推荐
相关产品推荐

