
みなさん、こんにちは!うえはら(@tifoso_str)です。
以前にもお伝えしていますが、「いつも隣にITのお仕事」の執筆チームでは、タスク管理にTrelloを使っています。
Trelloについてご存じない方は、タカハシさんが本ブログでも紹介しておりますので、一度、ご確認ください。

執筆チームでは「執筆中」、「公開待ち」、「公開済み」のリストがあり、各記事をカードとして管理しています。
記事のカードが、それぞれのリストを移動していき、記事が公開されて最終の「公開済み」へ移動します。
「公開済み」のリストには記事のカードが貯まっていくので、このリストのカードを公開日で判定すれば、1ヶ月の執筆記事を数えることができます。
今回のシリーズでは、Google Apps ScriptでTrelloのAPIを利用して、1ヶ月の執筆数をメンバーごとに集計してみます。
本記事では、Google Apps ScriptでTrelloのリストからカードの一覧を取得する部分をお伝えします。
ボードIDとリストIDの取得
Google Apps ScriptからTrelloのAPIを使用するには、KeyとTokenが必要となります。
また、ボードIDとリストIDも必要となりますが、これらについてはタダケンさんが以前紹介されていますので、そちらをご覧下さい。


全く同じというのもなんですので、今回は、プロパティーストアを利用して、重要な値がすぐにはわからないようにしたいと思います。
なお今回のシリーズではスプレッドシートのコンテナバインドスクリプトを使用していきます。
プロパティーストアの利用
メニューの「ファイル」→「プロジェクトのプロパティ」と進みます。
「ユーザープロパティー」はなぜか呼び出しできないので、「スクリプトのプロパティー」を使用します。
上記のように入力した値を呼び出すには、下記のようなスクリプトになります。
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');
}
PropertiesServiceクラスのgetScriptPropertiesメソッドでスクリプトプロパティーの一覧を取り出します。
この一覧は、キーと対応する値が含まれる、連想配列みたいなものなので、その中から目的の値を取り出すにはPropertiesクラスのgetPropertyメソッドを使用します。
一手間増えますが、コードをやり取りするときでも重要な値が直接見えないので安心です。
ブログに乗せるときも書き換えしなくて済むので便利です!
特定のリストのカード一覧の取得
それでは、リストにあるカード一覧を取得してみます。
特定のリストにあるカード一覧を取得するAPIのURLは下記となります。
このURLの検索方法は次回に解説します。
URLの後ろの「?」以下はパラメーターで、「項目=値」の形で追加します。
今回は渡す項目がKEYとTOKENで複数なので、項目の間に「&」を入れて追加します。
実際のコードは下記のようになります。
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);
}
実際にTrelloにアクセスして、リストにあるカード情報一覧を取得しているのは9行目になります。
UrlFetchAppクラスのfetchメソッドを使って、カードの一覧を取得し、変数に格納しています。
今回はパラメータの部分が「{‘method’:’get’}」となるのですが、これはデフォルトなので省略しています。
取得できた一覧はJSON形式なので、10行目でgetContentTextメソッドでテキストに変換し、parseメソッドを利用してJSON形式を配列へ変換します。
今回は確認のため、ログ出力としています。
ログの確認
実際にログを確認すると下記のようになっています。
これだけではちょっとわかりづらいですね。
このログを改行して見やすくしたものが下記となります。
[
{
 descData=null,
 idLabels=[],
 shortUrl=https://trello.com/c/U8TY1fmX,
 dueComplete=false,
 dateLastActivity=2018-04-11T00:30:07.975Z,
 idList=XXXXXXXXXXXXXXXXX,
 idMembersVoted=[],
 shortLink=U8TY1fmX,
 subscribed=false,
 pos=1024,
 idChecklists=[],
 id=XXXXXXXXXXXXXXXXXXXXXX,
 idBoard=XXXXXXXXXXXXXXXXXXXXXX,
 checkItemStates=null,
 url=https://trello.com/c/U8TY1fmX/681-201804%E2%91%A0python%E3%81%A7openpyxl%E3%82%92%E4%BD%BF%E3%81%84excel%E3%81%AB%E6%95%B0%E5%BC%8F%E3%82%92%E5%85%A5%E5%8A%9B%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95,
 labels=[],
 badges=
  {subscribed=false,
   comments=0,
   attachments=0,
   due=2018-04-10T23:45:00.000Z,
   attachmentsByType={trello={board=0, card=0}},
   viewingMemberVoted=false,
   dueComplete=false,
   description=false,
   votes=0,
   fogbugz=,
   checkItems=0,
   checkItemsChecked=0
   },
 idMembers=[XXXXXXXXXXXXXXXXXXXXXX],
 idShort=681,
 due=2018-04-10T23:45:00.000Z,
 idAttachmentCover=null,
 name=201804①PythonでOpenPyXLを使いExcelに数式を入力する方法,
 closed=false,
 manualCoverAttachment=false, desc=
},
 {descData=null,
 idLabels=[],
 ・
 ・
 ・
さっきよりは見やすくなったでしょうか?
今回はメンバーと期限(公開日時として利用)を取り出す必要がありますが、だいたいどれになるかわかりますか?
英単語と内容から、メンバーは「idMembers」、期限は日付形式だから・・・。
まとめ
今回は、Google Apps ScriptでTrelloのAPIを利用して、リストのカード一覧をログ出力させました。
ログの内容は、英単語を見ればだいたいわかると思いますが、だいたいではダメですね!
次回は、TrelloのAPI仕様を確認しどの項目を見ればいいのか、Trelloのヘルプを見ながら紹介したいと思います。



