3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

RubyでTrello APIを使う

Posted at

前置き

行事の準備など、複数の工程からなる作業は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
Gemfile
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を設定してますが、なくてもいいですね。

trello.rb
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

文献

もっといろいろやりたい場合は次を参照

Doc
trello api reference

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?