Help us understand the problem. What is going on with this article?

TrelloにJaveからAPIを使ってカードの起票や取得をしてみる

みんな大好きのタスク管理ツールTrelloは、ユーザインタフェースが使いやすく、見てすぐ使いこなせます。

そのTrelloと自分の作っているサービスを連携するためにTrello APIを簡単に使えないかを調べたのでまとめてみました。

1.準備

APIを発行するには、IDやパスワードの代わりになるキーとトークンの取得が必要です。
これらをまず取得します。

Trelloにログインします。

https://trello.com/app-key

にアクセスします。すると、キーが表示されますので、これをメモします。

01.png

その後、「トークン」をクリックして、下記のような画面が表示されるので、「許可」をクリックします。

02.png

下記のようにトークンが表示されますので、これをメモっておきます。

03.png

このキーとトークンを使い、APIを発行してTrelloにカード起票などを行ないます。

2.Javaのラッパーのライブラリを利用する

Githubにtrello-java-wrapperというライブラリがあるので、そちらを利用します。

GithubのページにはGradleで記載されていますが、Mavenにもありますので、こちらを利用します。

<!-- https://mvnrepository.com/artifact/com.taskadapter/trello-java-wrapper -->
<dependency>
    <groupId>com.taskadapter</groupId>
    <artifactId>trello-java-wrapper</artifactId>
    <version>0.13</version>
</dependency>

まず、TrelloImplのインスタンスを作成します。この例では、Apache Httpライブラリに基づいたhttpクライアントを使用しています。

Trello trelloApi = new TrelloImpl(trelloKey, trelloAccessToken, new ApacheHttpClient());
  • trelloKey:Trelloで認証されたユーザーのoauthトークン。
  • trelloAccessToken:Trelloで認証されたユーザーのoauthトークン。
  • ApacheHttpClient:サポートされているhttpクライアントの1つ。 ※com.julienvey.trello.impl.httpのパッケージを参照してください。

ちなみに以下のようなエラーが発生する場合は、

Exception in thread "main" java.lang.NoClassDefFoundError: com/fasterxml/jackson/core/exc/InputCoercionException

Mavenで「com.fasterxml.jackson.core」を追加すると直るかと思います。

<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.10.2</version>
</dependency>

3.ボードの一覧を取得する

まずは、ボードの一覧取得はこうなります。
メンバーIDの指定を"me"と記載すると自分自身のボードがすべて取得できます。

List <Board> boards = trelloApi.getMemberBoards("me", new Argument("fields", "name"));

パラメータに以下を指定しているのは、ボード名が取得できないので、指定する必要があります。

new Argument("fields", "name")

4.リストとカードの一覧を取得する

こちらがボード内のリストを取得する方法になります。

List <TList> lists = trelloApi.getBoardLists(boardId);
  • boardId:取得したボードIDを指定。

こちらがリスト内のカードを取得する方法になります。

List <Card> cards = trelloApi.getListCards(listId);
  • listId:取得したリストIDを指定。

ちなみにこんな感じでコーディングするとすべてのカードが取得できたりします。

List <Board> boards = trelloApi.getMemberBoards("me", new Argument("fields", "name"));
for (Board board : boards) {
    board.getName();
    board.getId();
    System.out.println(board.getId() + ":" + board.getName());
    List <TList> lists = trelloApi.getBoardLists(board.getId());
    for (TList list : lists) {
        System.out.println(list.getId() + ":" + list.getName());
        List <Card> cards = trelloApi.getListCards(list.getId());
        for (Card card : cards) {
            System.out.println(card.getId() + ":" + card.getName());
        }
    }
}

5.カードを起票する

カードを起票する場合はこのように記載します。

Card card = new Card();
card.setName("あいうえお");
card = trelloApi.createCard(listId, card); // 登録
card.addComment("コメントを記載");
card = card.update(); // 更新
card.delete(); // 削除
  • listId:取得したリストIDを指定。

新規でカードを登録する場合はcreateCardでカードを作成して、更新する場合はupdate、削除の場合はdeleteを指定します。

6.終わりに

trello-java-wrapperには、一通りのAPIの呼び出しに対応していますので、簡単にJavaからTrelloのAPIを呼び出すことができます。
もし、Trelloをお使いでしたら試してみてはいかがでしょうか。

以下、参考サイト
https://became-free.com/how-to-use-trello-api/
http://blog.serverworks.co.jp/tech/2016/05/16/trello-api/

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした