GASで取得したTrelloのボード情報をスプレッドシートでリスト選択にする


リスト選択

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

今シリーズでは「スプレッドシートとGASでTrelloのリストにカードを作成するツール」をお伝えしています。

前回は「GASでスプレッドシートのデータを元にTrelloのカードを作成する方法」をお伝えしました。

GASでスプレッドシートのデータを元にTrelloのカードを作成する
毎週、毎月Trelloに同じカードを作成している方必見です。 スプレッドシートとGoogle Apps Scriptを使用して、Trelloにカードを作成するツールを作成します。 今回は指定のリストにカードを作成します。

今回はGASでTrelloの情報を取得して、スプレッドシートに記入後、リスト選択出来るようにしたいと思います。

スポンサーリンク

ボード情報を取得してスプレッドシートに記入する

まずは、下記のようにboardシートにTrelloのボード情報を記入する部分です。

ボード情報

ボード名、ボードIDの取得方法は下記をご覧下さい。

Google Apps ScriptでTrelloを操作するはじめの一歩
Google Apps ScriptでTrelloをAPIで操作する方法を解説します。今回は認証に必要なkeyとtokenを取得する方法と、取得したkeyとtokenをつかってボードIDを取得する方法をお伝えします。

スプレッドシートにも記入できるようにした、getBoardId関数は下記となります。

/**
*Trelloのボードを取得する
*/
function getBoardId() {
  var scriptProperties = PropertiesService.getScriptProperties();
  const Trello_KEY   = scriptProperties.getProperty('Trello_KEY');
  const Trello_TOKEN = scriptProperties.getProperty('Trello_TOKEN');
    
  var URL = "https://trello.com/1/members/me/boards?key=" + Trello_KEY + "&token=" + Trello_TOKEN + "&fields=name";
  var response = UrlFetchApp.fetch(URL);
  var json = JSON.parse(response.getContentText());

  var boards = [['ボード名','ID']];
  for (var i=0 ; i<json.length ; i++) {
    var id =json[i].id;
    var name = json[i].name;
    boards.push([name,id]);
  }

  var sheetBoard =SpreadsheetApp.getActiveSpreadsheet().getSheetByName('board');
  sheetBoard.clearContents();
  sheetBoard.getRange(1, 1, boards.length, 2).setValues(boards);
}

「boards」配列に繰り返し[ボード名,ボードID]を追加してします。

ボードの増減も考慮して、21行で一度シートの値を消去した後に、スプレッドシートに書き込んでいます。

ボード名をリスト選択できるようにする

それでは、「card」シートの「B1」セルを、リスト選択できるようにします。

ボード名選択

メニューから「データ」→「データの入力規則」で設定します。

データの入力規則

条件の範囲は「board!A2:A10」として、利用するボードがある程度増えてもいいように余裕を持って範囲設定しました。

みなさんの環境に合わせて、調整してください。

リスト情報とメンバー情報の取得

次は、C1セルのボード名を元に、ボードIDを特定してリスト情報とメンバー情報を取得します。

どちらもTrelloのKEYとToken,ボードIDがわかれば取得できるので、これらの値を仮引数で受ける関数を作成します。

リスト情報を取得する関数

まずは、リスト情報を取得するgetListId関数です。

こちらの記事も併せてご覧下さい。

Google Apps ScriptでTrelloのリスト一覧とカード一覧を取得する
Google Apps ScriptでTrelloをAPIで操作する方法を解説します。今回はリストの一覧、カードの一覧を取得する方法をお伝えします。
/**
* ボードにあるリストを取得して、スプレッドシートに記入
* @param {Trello_KEY} 
* @param {Trello_TOKEN}
* @param {BOARD_ID}
*/
function getListId(Trello_KEY,Trello_TOKEN,BOARD_ID) {
  var URL = 'https://trello.com/1/boards/'+ BOARD_ID + '/lists?key=' + Trello_KEY + '&token=' + Trello_TOKEN;
  var response = UrlFetchApp.fetch(URL);
  var json = JSON.parse(response.getContentText());
  
  var lists=[['リスト名','ID']]  
  for (var i=0 ; i<json.length ; i++) {
    var id =json[i].id;
    var name = json[i].name;
    lists.push([name,id]);
  }
  
  var sheetList =SpreadsheetApp.getActiveSpreadsheet().getSheetByName('list');
  sheetList.clearContents();
  sheetList.getRange(1, 1, lists.length, 2).setValues(lists);
}

ボード情報を取得するスクリプトとほぼ同じです。

TrelloのKEYとToken,ボードIDを仮引数で受けるのでこちらの方がスッキリしていますね。

このgetListId関数を実行すると下記のようにリスト名とリストIDを取得します。

リスト情報

メンバー情報を取得する関数

次にメンバー情報を取得するgetMemberId関数です。

こちらの記事も合わせてご覧下さい。

Google Apps ScriptでTrelloのボードに登録しているメンバー情報を取り出す
Google Apps ScriptでTrelloのAPIを叩きます。カード情報から取り出した、メンバーIDと対比させるために、ボードに登録しているメンバーの、メンバーIDと氏名を取り出します。
/**
* ボードに登録のメンバーを取得して、スプレッドシートに記入
* @param {Trello_KEY} 
* @param {Trello_TOKEN}
* @param {BOARD_ID}
*/
function getMemberId(Trello_KEY,Trello_TOKEN,BOARD_ID) { 
  var URL = 'https://api.trello.com/1/boards/' + BOARD_ID + '/members?key=' + Trello_KEY + '&token=' + Trello_TOKEN;
  var respons = UrlFetchApp.fetch(URL);
  var json = JSON.parse(respons.getContentText());

  var members=[['メンバー名','ID']]
  for (var i=0;i<json.length;i++) {
    var fullname = json[i].fullName;
    var id = json[i].id;
    members.push([fullname,id]);
  }
  
  var sheetMember = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('member');
  sheetMember.clearContents()
  sheetMember.getRange(1, 1, members.length, 2).setValues(members);
  }

はい、先程のリスト取得とほぼ同じです。

このgetMemberIdを実行すると下記のようにメンバー名とメンバーIDを取得します。
(この文言も同じですね(^^ゞ)

メンバー情報

ボード名からボードIDを取得する関数

次がメインのgetMemberAndList関数となります。

ボード名からボードIDを取得して、上の二つの関数を呼び出します。

スクリプトは下記のようになります。

/**
* cardシートのボード名から、boardシートの対応するidを取得する。
* その後、メンバーとリストに関する処理を実行する関数を呼び出す。
*/
function getMemberAndList() {
  var scriptProperties = PropertiesService.getScriptProperties();
  const Trello_KEY   = scriptProperties.getProperty('Trello_KEY');
  const Trello_TOKEN = scriptProperties.getProperty('Trello_TOKEN');
  
  var sheetBoard =SpreadsheetApp.getActiveSpreadsheet().getSheetByName('board');
  var lastRow = sheetBoard.getLastRow();
  var boards = sheetBoard.getRange(2, 1, lastRow-1, 2).getValues();
  
  var sheetCard = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('card');
  var boardName = sheetCard.getRange(1,2).getValue();
  Logger.log(boards.length)
             
  for (var i=0;i<boards.length;i++){
    if (boards[i][0] == boardName) {
      var boardId = boards[i][1];
      break;
    }
  }
  
  getMemberID(Trello_KEY,Trello_TOKEN,boardId)
  getListId(Trello_KEY,Trello_TOKEN,boardId)
}

スプレッドシートのデータを取り込んだ「boards」配列は下記のような2次元配列になっています。

[[ボード名,ボードID],[ボード名,ボードID],[ボード名,ボードID],・・・]

ボード名を検索して、B2セルのボード名と一致した場合に、ボードIDを取得します。

一致した後はその後の検索は必要ないので、break文でfor文のループを抜けます。

リスト名とメンバー名をリスト選択できるようにする

ボード名をリスト選択したときと同じように、「B2」セルに入力規則を設定します。

リスト名メンバー名選択

B5~B24セルには、メンバー名を取得するように入力規則を設定します。

まとめ

今回は、GASでTrelloの情報を取得して、スプレッドシートに記入後、リスト選択出来る様にしました。

次回、ボード名からボードIDを取得したときと同じように、リスト名、メンバー名からそれぞれのIDを取得する方法を解説しています。

スプレッドシートとGASでTrelloのリストにカードを作成するツール
シリーズでスプレッドシートとGoogle Apps Scriptを使用して、Trelloにカードを作成するツールをお伝えしています。 今回はシリーズの最終回です。 今までのスクリプトをまとめて、一つのツールにします。

シリーズも完結しますので、是非ご覧下さい。

今回も最後までありがとうございました。

連載目次:スプレッドシートとGASでTrelloにカードを作成するツール

毎週、毎月Trelloに同じカードを作成している方必見です。 スプレッドシートとGoogle Apps Scriptを使用して、Trelloにカードを作成するツールを作成します。

  1. GASでスプレッドシートのデータを元にTrelloのカードを作成する
  2. GASで取得したTrelloのボード情報をスプレッドシートでリスト選択にする
  3. スプレッドシートとGASでTrelloのリストにカードを作成するツール

タイトルとURLをコピーしました