🚀

Trello APIでカードを作成

2024/04/27に公開

Trelloを普段使用していますが、タスク用のカードの登録をTrelloまで飛ばずに、特定のリストにすぐに登録したいを思い、Trello APIを使って、作業を簡略化しました。

Trello APIのKeyとTokenを取得

Trello APIを使用するために、APIキーとTokenを取得します。
APIキーを取得するために、公式サイトにログインしておく必要があります。
https://trello.com/home

APIキー取得

こちらから、APIキーを取得してください。
https://trello.com/app-key
以下のようにAPIキーを取得できます。

事前にログインしていないと以下のようなページが表示されます。

Torken取得

開発者向きAPIキーの画面の「トークン」をクリックしてください。

以下のページが表示されるので、「許可」をクリックしてください。

以下のページになり、赤枠にTokenが表示されています。

APIを使用してカードを作成

APIを使用してカードを作成します。
必要なIDは以下のとおりです。

  • APIキー
  • Token
  • 追加したいリストのID

以下の順で説明していきます。

  1. カード作成のコード(今回のゴール)
  2. APIの使い方の説明
  3. リストIDの取得方法

今回のゴール(API実行)

最終的には以下のようにするとカードを作成することができます。
今回はカードの名前、説明欄、

curl -X POST "https://api.trello.com/1/cards?key={取得したAPIキー}&token={取得したToken}&idList={追加したいリストのID}&name=test&desc=explation&due=2022-04-05"
import requests
import json

KEY = {取得したAPIキー}
TOKEN = {取得したToken}
LIST_ID_DOING = {追加したいリストのID}

def create_card(cardname:str,desc:str,due:str):
   url = 'https://api.trello.com/1/cards?key=' + KEY + '&token=' + \
      TOKEN + '&idList=' + LIST_ID_DOING + '&name=' + cardname + '&desc=' + desc + '&due=' + due

   response = requests.request(
      "POST",
      url
   )
   print(json.dumps(json.loads(response.text), sort_keys=True, indent=4, separators=(",", ": ")))

if __name__ == '__main__':
   create_card(u'TrelloAPIについて書く',u'構成検討すること。','2022-04-03')

実行するとTrelloにカードが追加されます。

使用するTrelloAPIの説明

先ほどのPythonのコードからTrelloAPIについて説明します。

   url = 'https://api.trello.com/1/cards?key=' + KEY + '&token=' + \
      TOKEN + '&idList=' + LIST_ID_DOING + '&name=' + cardname + '&desc=' + desc + '&due=' + due

公式サイトにTrelloのAPIの説明があります。
公式サイトを参考にコマンドを作成します。

「POST /1/cards」がAPIになります。

https://api.trello.com」の後ろに対象のAPI「/1/cards」をくっつけることによりURLを作成します。

指定できるパラメータを見ると「idList」が必要であることがわかります。
idListはカードを追加するリストのIDのことです。

各パラメータの意味は以下の通りです。

パラメータ名 説明
key 取得したAPIキー
token 取得したToken
idList 追加したいリストのID
name カードの名前
desc カードの説明欄
due 日にち (yyyy-mm-day形式)

ListIDの取得

ここでは、追加したいリストIDの特定方法について説明します。
以下の手順でListIDを取得します。

  1. 追加したいリストが所属するボードIDを特定
  2. ボードに所属するリストの一覧を取得し、カードを追加したいリストIDを特定する

ボードIDの特定

以下のコードでボードIDを取得することができます。

import requests
import json

KEY = {取得したAPIキー}
TOKEN = {取得したToken}

url = 'https://trello.com/1/members/me/boards?key=' + KEY + '&token=' + TOKEN + '&fields=name'

response = requests.request(
   "GET",
   url)

print(json.dumps(json.loads(response.text), sort_keys=True, indent=4, separators=(",", ": ")))

実行すると以下のような結果が得られます。

「name」はボードの名前、「id」がボードIDとなります。
これで、追加したいボードが特定できました。

[
    {
        "id": "xxxx",
        "name": "Board1"
    },
    {
        "id": "xxxxxxxx",
        "name": "Board2"
    }
]

カードを追加するリストIDの特定

ボードIDが取得できたので、次にリストIDを特定します。

import requests
import json

KEY = {取得したAPIキー}
TOKEN = {取得したToken}
LIST_ID_DOING = {追加したいリストのID}

url = 'https://trello.com/1/boards/LIST_ID_DOING/lists?key=' + KEY + '&token=' + TOKEN

response = requests.request(
   "GET",
   url)

print(json.dumps(json.loads(response.text), sort_keys=True, indent=4, separators=(",", ": ")))

実行すると以下の結果が得られます。
「id」がカードを追加したいリストIDになります。
「name」はリストに付けている名前ですが、文字が日本語だと文字コードが表示されます。

{
        "closed": false,
        "id": "XXXXX",
        "idBoard": "{追加したいリストのID}",
        "name": "\uXXXX\uXXXX",
        "pos": 102911,
        "softLimit": null,
        "subscribed": false
    },
    {
        "closed": false,
        "id": "xxxxxxxxxxxxxxxxxxx",
        "idBoard": "{追加したいリストのID}",
        "name": "TEST",
        "pos": 105215,
        "softLimit": null,
        "subscribed": false
    },
...

Discussion