Google Apps ScriptでTrelloのボードに登録しているメンバー情報を取り出す


Trelloメンバー情報

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

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

その中で、前回は、Google Apps ScriptでTrelloのカード情報一覧から必要な情報を取り出す方法を紹介しました。

Google Apps ScriptでTrelloのカード情報一覧から必要な情報を取り出す
Google Apps ScriptでTrelloのAPIを叩きます。API Docsを確認して今回必要なキーがidMembersとdueとわかったので、この二つを取り出して配列に代入する関数を説明します。

色々な情報ありましたが、カード情報のメンバー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は下記となります。

https://api.trello.com/1/boards/{ボードのid}/members?key={Trello_KEY}&token={Trello_TOKEN}

カード情報と同様に、メンバー情報の一覧をログ表示させて見ます。

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と氏名を別々の配列で扱いたいので、このようにしています。

返り値をどのような形にすればいいか、こういうことを考えるのも楽しいですね!

カードとメンバーの情報は用意できたので、次回はメンバー毎にリストにあるカードを集計する方法をお伝えします。

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