みなさん、こんにちは!うえはら(@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と氏名を別々の配列で扱いたいので、このようにしています。
返り値をどのような形にすればいいか、こういうことを考えるのも楽しいですね!
カードとメンバーの情報は用意できたので、次回はメンバー毎にリストにあるカードを集計する方法をお伝えします。