Google Apps ScriptでTrelloの特定のリストにあるカードの一覧を取得する


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

以前にもお伝えしていますが、「いつも隣にITのお仕事」の執筆チームでは、タスク管理にTrelloを使っています。

Trelloについてご存じない方は、タカハシさんが本ブログでも紹介しておりますので、一度、ご確認ください。

チームでのタスク状況が一目瞭然!初心者向けTrelloの使い方と解説
チームのタスクの状況が一目瞭然でわかるカンバン方式を採用したクラウド型のタスク管理ツールTrelloについて登録の仕方、使い方、そしてその特徴とメリットにについてお伝えしたいと思います。

執筆チームでは「執筆中」、「公開待ち」、「公開済み」のリストがあり、各記事をカードとして管理しています。

記事のカードが、それぞれのリストを移動していき、記事が公開されて最終の「公開済み」へ移動します。

「公開済み」のリストには記事のカードが貯まっていくので、このリストのカードを公開日で判定すれば、1ヶ月の執筆記事を数えることができます。

今回のシリーズでは、Google Apps ScriptでTrelloのAPIを利用して、1ヶ月の執筆数をメンバーごとに集計してみます。

本記事では、Google Apps ScriptでTrelloのリストからカードの一覧を取得する部分をお伝えします。

スポンサーリンク

ボードIDとリストIDの取得

Google Apps ScriptからTrelloのAPIを使用するには、KeyとTokenが必要となります。

また、ボードIDとリストIDも必要となりますが、これらについてはタダケンさんが以前紹介されていますので、そちらをご覧下さい。

Google Apps ScriptでTrelloを操作するはじめの一歩
Google Apps ScriptでTrelloをAPIで操作する方法を解説します。今回は認証に必要なkeyとtokenを取得する方法と、取得したkeyとtokenをつかってボードIDを取得する方法をお伝えします。
Google Apps ScriptでTrelloのリスト一覧とカード一覧を取得する
Google Apps ScriptでTrelloをAPIで操作する方法を解説します。今回はリストの一覧、カードの一覧を取得する方法をお伝えします。

全く同じというのもなんですので、今回は、プロパティーストアを利用して、重要な値がすぐにはわからないようにしたいと思います。

なお今回のシリーズではスプレッドシートコンテナバインドスクリプトを使用していきます。

プロパティーストアの利用

メニューの「ファイル」→「プロジェクトのプロパティ」と進みます。

「ユーザープロパティー」はなぜか呼び出しできないので、「スクリプトのプロパティー」を使用します。

プロパティストア

上記のように入力した値を呼び出すには、下記のようなスクリプトになります。

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メソッドでスクリプトプロパティーの一覧を取り出します。

PropertiesService.getScriptProperties()

この一覧は、キーと対応する値が含まれる、連想配列みたいなものなので、その中から目的の値を取り出すにはPropertiesクラスのgetPropertyメソッドを使用します。

Propertiesオブジェクト.getProperty(キー)

一手間増えますが、コードをやり取りするときでも重要な値が直接見えないので安心です。

ブログに乗せるときも書き換えしなくて済むので便利です!

特定のリストのカード一覧の取得

それでは、リストにあるカード一覧を取得してみます。

特定のリストにあるカード一覧を取得するAPIのURLは下記となります。

https://api.trello.com/1/lists/{リストのID}/cards?key={Trello_KEY}&token={Trello_TOKEN}

この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メソッドを使って、カードの一覧を取得し、変数に格納しています。

UrlFetchApp.fetch(アドレス,パラメータ)

今回はパラメータの部分が「{‘method’:’get’}」となるのですが、これはデフォルトなので省略しています。

取得できた一覧はJSON形式なので、10行目でgetContentTextメソッドでテキストに変換し、parseメソッドを利用してJSON形式を配列へ変換します。

JSON.parse(レスポンス.getContentText())

今回は確認のため、ログ出力としています。

ログの確認

実際にログを確認すると下記のようになっています。

Trelloログ

これだけではちょっとわかりづらいですね。

このログを改行して見やすくしたものが下記となります。

[
{
 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のヘルプを見ながら紹介したいと思います。

連載目次: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をコピーしました