
みなさん、こんにちは!うえはら(@tifoso_str)です。
今シリーズでは「スプレッドシートとGASでTrelloのリストにカードを作成するツール」をお伝えしています。
前回の記事はこちらです。

GASでTrelloのAPIにアクセスして、まず、ボード情報を取得してスプレッドシートに書き出しました。
次にリスト情報とメンバー情報を取得しますが、先に取得したボード情報のボードIDを利用します。
普通であれば、ボードIDをそのまま指定しますが、今回はツールとして利用しやすいようにボード名からボードIDを検索しました。
また、ボード名の選択も入力規則を利用して、ドロップダウンリストとしています。
今回はいままで紹介したことをまとめて、「スプレッドシートとGASでTrelloのリストにカードを作成するツール」を作成します。
リスト名からリストIDを特定する
どのリストにカードを作成するか、「B2」セルでリスト名を選択します。

このリスト名を元にリストIDを特定します。
リストIDを特定する部分のスクリプトは下記となります。
//リストID取得
var sheetCard = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('card');
var listName = sheetCard.getRange(2,2).getValue();
var sheetList =SpreadsheetApp.getActiveSpreadsheet().getSheetByName('list');
var lists = sheetList.getDataRange().getValues();
for (var i=0 ; i<lists.length ;i++) {
if (lists[i][0] === listName) {
var LIST_ID = lists[i][1];
break;
}
}
やってることは、前回、ボードIDを特定したときと同じです。
3行目でB2セルのリスト名取得します。
listシートはこのようになっているので、
5行目でlistシートから取り込んだ「lists」配列は、下記のような2次元配列となります。
[[カード新規作成,000000],[カード移動先,111111],[カードアーカイブ待ち,222222],・・・]
各要素の先頭がB2セルのリスト名と同じか繰り返し判定して、同じだった場合にそのリストIDを変数に格納します。
メンバー名からメンバーIDを特定する
次はメンバーIDを特定する方法です。
カードの作成は一枚ごと処理を行うので、作成するカードが複数の場合、メンバーIDは作成するカードの枚数ごとに取得する必要があります。
リストIDを検索する方法と同じようにすると、for文の中でfor文を使用することになり、リーダブルじゃないですね!
それではどうするかというと、オブジェクト(連想配列)を利用します。
メンバー名をキー、メンバーIDを値とするオブジェクトは下記のようになります。
{うえはら:ID001、おおしろ:ID002、ひが:ID003、・・・}
オブジェクトからキーに対応する値を取り出すときは下記となります。
一度、オブジェクトに格納してしまえば、後は簡単にメンバーIDを検索できます。
メンバー名とメンバーIDをオブジェクトに格納するスクリプトは下記のようになります。
//メンバーID取得の為の準備
var sheetMember = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('member');
var members= sheetMember.getDataRange().getValues();
var objMembers = {};
for (var i=0 ; i<members.length ;i++) {
objMembers[members[i][0]] = members[i][1]
}
あとはobjMembers[“うえはら”]等とすれば、メンバーIDを呼び出すことができます。
Trelloのリストにカードを作成する
それでは、これまでの全体をまとめたスクリプトです。
function createCard() {
var scriptProperties = PropertiesService.getScriptProperties();
const Trello_KEY = scriptProperties.getProperty('Trello_KEY');
const Trello_TOKEN = scriptProperties.getProperty('Trello_TOKEN');
const URL = 'https://api.trello.com/1/cards/';
var sheetCard = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('card');
var lastRow = sheetCard.getLastRow();
var cardsInfo = sheetCard.getRange(5, 1, lastRow - 4, 3).getValues();
//リストID取得
var listName = sheetCard.getRange(2,2).getValue();
var sheetList =SpreadsheetApp.getActiveSpreadsheet().getSheetByName('list');
var lists = sheetList.getDataRange().getValues();
for (var i=0 ; i<lists.length ;i++) {
if (lists[i][0] === listName) {
var LIST_ID = lists[i][1];
}
}
//メンバーID取得の為の準備
var sheetMember = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('member');
var members= sheetMember.getDataRange().getValues();
var objMembers = {};
for (var i=0 ; i<members.length ;i++) {
objMembers[members[i][0]] = members[i][1]
}
for (var i=0 ; i<cardsInfo.length ;i++){
var MEMBER_ID = objMembers[cardsInfo[i][1]];
var payload =
{'key':Trello_KEY,
'token':Trello_TOKEN,
'idList' : LIST_ID,
'name' : cardsInfo[i][0],
'idMembers': MEMBER_ID,
'due': cardsInfo[i][2]};
var option =
{'method':'POST',
'payload':payload};
UrlFetchApp.fetch(URL,option);
}
}
31行がメンバーIDを取り出しているところです。
37行で直接指定してもかまいませんが、今回はわかりやすいように、一度、MEMBER_IDに取り出しています。
カードを作成する部分は、シリーズの1回目で開設していますので、ご覧下さい。

はい、これで、スクリプトは完成です!
しかしこのままだと、関数を実行するのに、いちいちスクリプトエディタを開く必要があります。
面倒ですよね。
そこで、簡単に関数を実行できる方法をお伝えしますので、もう少々お付き合い下さい。
スプレッドシートのメニューに項目追加
スプレッドシートのメニューの部分ですが、実は項目を追加できます!
この部分です。
ここに、上記の関数を実行する項目を追加すれば、スクリプトエディタを開かなくても実行できます。
項目を追加するスクリプトは下記となります。
function onOpen(e) {
var ui = SpreadsheetApp.getUi();
ui.createMenu('Trello')
.addItem('カード作成', 'createCard')
.addSeparator()
.addItem('ボード取得', 'getBoardInfo')
.addItem('リスト・メンバー取得', 'getMemberAndList')
.addToUi()
}
詳細については下記の記事をご覧下さい!

このスクリプトを追加して、保存したら、スプレッドシートを開きなおしてください。
このように追加されていると思います。
これで、スクリプトエディタを開かなくても、関数を実行できます!
ようやくツール完成です!
まとめ
今回はシリーズの最後として、「スプレッドシートとGASでTrelloのリストにカードを作成するツール」についてまとめました。
メニューに関数を実行する項目を追加すれば、スクリプトエディタを開かなくても実行できて便利です。
今回は手動で実行するようにしていますが、毎週同じカードを作成するのであれば、トリガー設定して完全自動化もできます。
皆さんの環境に合わせて、カスタマイズして下さい。
それでは、最後までありがとうございました。
連載目次:スプレッドシートとGASでTrelloにカードを作成するツール
毎週、毎月Trelloに同じカードを作成している方必見です。 スプレッドシートとGoogle Apps Scriptを使用して、Trelloにカードを作成するツールを作成します。






