みなさん、こんにちは!うえはら(@tifoso_str)です。
今回のシリーズでは、Google Apps ScriptでTrelloのAPIを利用して、1ヶ月の執筆数をメンバーごとに集計することを目標にしています。
その中で、前回は、Google Apps ScriptでTrelloのカード情報一覧から必要な情報を取り出す方法を紹介しました。

色々な情報ありましたが、カード情報のメンバーIDでは誰かすぐにはわかりません。
メンバー情報として、プロフィールに設定している氏名が取り出せれば、すぐにわかりますね!
そこで今回は、Trelloのボードに登録しているメンバー情報を取り出す方法をお伝えします。
前回の復習
前回はTrelloにあるリストからカードの担当者と期限を取得しました。
/**
* 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;
}
カード情報を取得する部分は別の関数としました。
今回もメンバー情報を取得する部分を別関数として作成したいと思います。
ボードのメンバー情報を取得
それでは、ボードに登録されているメンバー情報を取得していきます。
取得するAPIのURLは下記となります。
カード情報と同様に、メンバー情報の一覧をログ表示させて見ます。
function getBoardMembers(){
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/boards/' + BOARD_ID + '/members?key=' + Trello_KEY + '&token=' + Trello_TOKEN;
var response = UrlFetchApp.fetch(url);
var json = JSON.parse(response.getContentText());
Logger.log(json);
}
これを実行すると下記のようなログになります。
[{fullName=********* , id=00000000000000 , username=########### },
{fullName=********* , id=00000000000000 , username=########### },
{fullName=********* , id=00000000000000 , username=########### },
{fullName=********* , id=00000000000000 , username=########### }]
氏名やIDが入っているので、実際のログ表示は伏せますが、内容はわかりやすいですね!
念のため、TrelloのAPI_Docsで確認すると、下記の通りでした。
| キー | プロフィール欄 |
|---|---|
| fullName | 氏名 |
| id | メンバーID |
| username | ユーザー名 |
確認もおわったので、fullnameと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 members = getBoardMembers(Trello_KEY,Trello_TOKEN,BOARD_ID); //ボードのメンバー取得
}
/**
* エディトリアルカレンダーに所属のメンバー一覧を取得
* @param {String} Trello_KEY TrelloのAPIキー
* @param {String} Trello_TOKEN Trelloのトークン
* @param {String} BOARD_ID 取得するカード(リスト)があるボードID
* @return {String[]} ボードに所属するメンバーIDとメンバー名の配列
*/
function getBoardMembers(Trello_KEY,Trello_TOKEN,BOARD_ID){
var url = 'https://api.trello.com/1/boards/' + BOARD_ID + '/members?key=' + Trello_KEY + '&token=' + Trello_TOKEN;
var response = UrlFetchApp.fetch(url);
var json = JSON.parse(response.getContentText());
var membersId=[]; //メンバーID用の配列を準備
var membersFullName=[]; //氏名用の配列を準備
for (var i=0; i < json.length; i++){
membersId.push(json[i].id);
membersFullName.push(json[i].fullName);
}
var members=[membersId,membersFullName];
return members;
}
カード情報の時はメンバーIDと期限を対にして[idMembers,due]の配列をカードの数だけ追加しました。
今回はメンバーID、氏名、別々に配列を作り、最後に[members]にそれぞれ追加して2次元配列としました。
今後の処理によって、返す形を変えていますが、違いがわかったでしょうか?
ログを表示させて、確認してみてください。
まとめ
今回は、Google Apps ScriptでTrelloのボードに登録しているメンバー情報を取り出す方法をお伝えしました。
やり方は、前回、カード情報を取り出したときと同じですが、配列の作り方が変わっています。
呼び出し元の関数で、メンバーIDと氏名を別々の配列で扱いたいので、このようにしています。
返り値をどのような形にすればいいか、こういうことを考えるのも楽しいですね!
カードとメンバーの情報は用意できたので、次回はメンバー毎にリストにあるカードを集計する方法をお伝えします。

