LANG SELRCT

コードを書く場所

2019年9月8日日曜日

JIRA APIでissueの変更履歴を取得する2


以前書いた
JIRA APIでissueの変更履歴を取得する

ではhistoriesの先頭でitemsの先頭のみを取得しましたが
今回はそれぞれ複数ある場合のコードを書来ました。


事前準備
  • スクリプトプロパティにtokenという名前でbasic認証用の文字列を入れておきます
  • ISSUE_URLのSITENAMEは各自の設定によります
  • myFunctionのkeyは対象の課題キーを入れます



コード.gs
var ISSUE_URL = 'https://SITENAME.atlassian.net/rest/api/2/issue/';

function myFunction() {
  var key = "KEY-1";
  var histories = get_issue_histories(key);
  var arrays = [];
  for(var i = 0; i < histories.length; i++) {
    var history = histories[i];
    var created = format_date(history["created"]);
    var items = history["items"];
    for(var j = 0; j < items.length; j++) {
      var item = items[j];
      var field = item["field"];
      var from = item["fromString"];
      var to = item["toString"];
      Logger.log([created, field, from, to]);
    }
  }
  Logger.log(arrays);
}

function get_issue_histories(key) {
  var response = get_issue(key);
  var jobj = JSON.parse(response);
  var histories = jobj["changelog"]["histories"];
  return histories;
}

function get_issue(key) {
  var token = getProp("token");
  var options = {
    contentType: "application/json",
    headers: {"Authorization": " Basic " + token}
  };
  var url = ISSUE_URL + key + '?expand=changelog';
  var response = UrlFetchApp.fetch(url, options);
  return response;
}


function getProp(key) {
  return PropertiesService.getScriptProperties().getProperty(key);
}


function format_date(date) {
  return Utilities.formatDate(new Date(date), "asia/tokyo", "yyyy-MM-dd HH:mm")
}



実行結果

事前準備完了後にmyFunctionを実行すると
対象の課題について変更した日時とfieldとfromとtoがログに出ます。


関連記事

JIRA APIでissueの変更履歴を取得する