所以我对此有一个“有点”的答案。它需要您进行一些黑客操作才能使其工作,并且在您添加属性或值时需要进行一些手动维护 - 但它可以工作。
我正在 powershell 中执行此操作(我还不太精通 ps,这是我为它整理的第一个真正“大”的脚本),因为我的目的是使用 TFS Builds 来自动移动一些卡片和创建发行说明。我们正在使用自定义字段来帮助我们对卡片进行分类并记录估计/实际时间等。我使用这个guys work 作为我自己的脚本的基础。我没有包括所有内容,但您应该能够将所有内容拼凑在一起。
我忽略了连接到 Trello 的所有内容。我还有很多其他功能,用于获取列表、移动卡片、添加 cmets 等。我上面链接的 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;
范围=卡; idModel=58263201749710ed3c706bef;
值={“字段”:{“ZIn76ljn-4yeYvz”:2,“ZIn76ljn-c2yhZH”:1}};
访问=共享}
@{id=5834536fcff0525f26f9e53b; idPlugin=56d5e249a98895a9797bebb9;
范围=卡; idModel=567031ea6a01f722978b795d;
值={“字段”:{“ZIn76ljn-4yeYvz”:4,“ZIn76ljn-c2yhZH”:3}};
访问=共享}
字段集合基本上是键/对。随机字符对应于属性,之后的值是自定义属性上设置的值。在这种情况下,它是下拉列表中值的“索引”。这两个字段对我们来说有一个“优先级”(低、中、高)和一个“分类”(错误、变更请求等)。 (我们将标签用于其他用途)。
因此,您必须创建另一个函数来解析这些数据。我确信有更好的方法来做到这一点——但这就是我现在所拥有的:
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 是我设置的另一个 ps 函数,用于根据我知道我已定义的属性构建对象。
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
}
}