Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
70
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

Trello APIを利用してスクリプトからタスクを管理する

「Joel on Software」の著書のJoel氏が立ち上げたFog Creek社のタスク管理ツールtrello。

スクラムのかんばんを視覚的に再現しつつ、WEBインターフェースで快適に動作する優れたツールです。

「便利とは聞いたことあるけど、既存のプロジェクト管理ツールから移行するのが面倒。」

「物理的に時間的に既存のRedmineやBacklogのチケットをtrelloに移行するのが無理。」

そういう人達のために開発用APIが公開されているためそれを利用すればいっきに赤い管理ツールからの移行もできます。

公開されているのはREST APIなので基本はどの言語でも利用できますが今回はRubyからtrello APIを利用する方法を紹介します。

APIドキュメントは以下
https://trello.com/docs/

1. trelloのアカウントを取得

ここは説明不要なのでSKIP

2. trelloの開発者用のアカウントを取得

https://trello.com/1/appKey/generate
trelloにログインした状態でブラウザから上記のリンクに飛ぶとアプリケーションキーとシークレットトークンが発行される。

1.png

3. アプリケーショントークンを取得する

上記のURLにブラウザでアクセスすると期限付のアプリケーショントークンが発行される。
上記は1日だが30日にすることも可能。
その場合は「30day」でなく「30days」になるので注意

2.png

うまくいくとこんな画面になる。

30日期限の場合はこんな画面になる。

2s.png

「Allow」ボタンを押すとアプリケーショントークンが発行される。

3.png

今までの作業で手に入れた以下の3つのキーで今回はtrello APIを利用する(認証方式はいくつかある)
* application_key
* application_secret_key
* application_access_token

4 Ruby trelloモジュールのインストール

bundlerを入れてGemfileを書いてbundle install

Gemfile
source "https://rubygems.org"

gem "ruby-trello"

5 trello APIを利用してボードを作成する

create_board.rb
require 'trello'

include Trello
include Trello::Authorization

#認証用の共通ロジック開始
application_key = ""
application_secret = ""
application_token = ""

Trello::Authorization.const_set :AuthPolicy, OAuthPolicy
OAuthPolicy.consumer_credential = OAuthCredential.new application_key, application_secret
OAuthPolicy.token = OAuthCredential.new application_token, nil
me = Trello::Member.find("me")

#認証用の共通ロジック終わり


#ここから個別実装
if ARGV.length < 1
  puts "usage"
  puts "./create_board [board_name]"
  exit
end

board = Board.create(:name => ARGV[0]);

以下のコマンドで「trello api」というボードを作る

bundle exec ruby create_board.rb "trello api"

4.png

6 trello APIを利用してカードを作成する

create_board.rb
#認証ロジックは上記と一緒なので略

#ここから個別実装
if ARGV.length < 3
  puts "usage"
  puts "./create_card [board_name] [list_name] [card_name]"
  exit
end

target_board_name = ARGV[0]
target_list_name = ARGV[1]
card_name = ARGV[2]
board_id = nil
list_id = nil

me.boards.each do |board|
 if board.name == target_board_name
   board_id = board.id
   break
 end
end

puts board_id
unless board_id
  puts "ボードが見つかりません"
  exit
end

Board.find(board_id).lists.each do |list|
  if list.name == target_list_name
    list_id = list.id
    break
  end
end

puts list_id
unless list_id
  puts "リストが見つかりません"
  exit
end

Card.create(:name => card_name, :list_id => list_id)

trelloは大きいドメイン順に ボード->リスト->カード となるため
カードを作るためには「どのボードのどのリストにカードを作るか?」の指定が必要になる。

以下のコマンドで「trello apiボードのTo Doリストに"とりあえず書く"」カードを作成する

bundle exec ruby create_card.rb "trello api" "To Do" "とりあえず書く"

To Do リストに「とりあえず書く」カードが作成されました。

5.png

「scrum for trello」というブラウザの拡張機能をインストールするとタスクのポイントがふれます。
その場合はカード名の先頭にポイントの数字を入れてカッコでくくります。

bundle exec ruby create_card.rb "trello api" "To Do" "(8) むずいUT"

このコマンドをうつと
ポイントが8ふられたカードが作成されました。

6.png

上記のスクリプトを利用しカスタマイズすればCSVからいっきにカードを作ったり、赤や緑のプロジェクト管理ツールからの移行も楽にできるでしょう。

Let’s trello!

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
70
Help us understand the problem. What are the problem?