Так что у меня есть «своего рода» ответ на этот вопрос. Это требует некоторого хакерства с вашей стороны, чтобы он работал, и при добавлении свойств или ценностей есть немного больше ручного содержания, но оно работает.
Я делаю это в powershell (я еще не очень хорошо разбираюсь в ps, и это мой первый действительно «большой» сценарий, который я собрал для него), так как я намерен использовать это с TFS Builds для автоматизации перемещения некоторые карты вокруг и создание заметок выпуска. Мы используем настраиваемые поля, чтобы помочь нам классифицировать карточку и подсчитать оценку/фактические часы и т. Д. Я использовал это guys work в качестве основы для собственных сценариев. Я не включаю все, но вы должны иметь возможность собрать все вместе.
Я упустил все с подключением к Trello и всем этим. У меня есть множество других функций для списков ставок, перемещения карточек, добавления комментариев и т. Д. Модуль ps, который я связал выше, имеет много встроенных в него.
function Get-TrelloCardPluginData
{
[CmdletBinding()]
param
(
[Parameter(Mandatory,ValueFromPipelineByPropertyName)]
[ValidateNotNullOrEmpty()]
[Alias('Id')]
[string]$CardId
)
begin
{
$ErrorActionPreference = 'Stop'
}
process
{
try
{
$uri = "$baseUrl/cards/$CardId/pluginData?$($trelloConfig.String)"
$result = Invoke-RestMethod -Uri $uri -Method GET
return $result
}
catch
{
Write-Error $_.Exception.Message
}
}
}
Вы получите данные, выглядит следующим образом:
@ {ID = 582b5ec8df1572e572411513; idPlugin = 56d5e249a98895a9797bebb9; scope = card; idModel = 58263201749710ed3c706bef; value = {"fields": {"ZIn76ljn-4yeYvz": 2, "ZIn76ljn-c2yhZH": 1}}; access = shared}
@ {id = 5834536fcff0525f26f9e53b; idPlugin = 56d5e249a98895a9797bebb9; scope = card; idModel = 567031ea6a01f722978b795d; value = {"fields": {"ZIn76ljn-4yeYvz": 4, "ZIn76ljn-c2yhZH": 3}}; access = shared}
Коллекция полей в основном ключ/пара. Случайные символы соответствуют свойству и значение после этого - это то, что было установлено в пользовательском свойстве. В этом случае это «индекс» для значения в раскрывающемся списке. Эти два поля имеют для нас приоритет (низкий, средний, высокий) и «классификация» (ошибка, запрос на изменение и т. Д.). (Мы используем ярлыки для чего-то еще).
Таким образом, вам нужно будет создать еще одно fucntion, где вы сможете разобрать эти данные. Я уверен, что есть лучшие способы сделать это, - но это то, что я сейчас:
function Get-TrelloCustomPropertyData($propertyData)
{
$data = $propertyData.Replace('{"fields":{', '')
$data = $data.Replace('}}', '')
$data = $data.Replace('"', '')
$sepone = ","
$septwo = ":"
$options = [System.StringSplitOptions]::RemoveEmptyEntries
$obj = $data.Split($sepone, $options)
$cardCustomFields = Get-TrelloCustomFieldObject
foreach($pair in $obj)
{
$field = $pair.Split($septwo,$options)
if (-Not [string]::IsNullOrWhiteSpace($field[0].Trim()))
{
switch($field[0].Trim())
{
'ZIn76ljn-4yeYvz' {
switch($field[1].Trim())
{
'1'{
$cardCustomFields.Priority = "Critical"
}
'2'{
$cardCustomFields.Priority = "High"
}
'3'{
$cardCustomFields.Priority = "Medium"
}
'4'{
$cardCustomFields.Priority = "Low"
}
}
}
'ZIn76ljn-c2yhZH' {
switch($field[1].Trim())
{
'1'{
$cardCustomFields.Classification = "Bug"
}
'2'{
$cardCustomFields.Classification = "Change Request"
}
'3'{
$cardCustomFields.Classification = "New Development"
}
}
}
'ZIn76ljn-uJyxzA'{$cardCustomFields.Estimated = $field[1].Trim()}
'ZIn76ljn-AwYurD'{$cardCustomFields.Actual = $field[1].Trim()}
}
}
}
return $cardCustomFields
}
Get-TrelloCustomFieldObject другая функция пс, что я создал для создания объекта на основе свойств, которых я знаю что я определил.
function Get-TrelloCustomFieldObject
{
[CmdletBinding()]
param()
begin
{
$ErrorActionPreference = 'Stop'
}
process
{
$ccf = New-Object System.Object
$ccf | Add-Member -type NoteProperty -name Priority -value "None"
$ccf | Add-Member -type NoteProperty -name Classification -value "None"
$ccf | Add-Member -type NoteProperty -name Estimated -value ""
$ccf | Add-Member -type NoteProperty -name Actual -value ""
return $ccf
}
}
Я просмотрел здесь https://developers.trello.com/advanced-reference/card, но не повезло:/Либо это еще не задокументировано, либо оно не отображается. – jakub
Оказывается, это: https://a.disquscdn.com/uploads/mediaembed/images/4185/8909/original.jpg – jakub
@jakub - Любая идея об источнике этого изображения? Мне любопытно, есть ли дальнейшая дискуссия/движение по этому поводу. Я пишу сценарий, чтобы помочь автоматизировать создание заметок на основе карт, и это было бы бесценно для меня. – bdwakefield