スプレッドシートからTrelloカードを作成。ーチェックリストつきー

# スプレッドシートからまとめてTrelloカードにチェックリストを作成したい



# 目次
[1.はじめに](#1-はじめに)
[2.実装](#2-実装)
[3.動作](#3-動作)
[4.終わりに](#4-終わりに)
[5.参考文献](#5-参考文献)


# 1. はじめに

### Trelloのカード作成が面倒！一発で作成できるツールが欲しい！
優秀なタスク管理ツールの1つに[__Trello__](https://trello.com/home)があります。


今回、Trelloカードの作成をGoogleスプレッドシートからまとめて行うことはできないかと調べたところ
[こちら](https://qiita.com/naoqoo2/items/956d3294e9da861c2975)の記事で[@naoqoo2](https://qiita.com/naoqoo2)さんがその方法を紹介されていました！

この方法では、カードの作成に伴いラベルの指定等も可能でしたが、チェックリストの作成はできなかったので、
今回スプレッドシートの情報からチェックリストを作成できるソースコードをGASで書いてみました。

# 2. 実装

実際のコードはこちらになります。
使い方としては、[@naoqoo2](https://qiita.com/naoqoo2)さんの[こちら](https://qiita.com/naoqoo2/items/956d3294e9da861c2975)の記事で紹介されていたコードに追加で2つの関数を作成しました。

```javascript:add_checklist
function add_checklist(sheet,row, card_id){
 //チェックリスト作成
var checklist_column_no = 3;

//カードID取得
  url_checklist = 'https://trello.com/1/cards/'+card_id+'/checklists?key='+api_key+'&token='+api_token

  var options = {
      'method' : 'post',
      'muteHttpExceptions' : true,
      'payload' : {
        'name'      : 'チェックリスト',
      }
      }

   var response = UrlFetchApp.fetch(url_checklist,options);
   var responceJson = JSON.parse(response.getContentText());
   //チェックリストのidを記録
   check_id = responceJson['id']

  //チェックアイテム作成
  listitems = sheet.getRange(row, checklist_column_no).getValue();
  items = fetchitem(listitems)

  url_item = 'https://trello.com/1/cards/'+card_id+'/checklist/'+check_id +'/checkitem?key='+api_key+'&token='+api_token
    for (var j = 0; j < items.length;j++){
    var options = {
      'method' : 'post',
      'muteHttpExceptions' : true,
      'payload' : {
        'name'      : items[j],
      }
      }

   var response = UrlFetchApp.fetch(url_item,options);

    }
}
```

```javascript:fetchitem
function fetchitem(a){
let splititem = a.split("\n");
return splititem;
}
```
TrelloのAPIを調べたところ、カード作成が可能なAPI __Create a new Card__ ではチェックリストを作成することは不可能のようでした。
（[TrelloのAPI一覧](https://developer.atlassian.com/cloud/trello/rest/api-group-cards/)）

ですが、他のAPIに
チェックリストを作成する __Create a Checklist__
チェックアイテムを作成する __Create Checkitem on Checklist__
がありましたので、今回はこれらのAPIを利用しました。

手順としては、

##### 1. Create a Checklist　でカードを作成


##### 2. Create a Checklist　で作成したカードにチェックリストを作成


##### 3. Create Checkitem on Checklist　で作成したチェックリストにチェックアイテムを作成

という流れになります。（1のカード作成は[参考記事]((https://qiita.com/naoqoo2/items/956d3294e9da861c2975))にて実装されていた部分です。）

***

実際にこれらの作成を組み込む際は、[参考記事](https://qiita.com/naoqoo2/items/956d3294e9da861c2975)であったソースコードのカード作成部分に以下のよう追加します。

```javascript:追加部分
//省略

 var response = UrlFetchApp.fetch(url, options);
    // 作成したカードのURLをセルに出力したい場合は下記コメントアウトはずしてよしなに。
     var response_data = JSON.parse(response.getContentText());
    // sheet.getRange(row, 3).setValue(response_data['shortUrl']);

    //ここからhayaball追加
    card_id = response_data['id']

    add_checklist(sheet,row,card_id);
  }
}

```

# 3. 動作


こちらのようにスプレッドシートを作成して2枚のTrelloカードを作成してみました!


<div align="center">
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2609423/d5f37c97-396e-90b2-81e8-8fdaa100d584.png" width="600">
</div>

<div align="center">
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2609423/16f3943b-e4bd-c800-93bd-9864fc5703db.png" width="600">
</div>

<div align="center">
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2609423/655f3b4e-6707-2f1f-8a50-992d5b782bc5.jpeg" width="600">
</div>

<div align="center">
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2609423/3c52803b-c7bd-8391-62cd-7e1393e52751.jpeg" width="600">
</div>



しっかりチェックリストを作成することができました。

# 4. 終わりに
 今回スプレッドシートからTrelloカードを作成すると同時にチェックリストを作成することができるようになりました。

TrelloのAPIにはその他色々な機能があったので、更に使いやすくスプレッドシートと連携できる余地がありそうです。

# 5. 参考文献
#### ・[スプレッドシートからTrelloにカード追加する（任意の行だけ選択可能）](https://qiita.com/naoqoo2/items/956d3294e9da861c2975)

#### ・[The Trello REST API](https://developer.atlassian.com/cloud/trello/rest/api-group-actions/)