LANG SELRCT

コードを書く場所についてはこちら

2018年6月6日水曜日

JIRAのWebhookを利用してリアルタイムで更新をキャッチする


JIRA上の右上の歯車 > JIRA管理 > システム > 左側のメニューの「詳細」 > Webフック > Webフックの作成
から新規Webhookを作成できる
Webhookの管理(公式のリファレンス)

設定する項目は主に以下の4箇所

  • 名前
    • Webhookに名前をつけられる
  • URL
    • Google Apps ScriptでWebアプリを作成して、そのURLをこのWebhookのURL欄に入れる
  • 説明
    • Webhookの説明を書ける
  • イベント
    • JQLで対象のプロジェクトなどを指定
    • 作成、更新、削除など受け取りたい通知設定にチェックを入れて「作成」する



WebhookのURLに設定するWebアプリのコード例


e.postData.contentsでJSONを受け取って
内容をGoogleドライブに書き出してみるコード
(コード内のFOLDER_IDを任意のフォルダIDに設定)

コード.gs
function doPost(e) {
  var json = e.postData.contents;
  create_file(json);
}

function create_file(json) {
  var content_type = "application/json";
  var file_name = "JIRA_webhook_test";
  var blob = Utilities.newBlob("", content_type, file_name);
  var file = blob.setDataFromString(json, "UTF-8");
  var folder = DriveApp.getFolderById("FOLDER_ID");
  folder.createFile(file);
}

スクリプトエディタの上部メニューの「公開」 > 「ウェブアプリケーションとして導入」 > 新規作成で変更の内容を書いて > 次のユーザーとしてアプリケーションを実行: で「自分」を選択 > アプリケーションにアクセスできるユーザー: で「全員(匿名ユーザを含む)」を選択 > 「導入」> 現在のウェブ アプリケーションの URL:の欄のURLがこのWebアプリのURL


ISSUE_KEYを取得してみる



  •   var data = JSON.parse(json)
  •   var key = data["issue"]["key"]

でISSUE_KEYを取得してGoogleドライブに書き出してみる

コード.gs
function doPost(e) {
  var json = e.postData.contents;
  var data = JSON.parse(json);
  var key = data["issue"]["key"];
  create_file(JSON.stringify(array));
}

function create_file(json) {
  var content_type = "application/json";
  var file_name = "JIRA_webhook_test";
  var blob = Utilities.newBlob("", content_type, file_name);
  var file = blob.setDataFromString(json, "UTF-8");
  var folder = DriveApp.getFolderById("FOLDER_ID");
  folder.createFile(file);
}