みなさん、こんにちは!うえはら(@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のヘルプを見ながら紹介したいと思います。