Я создал доску с полями «Дата начала», «Дата окончания» и «Крайний срок». «Срок» представляет собой количество дней, необходимое для выполнения задачи.
Хотя в настоящее время я ввожу «Дата начала» и «Дата окончания» вручную, я хотел бы автоматизировать расчет «Крайнего срока» на основе этих дат. Есть ли способ добиться этого?
Я бы хотел сделать это без использования Power Automate, если это возможно.
Я проверил доступные конфигурации и поискал здесь и в Google, но решения пока не нашел.
Боюсь, что не существует готового метода, который мог бы автоматически рассчитывать поле Срок на основе Даты начала и Даты окончания.
Поскольку вы не хотите использовать Power Automate, я предлагаю вам использовать Script для запуска Rest API для расчета даты.
См. следующие шаги:
Шаг 1. Создайте запрос доски (Доски -> Запросы), чтобы перечислить все рабочие элементы, которые необходимо вычислить.
Например:
Вы можете записать QueryID в URL-адрес.
Шаг 2. Мы можем использовать сценарий PowerShell для запуска следующих API-интерфейсов Rest:
Wiql — Запрос по идентификатору: используйте для перечисления рабочих элементов в запросе.
Рабочие элементы — Получить рабочий элемент: используйте для получения значений полей «Дата начала» и «Дата окончания».
Рабочие элементы — Обновление: используйте для обновления поля «Срок сроков» в рабочем элементе.
Вот пример PowerShell:
$token = "PAT"
$Boardsqueryid = "QueryId"
$ProjectId = "Projectname"
$OrganizationId = "OrganizationName"
$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($token)"))
$getworkitems = "https://dev.azure.com/$($OrganizationId)/$($ProjectId)/_apis/wit/wiql/addf177b-a5f8-460a-a976-40a5b52f2923?api-version=7.1-preview.2"
$response2 = Invoke-RestMethod -Uri $getworkitems -Headers @{Authorization = "Basic $token"} -Method Get -ContentType application/json
foreach($workitem in $response2.workitems)
{
$workitemid = $workitem.id
echo "workitemid: $workitemid"
$url = "https://dev.azure.com/$($OrganizationId)/$($ProjectId)/_apis/wit/workitems/$($workitemid)?api-version=7.1-preview.3"
$response = Invoke-RestMethod -Uri $url -Headers @{Authorization = "Basic $token"} -Method Get -ContentType application/json
$startdate = $response.fields.'Microsoft.VSTS.Scheduling.StartDate'
echo "startdate: $startdate"
$enddate = $response.fields.'Custom.EndDate'
echo "enddate: $enddate"
$ts = New-TimeSpan -Start $startdate -End $enddate
$days = $ts.Days
echo "deadlinedays: $days"
$urlupdateworkitem = "https://dev.azure.com/$($OrganizationId)/$($ProjectId)/_apis/wit/workitems/$($workitemid)?api-version=7.1-preview.3"
$body = "[
{
`"op`": `"add`",
`"path`": `"/fields/Custom.deadline`",
`"value`": `"$days`"
}
]"
$response1 = Invoke-RestMethod -Uri $url -Headers @{Authorization = "Basic $token"} -Method PATCH -Body $body -ContentType application/json-patch+json
}
Результат:
Сторона Powershell:
Страница рабочего элемента:
Привет, Кевин, еще раз спасибо. Отличный учитель :) Это очень помогает!