【GAS】BacklogのAPIで課題一覧取得をしてスプレッドシートに自動出力!

皆さんは業務にBacklogを利用されてますか?

Backlogで課題を作成し
社内のタスクなどを管理されている方も多いと思います!

これは手動で行うよりAPIを使う事で
かなり作業が自動化されます!

PCのローカル環境で課題データを扱いたい場合は

【実績】Backlogの情報をAPIで取得しExcelに出力

プログラムを使ってExcelに自動出力させたり

【PowerQuery】Backlogの課題一覧情報をAPIから取得してExcelに自動出力!

PowerQueryを使ってExcelに自動出力する方法があります!

では

Googleスプレッドシート上に
自動出力したい場合はどうでしょうか?

今回はGoogle Apps Script を使って
課題一覧取得を行いシートに自動出力させます!

Backlog課題一覧取得のメイン部分を作る

自分のAPIキーを発行する

ここは前回の記事にも書いてるので

を参考にしてみてください!

課題の更新日付を絞って取得しよう

今回は課題が更新された日付を絞って
課題一覧を取得して見みようと思います!

※課題一覧取得の公式リファレンスはコチラ。

APIキーだけ入力したスプシを準備

A1に発行したAPIキーを入力!
このスプシをマイドライブに保存しスプシIDを控えておこう!

本体のスプシを準備

A1開始日A2終了日A3APIキーのスプシIDを入力!

APIキーを外部に用意することで
本体を誰にでも共有して広く使えるかなと思いました!

メイン処理のコード

「1」はA1・A2から開始日・終了日を取得してます!

「2」はリファレンスに従って日付形式を変換してます!

「3」はA3のスプシIDから、APIキーを取得してます!
スプシIDによってスプシを特定し中身を読み込む!
GASは初めて触ったのでこんな感じかと勉強になりました!

「4」はAPIから課題一覧を取得してます!
getIssues の中身の実装は後述します。

「5」は取得した課題情報をスプシに出力する!
exportIssues の中身の実装は後述します。

Backlog課題一覧を取得・出力する部分を作る

APIから課題一覧を取得するコード

今回は適当に
プロジェクトID = 123456789
課題の状態 = 2 (処理中) と指定してます!

またこの部分の実装はコチラの記事をかなり参考にさせて頂きました!

初めてのGASだったんでかなり助かりました(泣)ありがとうございます!

「1」はAPIへのリクエストURLを生成してます!

「2」は実際にリクエストして課題一覧を取得しています!
そのあとインターバルを1秒入れております!

「3」は取得した課題情報を配列に追加しています!
追加は concat を使うんですね!

「4」は次のリクエストを行うかどうか決めます!
1~4は while文 でループさせているので
取得件数が100件だった場合は
offsetを100増やして次の100件を取得!
取得件数が100件未満だった場合は
falseでwhile処理を終了します!

そして最後、課題情報が格納された配列を返します!

スプレッドシートに課題一覧を出力するコード

「1」は課題一覧を貼付ける基準セルをC1に設定してます!

「2」は貼付け先のデータをクリアしています!
まずはシートの最終行を取得します。
5列分出力するので、C1から最終行5列分の範囲をクリアします。

「3」は課題一覧を1行ずつ5列分出力させています!
Jsonデータを直接見ると分かりやすいですが…
課題キー(issueKey)や担当者(summary)はキーを指定すれば値を取得できます。
種別(issueType)や担当者(assignee)はさらにnameキー指定すれば値を取得できます。

この参考ページ下部でJsonデータを確認できるので見てみましょう!

GASの三項演算子

カスタム項目はリストIDに1番目(customFields[1])
を指定して値を取得してます!
自分の欲しいインデックスを指定しましょう!

ここで三項演算子というものを覚えました!

(A ? B : C) → AがNullではないならB、NullならC みたいな!

なるほどなるほど。初めて見ました( ;∀;)

そしてここでgetCstmFieldsNameという
カスタム項目name要素の値を返す関数を実装しました!

このカスタム項目が
例えば曜日を選ぶ選択式の項目だった場合
・「月」「水」「金」 → 月,水,金
と返す関数を作りました!

どこか参考になる部分あれば幸いです!

かじむー

GAS初めて触ったけど面白かった♪皆さんもどんどん自動化して業務効率化していきましょう!