Google Apps ScriptでTrelloのカード情報一覧から必要な情報を取り出す


付箋紙

みなさん、こんにちは!うえはら(@tifoso_str)です。

前回はGoogle Apps ScriptでTrelloの特定のリストにあるカードの一覧を取得しました。

Google Apps ScriptでTrelloの特定のリストにあるカードの一覧を取得する
Trelloはタスク管理に便利です。今回はGoogle Apps ScriptでTrelloのAPIを利用して、特定のリストにあるカード一覧を取得します。 なお、TrelloのKeyやTOKENの保存にはプロパティストアを利用します。

取得できた情報から、必要な情報はある程度、把握できたとおもいます。

今回はTrelloのAPI仕様を確認し、必要な情報を特定して、Trelloのカードから必要な情報を取り出す部分を解説します。

スポンサーリンク

前回の復習

前回紹介した特定のリストにあるカード情報一覧を取得するスクリプトです。

function trelloMain(){
  var scriptProperties = PropertiesService.getScriptProperties();
  const Trello_KEY   = scriptProperties.getProperty('Trello_KEY');
  const Trello_TOKEN = scriptProperties.getProperty('Trello_TOKEN');
  const BOARD_ID = scriptProperties.getProperty('BOARD_ID');
  const LIST_ID = scriptProperties.getProperty('LIST_ID');
 
  var url = 'https://api.trello.com/1/lists/' + LIST_ID + '/cards?key=' + Trello_KEY + '&token=' + Trello_TOKEN;
  var response = UrlFetchApp.fetch(url);
  var json = JSON.parse(response.getContentText());
 
  Logger.log(json);
 
}

APIのKEYやTOKENはプロパティストアを利用して呼び出します。

そして、取得できたログがこちらです。

Trelloログ

英単語と内容から、メンバーは「idMembers」で、期限は日付形式だから・・・、となんとなくわかると思います。

この中から、今回のシリーズで必要なメンバー期限を特定します。

カード情報の確認

カード情報の一覧からメンバーと期限がどれになるか、TrelloのAPI_Docを確認します。

Trello_API

このカードオブジェクト結構長いですが、予想した箇所を見ると下記のように確認できます。

項目 キー 説明
メンバー idMembers カードに登録されたメンバーIDの配列
期限 due カードの期限(存在する場合)

カード一覧から取り出すために必要なキーがわかったので、前回のスクリプトを修正して、メンバーと期限だけをTrelloから取得します。

URLにfieldsパラメータを追加して、横に長くなったので、改行して縦に揃えました。

function TrelloMain(){
  var scriptProperties = PropertiesService.getScriptProperties();
  const Trello_KEY   = scriptProperties.getProperty('Trello_KEY');
  const Trello_TOKEN = scriptProperties.getProperty('Trello_TOKEN');
  const BOARD_ID = scriptProperties.getProperty('BOARD_ID');
  const LIST_ID = scriptProperties.getProperty('LIST_ID');

  var url = 'https://api.trello.com/1/lists/' + LIST_ID + '/cards';
  url += '?key=' + Trello_KEY;
  url += '&token=' + Trello_TOKEN;
  url += '&fields= idMembers,due';
  
  var response = UrlFetchApp.fetch(url);
  var json = JSON.parse(response); 
  Logger.log(json);
}

ログ表示すると、メンバーのIDと期限だけが表示されると思います。

このログをブログに出すと、モザイクだらけになるので、みなさんの環境で試してください。

メンバーIDと期限を配列に追加する

メンバーIDと期限の情報は得られましたが、このままでは扱いづらいので、値だけを配列に追加します。

また、今後、メンバー一覧も取得するので、カード情報を取得する部分も関数にします。

スクリプトは下記のようになります。

/**
* Trelloから情報を取得するメイン関数
*/
function trelloMain(){
  var scriptProperties = PropertiesService.getScriptProperties();
  const Trello_KEY   = scriptProperties.getProperty('Trello_KEY');
  const Trello_TOKEN = scriptProperties.getProperty('Trello_TOKEN');
  const BOARD_ID = scriptProperties.getProperty('BOARD_ID');
  const LIST_ID = scriptProperties.getProperty('LIST_ID');

  var cards = getCards(Trello_KEY,Trello_TOKEN,LIST_ID); //カード情報取得
}

/**
* リストのカード一覧から必要な情報を配列として返す
* @param {String} Trello_KEY TrelloのAPIキー
* @param {String} Trello_TOKEN Trelloのトークン
* @param {String} LIST_ID カードを取得するリストID
* @return {String[]} メンバーIDと期限の配列
*/
function getCards(Trello_KEY,Trello_TOKEN,LIST_ID) {
    
  var url = 'https://api.trello.com/1/lists/' + LIST_ID + '/cards';
  url += '?key=' + Trello_KEY;
  url += '&token=' + Trello_TOKEN;
  url += '&fields=idMembers,due';
  
  var response = UrlFetchApp.fetch(url);
  var json = JSON.parse(response.getContentText());
  
  var cards = []; //カード情報を入れる配列の用意
  
  //カードの数だけ繰り返す
  for (var i = 0 ; i < json.length; i++){
    var idMembers = json[i].idMembers[0];
    var due = json[i].due;
    var card = [idMembers,due];
    cards.push(card); //配列に追加
  }
  return cards;
}

11行でgetCards関数を呼び出して、メンバーIDと期限の入った配列を取得しています。

getCards関数では、メンバーIDと期限の配列を返す必要がありますが、二つは返せないので、37行でメンバーIDと期限を対にした配列を作り、38行でその配列を別の配列に追加して、2次元配列を作成しています。

35行目のメンバーIDを取り出すところで、idMembers[0]となっているのはidMembersが配列となっている為です。

Trelloではメンバーを複数設定できるので、このような仕様になっています。

なお、本シリーズではメンバーには一人だけ設定されているものとしています。

また、関数として分けたので、ドキュメンテーションコメントも追加しました。

ドキュメンテーションコメントについては、下記コーディングルールをご覧下さい。

Google Apps Scriptコーディングガイドライン【随時更新】
Google Apps Scriptのコーディングガイドラインです。 スクリプトの読みやすさ、開発効率はガイドラインによって大きく変わります。その後の、保守運用においても重要で、だれが見てもわかるようにしたいです。

まとめ

今回は、Google Apps ScriptでTrelloのカードから必要な情報を取り出す方法をお伝えしました。

次回に向けて、カード情報を取得する部分を別関数にしましたが、こういうときにドキュメンテーションコメントを追加しておくと、再利用するときなど読み返す効率が上がります

一手間加えることで、その後の開発に大きな差が出ますので、追加することをおすすめします!

さて、カード情報からメンバーIDはわかりましたが、これでは誰か判断できません。

次回はTrelloのメンバー情報から、メンバーのIDとメンバー名を取得する方法をお伝えします。

次回もよろしくお願いします。

連載目次:GASでTrelloのAPIを利用して、1ヶ月の執筆数をメンバーごとに集計

「いつも隣にITのお仕事」の執筆チームでは、タスク管理にTrelloを使用しています。 各記事をカードとして管理し、公開されたものは「公開済み」のリストへ移動させます。 本シリーズでは、「公開済み」のリストにあるカードを確認して、1ヶ月の執筆数をメンバー毎に集計します。
  1. Google Apps ScriptでTrelloの特定のリストにあるカードの一覧を取得する
  2. Google Apps ScriptでTrelloのカード情報一覧から必要な情報を取り出す
  3. Google Apps ScriptでTrelloのボードに登録しているメンバー情報を取り出す
  4. Google Apps ScriptでTrelloのリストにある担当カードの数を集計する
  5. Google Apps ScriptでTrelloのリストにある担当カードの数をスプレッドシートに追記する

タイトルとURLをコピーしました