google formやslackワークフロー(有料プラン)、非常に便利ですよね。
ただ、申請を受ける側には必ずタスクが発生します。
そこで、今回はGASの中で扱うデータをそのままtrello カードとして投稿する方法を説明します。
アプローチとしては、GASからtrelloのAPIにリクエストを投げるという形です。
まずtrelloにユーザー登録の上、
予めサンプルとして「負債解消プロジェクト」というリストを登録しておいて下さい。
次に、APP-KEYをこちらから取得して下さい。
こちらのapp-keyは忘れないようにメモしておいて下さい。
今回は便宜上
abcd1234abcd1234abcd4321abcd1234abcd4321abcd1234abcd4321
とします。
その次にtokenです。
以下のURLの****の部分に先程のapp-keyを代入して下さい。
https://trello.com/1/authorize?key=********************************&expiration=never&response_type=token&scope=read,write,account
具体的にサンプルの値で代入するとこんな感じですね。
https://trello.com/1/authorize?key=abcd1234abcd1234abcd4321abcd1234abcd4321abcd1234abcd4321&expiration=never&response_type=token&scope=read,write,account
そうするとこのような画面が出ます
下にスクロールして「許可」を押してください。
そうすると、64文字のトークンが取得できます。こちらのキーとトークンは忘れないようにメモしておいてください。
最後にUserIDです。これは画面右上のアイコンから
()の中の文字列(今回の場合だと user12345678) を取得するだけですね。
GASでTrelloに登録するには、HTTPリクエストを送ります。
まずはボードの情報を取得してみましょう。
スクリプトエディタに、こちらを記載して実行しましょう。
GASが予め用意してくれているUrlFetchAppオブジェクトのfetchメソッドに、リクエストURLとオプションを記載することでリクエストを送ることができます。
function getBoard() {
var trelloKey = "XXXXXX";//32文字のkey
var trelloToken = "XXXXXX";//64文字のtoken
var userName = "user12345678";//user nameを入力してください
var url = 'https://trello.com/1/members/' + userName + '/boards?key=' + trelloKey + '&token=' + trelloToken + '&fields=name';
response = UrlFetchApp.fetch(url, {'method':'get'});
console.log(response);
}
▶(実行)して、メニューの表示をクリック、「ログ」を見ると、
こちらでBoard IDが取得できます。
次に、リストIDを取得します。先程「負債解消プロジェクト」と追加した部分ですね。
function getListId() {
var trelloKey = "XXXXXX";//keyを入力してください
var trelloToken = "XXXXXX";//tokenを入力してください
var userName = "user12345678";//ユーザ名を入力してください
var url = 'https://trello.com/1/members/' + userName + '/boards?key=' + trelloKey + '&token=' + trelloToken + '&fields=name';
res = UrlFetchApp.fetch(url, {'method':'get'});
console.log(res);
}res);
}
こちらも、▶(実行)して、メニューの表示をクリック、「ログ」を見ると、
こちらでList IDが取得できます。idBoardではないので注意して下さい。
function addList(){
var boardId = '*****************';//関数getBoardで取得したBoard ID
var url = 'https://api.trello.com/1/boards/' + boardId + '/lists/?key=' + trelloKey + '&token=' + trelloToken;
var options = {
'method' : 'post',
'muteHttpExceptions' : true,
'payload' : {
'name' : '作業中',//リストの名前
'pos' : 'top'
}
}
console.log(UrlFetchApp.fetch(url, options));
}
最後にカードです。
function getCardId() {
var trelloKey = "XXXXXX";//keyを入力してください
var trelloToken = "XXXXXX";//tokenを入力してください
var listId = "XXXX";//リストIDを入力してください
var url = "https://trello.com/1/lists/" + listId + "/cards?key=" + trelloKey + "&token=" + trelloToken + "&fields=name";
res = UrlFetchApp.fetch(url, {'method':'get'});
console.log(res);
}
最後に、カードの登録です。
function addCard(){
var listId = '*************';//前で取得したリストid
var options = 'https://api.trello.com/1/cards/?key=' + trelloKey + '&token=' + trelloToken;
var hoge = {
'method' : 'post',
'muteHttpExceptions' : true,
'payload' : {
'name' : 'Test',//タイトル
'desc' : 'タスク詳細',//内容
'due' : '',//締め切り
'idList' : listId,//リストid
'urlSource' : ''
}
}
console.log(UrlFetchApp.fetch( url, options ));
}
こちらでtrelloにイベント発火時にリアルタイムで登録ができるようになります。
転機の手間がなくなり、転記漏れも無くなりました。
ぜひ試してみて下さい!
参考文献
Google Apps ScriptでTrelloのリスト一覧とカード一覧を取得する
https://tonari-it.com/gas-get-trello-card-list/
TrelloのListにGasからCardを追加する
https://qiita.com/funise/items/202beba3e90e8af8c131