获取当天所有工作项id状态

Get all the work item id states in the same day

我正在处理一些工作项 ID 数据,但我需要工作项 ID 的所有状态和更改日期。当我进入 Analytics View 并创建一个 table 时,它只显示当天的最后状态,而不是所有状态(所以如果他们经常改变状态同一天,我只得到最后一个)。

在 Azure Devops 查询中,我们不支持在同一天获取所有工作项 ID 状态。但是我们可以使用 Rest Api 来帮助我们。

首先,我们需要使用API:Queries – Get来帮助我们找到在同一天更改状态的所有工作项。 然后,我们需要使用 Api: Revisions – List 来帮助我们找到所有状态历史,然后过滤我们需要的状态。

这是演示ps脚本来帮助你(在我的测试中,我使用当前数据,你也可以客户你喜欢的时间)

$token = "XXXXXXX"

$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($token)"))

$urlIds = "https://dev.azure.com/{organization}/{ProjectName} /_apis/wit/wiql?api-version=6.0"

$currentTime = Get-Date -Format 'yyyy-MM-dd'

$JSON = @'
{
    
  "query": "select [System.Id], [System.WorkItemType], [System.Title], [System.AssignedTo], [System.State], [System.Tags] from WorkItems where [System.TeamProject] = @project and [System.WorkItemType] <> '' and [Microsoft.VSTS.Common.StateChangeDate] = @today"

}
'@

$response2 = Invoke-RestMethod -Uri $urlIds -Headers @{Authorization = "Basic $token"} -Method Post -Body $JSON -ContentType application/json
$ids = $response2.workItems

foreach($id in $ids.id){
    $id.ToString()
    $url = "https://dev.azure.com/{organization}/{ProjectName}/_apis/wit/workItems/"+$id+"/revisions?api-version=6.0"
    $response = Invoke-RestMethod -Uri $url -Headers @{Authorization = "Basic $token"} -Method Get -ContentType application/json
    $Test = $response.value.fields
    foreach($fields  in $Test){
        $date = $fields."System.ChangedDate"
        $clean = $date -replace '(T|Z),'
        $dateObject = [datetime]$clean
        If((get-date $currentTime) -lt (get-date $dateObject)){
            $fields."System.State".ToString()
            $dateObject.ToString('yyyy-MM-dd HH:mm:ss')
        }
    }
} 

这是测试结果,格式为(Workitem ID, states, change states time):