[Ruby] Backlogの全課題をCSVでエクスポートする

概要

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

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です