こんにちは、サーバーサイドエンジニアのがんちゃんです。

現在新卒入社2年目(5期生)で、PHP(Laravel)、Vue.jsを中心に色々な言語を駆使しながら、AWSとも戯れつつ日々勉強しております。

今日はバックログ(backlog)を便利にスプレッドシートで管理できるようなGASを開発したので紹介していきます。

 

完成品

これはあるバックログのプロジェクトの課題一覧です。課題の各種情報が表示されています。

モザイクのため分かりづらいですが、バックログ上の複数プロジェクトが対応したシートに分かれていて閲覧可能です。

バックログの全PJをスプレッドシートに転記した完成品

 

対象

・GASを触ったことがある、何かしらAPIを叩いて表示ができる

・バックログを使っている

 

背景

bravesoftでは、プロジェクトの品質を高めるために、バックログを導入しタスク管理を行なっています。

しかし、複数プロジェクトを横断して統計的に把握することは現状ではできません。

ということで、マスターデータを作って誰でも好きなように活用できるようにできないかという要望が上がりました。

 

要件

・バックログ全プロジェクトごとにシートを作成、さらに一定時間おきに更新される。

・新しいプロジェクトが増えたら自動追加される。

 

初期設定

まずバックログAPIの初期設定を行なっていきます。

space_idはバックログに普段アクセスする際のサードレベルドメインです。(https://bravesoft.backlog.jp/なら’bravesoft’の部分)

api_keyは、個人設定のAPIという項目から取得できます。

自分がアクセスできるPJの分しか取れないので、用途に応じてマスターアカウントのようなものを作ってもいいかもしれません。

sheet_idは下記のようなスプレッドシートのURLのhogeの部分です。

https://docs.google.com/spreadsheets/d/hoge/edit#gid=123

 

プロジェクト一覧の取得

バックログのプロジェクト一覧のイメージ

 

次にバックログのPJ一覧をとってきます。これがメインの関数になります。1時間に1回更新とかであればこのメソッドをトリガーで呼びます。

apiは先ほどのspace_id,api_keyを使って作成します。もし何かエラーが出た場合はまずここを疑ってください。

pj_listにPJのID、名前などが入ってきます。それを利用してシートを作成、課題一覧を転記します。

 

ヘッダーを取得、挿入

まず、バックログAPIの課題一覧は負荷軽減のため100件ずつしか取れません。なのでオフセットします。

最初はoffset = 1で1件目から取得します。

insertOrSelectSheetでシートを追加or対象のシートを決定します。このメソッドについては最後に話します。

titleは後で順番を変えたり、他の要素を追加したいときのために配列にしておくと便利です。

for文で全てシートに転記します。

 

 

whileで課題一覧を挿入

apiについて色々とありますが、詳しくは課題一覧の取得 | Backlog Developer API | Nulab をご覧ください。

課題をissue_listに格納し、for文を回します。

++jとしているので、順番を容易に入れ替えられます。

最後に、100件取れたときは、もう一度ループさせます。

このときスリープを入れてあげないと、バックログAPIのレート制限に引っかかって処理が止まってしまいます。

 

細かいメソッド

細かい2つのメソッドを紹介します。

formatDateはその名の通り、バックログから渡ってくるISO形式日付型をGASの日付型に変換します。

insertOrSelectSheetはシートがあればそのシートを、なければ追加したシートを返します。

 

最後に

コード全文を載せておきます。何かのお役に立てれば幸いです。

 

あとがき

Googleスプレッドシートに上記のようなデータを作成できると、活用の幅が広がります。

例えば、バックログ上のプロジェクトを横断して

・誰が何タスク処理中を抱えてしまっているのか

・週次でタスク完了数が多かったのは誰なのか

・課題追加数が多いのは誰なのか

などを把握できます!

 

お知らせ

ここまでお読みいただきありがとうございます!

bravesoftでは新卒社員を募集しています。まずはインターンシップ からでもOKなので是非ご連絡ください!

場合によってはリモート勤務も可能です。

インターンシップで職業経験を積んで新卒でbravesoftでそのまま働きませんか?

Follow me!