からくりがてんこ

IT関連情報、プログラミングに関する作業ログや備忘録を記載していきます。

Trello:外部データをインポートする(そう、rubyでね)

Trelloって使ってますか?
カンバン方式のタスク管理といったらいいのかな。
これが操作的に簡単で、視覚的に見易いってことでアジャイルプロジェクト管理に使ってみることになりました。
それに際し、今までExcelでタスク管理してたタスク一覧の移行をする必要がでてきました。
なので、それをITっぽく移動してやります。

ruby-trelloというgemを使ってやりました。

Trelloキー情報取得

API Key の取得
https://trello.com/app-key

Key:をメモする
Secret:をメモする

API Token の取得
https://trello.com/1/authorize?key=<APIKey>&name=&expiration=1day&response_type=token&scope=read,write

画面が開かれるのでAllowしましょう
Token:をメモする

Ruby実装&実行

Gemfile
#Gemfile
source "https://rubygems.org"
gem "ruby-trello"

$ bundle install

require 'trello'

include Trello
include Trello::Authorization

#認証用の共通ロジック開始
application_key = "<上記で取得したKey:>"
application_secret = "<上記で取得したSecret:>"
application_token = "<上記で取得したAPIToken>"

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 < 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)

"Board"の"Icebox"というリストに追加します。

$ bundle exec ruby create_card.rb "Borad" "Icebox" "テストカード"

これで無事"テストカード"というcardがBoradのIceboxリストに追加されました!

ソースを見るとlabelとかも":card_labels => 'red'"で設定できるみたいです。
https://github.com/jeremytregunna/ruby-trello

感謝サイト:
http://qiita.com/AKB428/items/a4a9ff2893affb20f99c