2016-08-30 60 views
10

私は既にTrelloのCustom Fields機能に恋しています。 APIを使用してカスタムフィールドを取得および設定する方法はありますか?APIを使用してTrelloカスタムフィールドを取得/設定する方法は?

私は(「をMyCustomField」と呼ばれる定義されたカスタムフィールドを持つボード上)フィールドを取得するためにget field API呼び出しを使用してみました:無駄に

curl "https://api.trello.com/1/cards/57c473503a5ef0b76fddd0e5/MyCustomField?key=${TRELLO_API_KEY}&token=${TRELLO_OAUTH_TOKEN}"

を。

+0

ここでは、https://developers.trello.com/advanced-reference/cardをスキップしましたが、運がない:/これはまだ文書化されていないか、公開されていません。 – jakub

+3

これを発見しました:https://a.disquscdn.com/uploads/mediaembed/images/4185/8909/original.jpg – jakub

+0

@jakub - その画像のソースに関するアイデアはありますか?私は、これについてさらに議論や動きがあったのであれば、不思議です。私は、カードに基づいてリリースノートを自動作成するのに役立つスクリプトを書いています。これは私にとって非常に貴重です。 – bdwakefield

答えて

2

私はこれに「一種の」答えがあります。プロパティや値を追加するときには手作業での手助けはほとんどありませんが、動作します。

私は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 
    } 
} 
2

これは、bdwakefieldの回答に追加するだけです。彼の解決策はフィールドIDの名前をハードコーディングすることです。

:あなたはまた、フィールド自身の名前を取得したい場合は

(例えば、「ZIn76ljn-4yeYvz」は「優先順位」は、ハードコードそれに必要とせず、Trelloに実際にあることを取得するには、以下のエンドポイントを呼び出します

ボード/ {trelloボードID} /のPluginData

これは、プラグイン情報を持つ配列を返し、配列項目のいずれかで、それはのラインに沿った線を含む:

[値] =>を"〜"カスタムフィールド名〜: "、" t ":0、" b ":1、" id ":"〜カスタムフィールドIDはカードレベルで奇妙なものです〜 "、" friendlyType ":" Te xt "}]}

あなたのケースでカスタムフィールドのプラグインを把握するだけで、カスタムフィールド名とそれに関連付けられたIDのkey - > valueペアを取得できます。

これは、フィールドを追加/削除したり、名前を変更したりすると、コードを変更して実行時に処理できることを意味します。

これは、カスタムフィールドのオプションも提供します(上記のbdwakefieldの例のようにドロップダウン)。

+0

私はこれを必要として以来、しばらくしてきました。しかし、私ができることを更新し、私の答えを修正することがどれほど難しいかを私は見ていきます。ありがとう! – bdwakefield

+0

カスタムフィールドのアクセスAPIが読み取り専用であるため、作成と更新が不可能です –

関連する問題