私はこれに「一種の」答えがあります。プロパティや値を追加するときには手作業での手助けはほとんどありませんが、動作します。
私は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; 値= {"フィールド":{"ZIn76ljn-4yeYvz":2、 "ZIn76ljn-c2yhZH":1}}; アクセス=共有}
@ {id = 5834536fcff0525f26f9e53b; idPlugin = 56d5e249a98895a9797bebb9; scope = card; idModel = 567031ea6a01f722978b795d; 値= {"フィールド":{"ZIn76ljn-4yeYvz":4、 "ZIn76ljn-c2yhZH":3}}; access = shared}
フィールドコレクションは基本的にキー/ペアです。ランダムな文字はプロパティに対応し、その後の値はカスタムプロパティで設定されたものです。この場合、ドロップダウンの値の「インデックス」です。この2つのフィールドには、「優先度」(低、中、高)と「分類」(バグ、変更要求など)があります。 (私たちは何かのためにラベルを使用しています)。
このデータを解析できる別の機能を作成する必要があります。私はそれを行うには良い方法がある確信している - しかし、これは私が今持っているものです。
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
}
}
ここでは、https://developers.trello.com/advanced-reference/cardをスキップしましたが、運がない:/これはまだ文書化されていないか、公開されていません。 – jakub
これを発見しました:https://a.disquscdn.com/uploads/mediaembed/images/4185/8909/original.jpg – jakub
@jakub - その画像のソースに関するアイデアはありますか?私は、これについてさらに議論や動きがあったのであれば、不思議です。私は、カードに基づいてリリースノートを自動作成するのに役立つスクリプトを書いています。これは私にとって非常に貴重です。 – bdwakefield