前編:GAS初心者がBacklog-JIRA連携してみた 〜チケットの連携をGASで一生懸命がんばったら外部ツールで一瞬でできた話〜

GMOアドマーケティングA.Yです。
このエントリーは、GMOアドマーケティング Advent Calendar 2018【12/6】 の記事を加筆修正したものです。

背景

社内ではBacklogとJIRAというふたつのチケット管理ツールを使っています。
Backlogはとても使いやすいチケット管理ツールですが、唯一の欠点は、時間管理機能が貧弱ということ・・・。
日毎の時間集計をすることができないんです。いつ、誰が何をしていたか、工数集計をすることができません。

かといって、いちいちふたつのチケット管理ツールを開いて、JIRAに時間を入力させるのもちょっとなぁ、と思って時間連携ツールを作ることにしました。

やりたいこと

前提:Backlogに当日の作業時間が入力されていること
1. Backlogから時間を取得する
2. 対応するJIRAチケットを検索する(Backlogの課題キーをJIRAのカスタムフィールド「Backlog課題番号」に持っている前提)
3. 検索にヒットしたら、対応するJIRAのチケットに時間を記録する
4. 検索にヒットしない場合、(Backlogの課題キーをJIRAのカスタムフィールド「Backlog課題番号」にセットしてチケットを作成

実装

それでは、GASで実装していきます。 **と記載されているところは、環境ごとに設定してください。

Main.gs

メインとなるクラス。ここで上記の「やりたいこと」に書いてある処理を順次呼んでいきます。

GetBacklog.gs

Backlogから課題を取得します。

ProcessJira.gs

JIRAをBacklog課題キーをつかって検索し、ない場合はJIRAのチケット作成、ある場合はBacklogに記入された時間をJIRAに連携します。

地味にハマったこと

  • JIRAのREST-APIはv2とv3があります。v3のほうはいまだベータ版であり、エラー・メッセージが間違っていたり、ざっくりしすぎていることがあります。僕の場合自分のリクエストがどう間違っているかわからずとてもハマりました。

  • JIRAのapiドキュメントはときどきリンクが間違っていて、v2のドキュメントを見ているはずが、v3のドキュメントにリンクされていたりします。注意してください。URLで見分けましょう。こちらはv2 https://developer.atlassian.com/cloud/jira/platform/rest/v2/

  • JIRAのapiドキュメントには、Exampleという項目がありrequestパラメータ例が書いてありますが、フォーマット定義から自動生成されています。そのままrequest投げても動きません。あくまでもイメージです(笑)

しかしこのときの僕は知りませんでした。あんなに楽な方法があったなんて。。。
次回に続く。