11
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

GMOアドマーケティングAdvent Calendar 2018

Day 7

後編:Zapierで同じことやってみた 〜チケットの連携をGASで一生懸命がんばったら外部ツールで一瞬でできた話〜

Last updated at Posted at 2018-12-06

前回までのあらすじ

前回は、BacklogからJIRAへの時間連携を Google Apps Script (GAS) とREST-APIを駆使して実現しました。
しかし、ある日俺は気づいてしまったわけです。

「あれ?これ似たようなこと連携ツールでできるんじゃね?」

なんか1年前調べたときは、ユーザIDの詰め替えとか、カスタムフィールドへのセットとか対応してなくて、泣く泣くGASで実装したわけです。
しかしこの業界で1年といえば、原始時代です(言い過ぎ)。再度調査してみましょう。。。

Zapierというツールがあった

Zapierというツールがありました。(https://zapier.com/)
automate.ioや、IFTTTなど様々な連携ツールがありますが、Zapierがテーブルマッピング機能などもっとも今回やりたいことに必要な機能が備わっていて、かつリーズナブルでした。
GASでがんばっちゃった俺、涙目ですね。では早速、涙を拭いて設定していきましょう。

やりたいこと

前提:Backlogに当日の作業時間が入力されていること

  1. Backlogから時間を取得する
  2. 対応するJIRAチケットを検索する(Backlogの課題キーをJIRAのカスタムフィールド「Backlog課題番号」に持っている前提)
  3. 検索にヒットしたら、対応するJIRAのチケットに時間を記録する
  4. 検索にヒットしない場合、(Backlogの課題キーをJIRAのカスタムフィールド「Backlog課題番号」にセットしてチケットを作成
    。。。もう完全に前回と一緒。

Zapierの設定

初期設定

ここまでは直感的なので、箇条書きにします。

  • Zapierのアカウントをつくる
  • Backlogのwebhookをうけとる(Backlogからチケット更新のときwebhookが発信されるようにBacklogを設定しておく)
  • JIRAとZaiperを連携する(Appsから実行)

Backlog-JIRA起票の連携(Zap)設定

Backlogのwebhookを受け取るように設定する

  1. この手順にしたがって、Backlogからチケット更新のときwebhookが発信されるようにBacklogを設定しておきます。

  2. 発信先のWebhookURLは、こちらの画面の「Add Trigger」から「Catch Hook」を設定して生成します。
    名称未設定2.png

  3. そしてそのURLをBacklogの設定画面から追加します。

スクリーンショット 2018-12-04 18.32.05.png

Zapierがwebhookを受け取ったら、JIRAのチケットを起票・更新するように設定する

webhookで受け取ったデータをJIRA用に読み替える

BacklogのユーザIDと、JIRAのユーザIDは異なるので、そのままJIRAを見に行ってもエラーになります。当然、JIRAのIDに変換してあげる必要があります。
前回 は、ProcessJIRA#get_jira_userid(issue) で、配列を使って変換してましたが、なんとZapierで簡単に設定できちゃいます。

ZapierでFormatterの設定

「Action」から、Utilituies -> Formatter と選択します。
スクリーンショット 2018-12-04 18.45.52.png

変換用のテーブルを用意

Transform:「Lookup Table」を選択
Lookup Key:受け取ったwebhookのどの項目を変換のインプットにするか設定します。ここではBacklogID(Content Asssignee Backlogid)を選びましょう。
Lookup Table:これが変換用の表です。左に変換前の値(Backlog user ID)、右に変換後の値(JIRA user ID)を設定しましょう。
スクリーンショット 2018-12-04 18.47.14.png

JIRAの起票設定

JIRAに起票するとき、webhookから受け取ったどの項目を連携するのか設定します。
スクリーンショット 2018-12-04 18.58.59.png

このとき「時間の記録」という項目は変換無しで渡しているので、Step1のwebhookから値を設定していますが、
担当者の部分は、Use a Custom Value->Step2で変換したあとの値を使っていることに注目してください。

その後は、Continueを押してZapを有効にすれば設定完了です。

まとめ

GASを使ったら、JIRA Rest APIの癖も相まって一週間以上かかったわけですが、Zapierを使ったら1時間でできてしまいました。
さらにZapierは外部のサーバーにあるため、社内FWの制約もうけずwebhookを受け取ることができます。
前回の方法だといちいちメンバーに連携ボタンを押してもらわなければいけなかったので、利便性大幅向上ですね。

現在は、Backlogで担当者が更新されたら、JIRA側の担当者も更新するZapを使って便利に運用しています。
英語版しかないので気が引けてしまいますが、使い方は直感的なのでそれほど苦労はなかったです。
工夫次第で様々な使い方が広がるZapierは一押しのサービスです!

実装開始する前に、楽に実現できる方法がないか、事前調査は抜かりなくやりましょう。。手段の目的化、ダメ、絶対。

11
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?