我想创建一封每日通知电子邮件,其中包含在讨论部分收到新评论、状态已更改、已分配给某人或具有任何其他字段的所有工作项目(说明、努力、截止日期等)已更改。
我想将这些工作项目编译成一封电子邮件,但也包括更新本身是什么,并在one编译的电子邮件中发送所有工作项目。
我知道可以创建一个查询,列出过去 24 小时内“更改日期”变量所在的项目,但据我所知,查询工具无法列出具体执行的操作。
我目前正在一个全新的项目环境中执行此操作,没有设置自定义变量,没有为工作项指定规则,什么都没有,一片空白画布。
感谢您的意见!
我想创建一封每日通知电子邮件,其中包含在讨论部分收到新评论、状态已更改、已分配给某人或具有任何其他字段(说明、努力、截止日期等)发生了变化。
根据您的需求,您需要获取最近24小时内发生变更的工作项列表,并获取变更详情。
恐怕没有现成的方法可以直接获取工作项列表和更改的详细信息。
为了满足您的需求,您可以考虑使用PowerShell脚本运行Rest API来获取更改的工作项列表以及最近24小时内的更改详细信息。
这是示例代码:
$token = "PAT"
$url="https://dev.azure.com/{Orgname}/_apis/wit/wiql?api-version=5.1"
$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($token)"))
$JSON = @'
{
"query": "Select [System.Id], [System.Title], [System.State] From WorkItems Where [System.ChangedDate] >= @today-1 order by [Microsoft.VSTS.Common.Priority] asc, [System.CreatedDate] desc"
}
'@
$response = Invoke-RestMethod -Uri $url -Headers @{Authorization = "Basic $token"} -Method Post -Body $JSON -ContentType application/json
foreach($workitemid in $response.workItems.id)
{
echo $workitemid
$url1="https://dev.azure.com/{Orgname}/_apis/wit/workItems/$($workitemid)/updates?api-version=7.1-preview.3"
$GetUpdates = Invoke-RestMethod -Uri $url1 -Headers @{Authorization = "Basic $token"} -Method GET -ContentType application/json
foreach($update in $GetUpdates.value)
{
$Today= Get-Date $response.asOf
$Yesterday = $Today.AddDays(-1).ToString("yyyy-MM-ddTHH:mm:ss")
$Formatchangeddate= (Get-Date $update.fields.'System.ChangedDate'.newValue).ToString("yyyy-MM-ddTHH:mm:ss")
echo $Formatchangeddate
if($Formatchangeddate -gt $Yesterday)
{
echo $update.id
echo $update.fields.'System.History'
}
}
}
上面的示例使用 Rest API:Wiql - 通过 Wiql 查询和 更新 - 列表
它将根据工作项字段获取更改的工作项列表:System.changeddate。
然后它将使用Rest API循环每个工作项的更改并获取更新的字段。
结果:
目前仅获取少量相关信息。您可以根据需要进一步完善代码,以获得更多所需信息。