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



