kdnakt blog

hello there.

TrelloのAPIを利用してチェックリストに大量のアイテムを追加する

f:id:kidani_a:20190403000353j:plain

目標を立てているみなさん、進捗出ていますか?

 

私はTrelloのチェックリストを使って進捗を把握しています。今回はチェックリストに大量の項目を追加する必要があったので、TrelloのAPIを利用してチェックリストを作成する方法をまとめました。

 

 

[事前準備]

準備1:カードを作成する

trello.com

Trelloにログインし、チェックリストを追加するためのカードを作成します。

 

カードを作成したら、カードをクリックします。すると、下の画像のようにURLがhttps://trello.com/c/(カードID)/(カード名)のようになります。

このカードIDをあとで利用するので、メモしておきます。

f:id:kidani_a:20190403004242p:plain

 

カードにはチェックリストを作成しておきます。

f:id:kidani_a:20190403010259p:plain

 

準備2:APIキーを取得する

次に、APIを利用するためのキーとトークンを取得します。

Trelloにログインしているブラウザで、https://trello.com/1/appKey/generateにアクセスすると、下のようにキーが表示されるので、こちらもメモしておきます。

f:id:kidani_a:20190403004955p:plain


また、上の画面の「手動でトークンを生成できます。」の「トークン」と書かれた部分をクリックすると、下のようにトークンが表示されるので、こちらもメモしておきます。

f:id:kidani_a:20190403005338p:plain

 

準備3:チェックリストのIDを取得する

チェックリストのIDを取得する方法はいくつかありますが、ここではTrelloの開発者サイトのサンドボックスを利用します。

 

下のURLにアクセスし、「Try It」ボタン左の人型アイコンをクリックし、先ほど準備2で取得したキーとトークンを入力します。

https://developers.trello.com/reference/#cardsidchecklists

 

f:id:kidani_a:20190403010648p:plain

 

同様に、PATH PARAMSのID欄に、準備1でメモしておいたカードIDを入力し、「Try It」ボタンをクリックします。

緑の丸と200 OKの文字列が表示されたら成功です。

f:id:kidani_a:20190403010931p:plain

 

右側のレスポンス欄に記録されているID(ここでは5ca...の文字列)がチェックリストのIDです。これをメモしておきます。
 

[チェックリストに複数項目を追加する]

APIを呼び出すためのシェルスクリプト(checklist.sh)と、追加するアイテムのデータ(data.txt)を同じディレクトリに用意します。

$ ls
checklist.sh	data.txt

 

checklist.sh

#!/bin/bash
DATA=`cat ./data.txt`
while read line
do
  curl --request POST \
    -d pos=bottom \
    -d checked=false \
    -d "key=$TRELLO_KEY" \
    -d "token=$TRELLO_TOKEN" \
    --data-urlencode "name=$line" \
    --url "https://api.trello.com/1/checklists/$TRELLO_CHECKLIST/checkItems"
done << FILE
$DATA
FILE

 

data.txt

ひとつめの項目
ふたつめの項目
みっつめの項目

 

実行する際は、以下のように準備でメモしておいた項目を環境変数に設定して実行します。(もちろん、シェルスクリプトを直接編集しても実行できます。) 

# 準備2でメモしたキーとトークンを設定する(ファイル直接編集の場合は実行不要)
$ export TRELLO_KEY=XXXXXX
$ export TRELLO_TOKEN=YYYYYY
# 準備3でメモしたチェックリストのIDを設定する(ファイル直接編集の場合は実行不要)
$ export TRELLO_CHECKLIST=ZZZZZZ
# シェルスクリプトを実行する
$ bash ./checklist.sh
{"idChecklist":"5ca38797ca69ad3a92394bc3","state":"incomplete","id":"5ca39215006f7925ce924e06","name":"ひとつめの項目","nameData":{"emoji":{}},"pos":65536,"limits":{}}{"idChecklist":"5ca38797ca69ad3a92394bc3","state":"incomplete","id":"5ca39215e4453410380b6f0f","name":"ふたつめの項目","nameData":{"emoji":{}},"pos":81920,"limits":{}}{"idChecklist":"5ca38797ca69ad3a92394bc3","state":"incomplete","id":"5ca39216234fab740c9ceb4d","name":"みっつめの項目","nameData":{"emoji":{}},"pos":98304,"limits":{}}

 

シェルスクリプトの実行後、ブラウザやアプリでチェックリストを確認すると、以下のように項目が追加されています。

f:id:kidani_a:20190403015416p:plain

 

[実例:Rustを学ぶ]

今回作成しようとしていたのは、プログラミング言語Rustを実例ベースで学べるチュートリアルのチェックリストです。目次の項目が180あるため、流石に手作業でコピペしてチェックリストを作成していくのは無理だな……と考え、Trello APIを利用したシェルスクリプトを作成しました。 

doc.rust-lang.org

 

実際に作成したチェックリストがこちら。長すぎて全体のスクリーンショットを撮れない……。

f:id:kidani_a:20190403020328p:plain

 

[まとめ]

チェックリスト作ったし、Rustやっていくぞ。