概要
Backlog APIをRubyで利用し、特定のスペース上にある全ての課題についてCSV形式でエクスポートする。
本記事ではエクスポートする項目は簡略化して、課題キーとタイトルのみにするが、同様の方法で一通りの情報は取得できる。
前提
要素 | バージョン |
---|---|
debian | 8.6 |
ruby | 2.2.2 |
backlog_kit | 0.15.0 |
APIキーの取得
BacklogのAPIは、対象のスペースにログイン後、個人設定→APIで、以下のように取得することができる。
以下はもちろんダミー。
本記事はAPIキー及びスペース名を以下のように環境変数に入れておくことでAPIを利用できるようにする
export BACKLOGAPI="hogehogehogehogehogehogehogehogehogehogehogehoge" export BACKLOG_SPACE="devs"
gemライブラリの導入
今回は、Backlog APIをRubyから簡易的に利用するためのgemである、backlog_kitを利用する。
gem install backlog_kit
あるいはGemfileに以下のように記述してbundle installする。
gem 'backlog_kit'
ソースコード
短いのでまとめて。
require 'backlog_kit' require 'csv' # 環境変数からAPIキーとスペースIDを取得 API_KEY = ENV['BACKLOGAPI'] SPACE = ENV['BACKLOG_SPACE'] # BacklogAPIの利用準備 backlog = BacklogKit::Client.new(space_id: SPACE, api_key: API_KEY) # 全ての課題情報を取得するまで繰り返し課題一覧APIを呼び出す offset = 0 while true # 課題取得APIは1回で100件までしか取得できないので、オフセットを指定して繰り返し呼び出す # 取得した課題一覧から、課題キー(issueKey)と、タイトル(summary)を抜き出す issues = backlog.get_issues(count: 100, offset: offset).body.map {|i| [i.issueKey, i.summary]} # 課題を全て取得し終えていたら終了 break if issues.empty? # 取得した課題をCSV形式で標準出力 issues.each {|i| puts i.to_csv} # 取得したデータ件数分オフセットを調整 offset += issues.length # お作法 sleep 1 end
実行結果
前述のスクリプトを実行すると、CSV形式で、全課題の課題キーとタイトルが取得できる。
ちなみに対象は私のプライベートなBacklogで、日常のタスクを管理してる。
$ bundle exec ruby main.rb DEV-355,Reactでの改行について記事を書く DEV-354,Backlogの全課題エクスポートを行うツールについて DEV-353,[えきぞちっくす] OnsenUIを試す DEV-352,Vueコンポーネントのドキュメント一読しておく DEV-351,高校数学スケジュールを2018年2月までに終える DEV-350,[えきぞちっくす] 全体の画面イメージとか作る DEV-349,[えきぞちっくす] 開発プランを建てる DEV-348,モヒカンSlackに入る DEV-347,[えきぞちっくす]DB設計 (以下略)
ファイルにリダイレクトすれば、CSV形式でExcelなどで確認することができる。
$ bundle exec ruby main.rb > issues.csv