前置き
行事の準備など、複数の工程からなる作業はTrelloのようなタスク管理ツールで把握するのが便利です。Trelloをスクリプトから操作すれば、より一層便利になるでしょう
事前調査
先行事例は山ほどあるはずなので、とりあえず適当なキーワードで検索します。
Trello APIを利用してスクリプトからタスクを管理する
ruby-trello gem で API を利用して Trello を操作する
簡単に見つかりましたね。ruby-trello一本でいけそうです。
OAuth認証
APIを利用するにあたって、認証が必要なのは言うまでもありません。ruby-trelloでは、三種類の認証方式が用意されていますが、今回は2-legged OAuth authorizationを使います。必要な情報は開発者向けAPIキー、秘密、トークンの3つ。うち、全社2つは開発者向けAPIキーで手に入ります。トークンは、次のようなフォーマットのURLで手に入ります。
しかし、これでは使いにくいですね。'ruby-trello'gemには、この書式のページをデフォルトのブラウザで開くためのTrello.open_authorization_urlメソッドが準備されています。トークンが設定されていない場合は、ブラウザに認可ページを表示させ、トークンをコンソールに入力するようにスクリプトを組めば良いですね。ただし、この手法はlaunchygemを必要とします。
動作環境の準備
C:\Sites>mkdir trello
C:\Sites>cd trello
source 'https://rubygems.org'
gem 'ruby-trello'
gem 'launchy'
C:\Sites\trello>bundle install
C:\Sites\trello>mkdir config
今回は個人のwindows上で実行するコンソールアプリなので、トークンをconfig以下にyamlで保存する予定です。適切な鍵の管理方法を採用してください。
Rubyスクリプト
出来上がったのが以下のスクリプトです。実行するとボードを作成します。
ハマリポイントもないと思います。せいぜい、トークンをコピペする時に改行コードなどを拾わないようってことと、同じ名前のボードがあると上書きされちゃうくらい。
ドキュメントの2-legged OAuth authorizationの例では、oauth_token_secretを設定してますが、なくてもいいですね。
require 'yaml'
require 'trello'
dir_path = File.dirname(__FILE__)
yaml_file = dir_path + '/config/trello_api.yml'
def make_yaml yaml_file
Trello.open_public_key_url
puts 'ブラウザに表示されるキーを入力してenterを押してください'
puts 'key:'
key = gets.gsub(/\n/, '').gsub(/\s/, '')
puts 'ブラウザに表示される秘密を入力してenterを押してください'
puts 'secret:'
secret = gets.gsub(/\n/, '').gsub(/\s/, '')
Trello.open_authorization_url name: 'RubyExample',key: key, expiration: '30days'
puts 'ブラウザに表示されるページでAPIの利用を許可してください'
puts '応答ページに表示されるtokenを入力してenterを押してください'
puts 'token:'
token = gets.gsub(/\n/, '').gsub(/\s/, '')
config = {
consumer_key: key,
consumer_secret: secret,
oauth_token: token
}
File.open(yaml_file, 'w') {|f| f.write config.to_yaml }
end
make_yaml(yaml_file) unless File.exist?(yaml_file)
api_config = YAML.load_file(yaml_file)
Trello.configure do |config|
config.consumer_key = api_config[:consumer_key]
config.consumer_secret = api_config[:consumer_secret]
config.oauth_token = api_config[:oauth_token]
end
Trello::Board.create(name: 'Ruby Example', description: "Hello, world")
実行するとこんな感じです。
C:\Sites\trello>bundle exec ruby trello.rb
文献
もっといろいろやりたい場合は次を参照