backlog APIで完了日を取得する方法

API, backlog

backlogには完了日カラムが存在しない

backlogの課題(Redmineで言うチケット)の完了日を元にチーム内の工数を集計しているのですが、backlogでは完了日のカラムはありませんので、APIで取得しています。

APIで取得することにした理由は以下となります。

  • 「ステータス = “完了”」となっている課題の更新日であれば、backlogをcsvでエクスポートしてフィルタすれば簡単に取得可能ですが、ステータスを完了へ変更した後に、課題のカテゴリを変更したりコメントしたりすると、更新日がアップデートされてしまい、完了ステータスへ変更した日とずれてしまう。
  • カスタム属性で完了日カラムを追加しても良いのですが、カラムが多いと運用上の工数が大きくなる。

完了ステータスへ変更した日をAPIで覗いてみる

ステータスを変更した際のログはbacklogのコメントに残りますので、コメント情報をAPIで取得します。

出力結果(抜粋)

取得したい値は、以下の条件の時の”updated”です。

  • “field”が”status”
  • “newValue”が”完了”

階層を合わせてstatusとupdatedを取得

“field”と”updated”は階層が異なるので、階層を合わせてあげます。
合わせて、select文を利用して”field”が”status”のもののみ出力します。

出力結果

無事に”updated”と”status”の階層が合いました。
なお、上記の例は、課題ステータスを「完了」→「処理中」→「完了」にした場合の例となります。

完了ステータスへ変更した日を取得

if文を利用して”status”が”完了”の時の”updated”を出力します。

出力結果

無事に”updated”が出力できました。

最後に、最も直近の”updated”のみに絞ります。
ここだけjqコマンドで加工できなかったので、Linuxコマンド(Bash)で処理しました。

出力結果

※jqコマンドだけでも書けます。

この記事を書いた人

藤川大
藤川大

前職ではLinuxを中心とした商用インフラ、今はWindowsを中心とした社内インフラの設計/構築/運用から、社員の業務端末の選定/導入など、社内のIT全般を担当しています。最近は働き方改革に興味があります。

API, backlog