GASでtrelloのcardを自動投稿するスクリプト


google formやslackワークフロー(有料プラン)、非常に便利ですよね。

ただ、申請を受ける側には必ずタスクが発生します。
そこで、今回はGASの中で扱うデータをそのままtrello カードとして投稿する方法を説明します。

アプローチとしては、GASからtrelloのAPIにリクエストを投げるという形です。

まずtrelloにユーザー登録の上、
予めサンプルとして「負債解消プロジェクト」というリストを登録しておいて下さい。

次に、APP-KEYをこちらから取得して下さい。

https://trello.com/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`


そうするとこのような画面が出ます

<img width="313" alt="Screen Shot 2020-05-23 at 2.43.20.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135287/c0ef8981-e428-37e6-668b-b9b8695db00f.png">

下にスクロールして「許可」を押してください。

そうすると、64文字のトークンが取得できます。こちらのキーとトークンは忘れないようにメモしておいてください。


最後にUserIDです。これは画面右上のアイコンから
()の中の文字列（今回の場合だと `user12345678`） を取得するだけですね。

<img width="328" alt="Screen Shot 2020-05-23 at 2.48.23.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135287/c2519665-93a7-6891-f949-840065671fe9.png">


GASでTrelloに登録するには、HTTPリクエストを送ります。
まずはボードの情報を取得してみましょう。

スクリプトエディタに、こちらを記載して実行しましょう。
GASが予め用意してくれているUrlFetchAppオブジェクトのfetchメソッドに、リクエストURLとオプションを記載することでリクエストを送ることができます。

```JavaScript
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が取得できます。

<img width="663" alt="Screen Shot 2020-05-23 at 3.26.31.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135287/ebd21dc3-4d42-d67f-bc4e-5f29332b4d04.png">


次に、リストIDを取得します。先程「負債解消プロジェクト」と追加した部分ですね。


```JavaScript
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ではないので注意して下さい。

<img width="653" alt="Screen Shot 2020-05-23 at 3.57.16.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/135287/06720a68-ce9d-227f-b6aa-ec7c5dd654f1.png">


```JavaScript
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));
 }

```



最後にカードです。

```JavaScript

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);
}


```






最後に、カードの登録です。


```JavaScript
 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