JIRA:生成每用户时间报告?

时间:2010-04-03 15:13:37

标签: jira

很抱歉,如果SO不是最佳位置,但我在JIRA中启用了时间跟踪,并希望能够在给定的日期范围内为每个用户生成时间报告。我唯一的时间跟踪报告选项是非常有限的,并没有做我想要的,是否可以通过标准功能或免费插件?

6 个答案:

答案 0 :(得分:6)

您可能想查看Tempo Plugin for JIRA timetracking。它提供有关用户,团队,项目和客户级别的时间表,报告和小工具。

答案 1 :(得分:3)

答案 2 :(得分:2)

如果您不想为简单的操作支付很多钱,例如获取每个用户的时间摘要。

我发现这个流程很有用:

  1. 创建您想要衡量的过滤器(我仅按子任务衡量时间)
  2. 将其导出为ex​​cel
  3. 将其复制并粘贴到Google文档电子表格中
  4. 在Google文档中,您可以选择创建数据透视表,因此只需创建一个行即为受理人且值为时间
  5. 您还可以创建计算列以获得以小时为单位的时间(仅将其除以3600)

    希望有所帮助

答案 3 :(得分:0)

使用 Better Excel Plugin,您可以利用Microsoft Excel中的所有报告功能

此插件将任何类型的JIRA数据(包括问题字段和工作日志)导出到custom Excel templates。模板可以使用过滤到日期范围,并可以Excel pivot table显示您的报告。如果您需要更多维度(例如按项目,按组件,按周,按月等进行额外分组),这些都非常简单。您还可以在数据透视表中可视化输出。

提示:插件中包含一个名为 worklog-report.xlsx 的默认模板,可以按原样使用,也可以作为进一步自定义的起点。它看起来像这样(第一个工作表中有一个按项目划分的数据透视图,但我没有关于它的截图):

enter image description here

创建模板后,您可以通过单击甚至generate it and email it to you automatically随时将其与最新的JIRA数据合并。

免责声明:我是开发此付费插件的开发人员。

答案 4 :(得分:0)

您可以使用JIRA的Everhour插件轻松完成此操作。它允许在给定的日期范围内为每个用户接收综合报告。您可以完全自由地构建报表的任何其他布局,并根据需要添加任意数量的数据列。

Jira Sample Report - Everhour

答案 5 :(得分:0)

如果您使用的是Windows,则可以运行以下powershell脚本将数据提取到CSV文件。

##说明##

  1. 打开Powershell ISE(它已安装到所有Windows 7及更高版本的PC上)

  2. 创建新的PowerShell脚本(ctrl + n)

  3. 将以下代码块中的文本粘贴到新文件

  4. ##################################################################
    # Variables
    ##################################################################
    
    $username = "myname@asdf.com"
    $password = Read-host "What's your Jira password?" -AsSecureString 
    #$password = ""
    
    $jiraDomain = "asdf.atlassian.net"
    $projectKey = "ABC"
    $startDate = [datetime]::ParseExact('2017-05-08', 'yyyy-MM-dd', $null)
    $endDate = Get-Date
    #Get-Date = today
    
    $csvFileName =c:\temp\Worklog.csv
    
    ##################################################################
    # Functions
    ##################################################################
    
    function get-jiraData {
        param( [string]$restRequest)
        Invoke-RestMethod -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -Uri $restRequest
    }
    
    function get-issues {
        param( [string]$projectName)
    
        $uri = "https://${jiraDomain}/rest/api/2/search?jql=project=${projectName}"
        $issuesPage = get-jiraData -RestRequest $uri
    
        #write first batch of issues
        $issuesPage.issues
        #do next batches
        do  {
            $startAt = $issuesPage.maxResults + 1
            $uri = "https://${jiraDomain}/rest/api/2/search?jql=project=${projectName}&startAt=$startAt"
            $issuesPage = get-jiraData -RestRequest $uri
    
            #write next batch of issues
            $issuesPage.issues
        } while (($issuesPage.startAt + $issuesPage.maxResults) -lt $issuesPage.total)
    }
    
    filter convert-worklog {
            $worklog = New-Object System.Object
            $worklog | Add-Member –type NoteProperty –Name Person –Value $_.author.name
            $worklog | Add-Member –type NoteProperty –Name IssueKey –Value $key
            $startDate = [datetime]::ParseExact($_.started.Substring(0,16), 'yyyy-MM-ddTHH:mm', $null)
            $worklog | Add-Member –type NoteProperty –Name DateLogged –Value $startDate
            $TimeMinutes = $_.timeSpentSeconds / 60
            $worklog | Add-Member –type NoteProperty –Name TimeSpent –Value $TimeMinutes
            $worklog | Add-Member –type NoteProperty –Name Comment –Value $_.comment
    
            $worklog
    }
    
    filter extract-worklogs {
        #$key = "WL-22"
        $key = $_.key
    
        $uri = "https://${jiraDomain}/rest/api/2/issue/${key}/worklog"
    
        $worklogsPage = get-jiraData -RestRequest $uri
    
        #write first batch of worklogs
        $worklogsPage.worklogs | convert-worklog
    
        #Check for another batch of worklogs
        do  {
            $startAt = $worklogsPage.maxResults + 1
            $uri = "https://${jiraDomain}/rest/api/2/issue/${key}/worklog?startAt=$startAt"
            $worklogsPage = get-jiraData -RestRequest $uri
    
            #write next batch of worklogs
            $worklogsPage.worklogs | convert-worklog
    
        } while (($worklogsPage.startAt + $worklogsPage.maxResults) -lt $worklogsPage.total)
    }
    
    ##################################################################
    # Execution
    ##################################################################
    
    
    #Setup Authentication variable
    $base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $username,$password)))
    
    #This grabs all the worklogs for a project, then filters them by 
    $WorkLogs = get-issues -projectName $projectKey | extract-worklogs | ?{ $_.DateLogged -gt $startDate -and $_.DateLogged -lt $endDate } | sort DateLogged 
    
    $WorkLogs | export-csv $csvFileName -NoTypeInformation
    
    1. 修改文件开头的变量

    2. 在PC上某处保存为powershell脚本

    3. 双击运行脚本