LANG SELRCT

Apps Script Reference  (Create: Create new Spreadsheet | Create new Apps Script

Sunday, February 16, 2020

JIRAで複数の課題の変更履歴をシートに書き出したい


JIRAで特定の課題の変更履歴をシートに書き出したい
では1つの課題の履歴を取得して書き出しました。

今回は複数の課題を取得して書き出してくてやってみました。
課題を判別できるよう、A列にkey列を追加しています。



コード.gs
var ISSUE_URL = 'https://SITENAME.atlassian.net/rest/api/2/issue/';
var ss_url = "https://docs.google.com/spreadsheets/d/SPREADSHEET_ID/edit#gid=0";

/************************************
これを実行する
************************************/
function getIssuesHistories() {
  var keys = ["KT-12", "KT-13", "KT-14"];
  var arrays = [];
  for(var i = 0; i < keys.length; i++) {
    var key = keys[i];
    getIssueHistories(key);
  }
}

/************************************
受け取った課題keyをgetHistoriesに渡して結果をシートに書き込む
************************************/
function getIssueHistories(key){
  var response = getHistories(key);
  var jobj = JSON.parse(response);
  var histories = jobj["changelog"]["histories"];
  var arrays = [];
  for(var i = 0; i < histories.length; i++) {
    var history = histories[i];
    var created = returnFormatDate(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"];
      arrays.push([key, field, from, to, created]);
    }
  }
  setValuesToSheet(arrays);
}

/************************************
履歴を取得して返す
************************************/
function getHistories(key) {
  var options = {
    contentType: "application/json",
    headers: {"Authorization": " Basic " + getProp("token")}
  };
  var url = ISSUE_URL + key + '?expand=changelog';
  var response = UrlFetchApp.fetch(url, options);
  return response;
}


/************************************
シートに書き込む
************************************/
function setValuesToSheet(arrays){
  var sheet = SpreadsheetApp.openByUrl(ss_url).getSheets()[0];
  var last_row = sheet.getLastRow();
  var start_row = last_row + 1;
  var start_col = 1;
  var num_rows = arrays.length;
  var num_cols = arrays[0].length;
  var range = sheet.getRange(start_row, start_col, num_rows, num_cols);
  range.setValues(arrays);
}


/************************************
日付をフォーマットして返す
************************************/
function returnFormatDate(date) {
  return Utilities.formatDate(new Date(date), 'Asia/Tokyo', 'yyyy/MM/dd/HH:mm:ss');
}


/************************************
受け取ったkeyの値をスクリプトのプロパティから返す
************************************/
function getProp(key) {
  return PropertiesService.getScriptProperties().getProperty(key);
}



関連記事

JIRAで特定の課題の変更履歴をシートに書き出したい

Latest post

スプレッドシートA列にある複数のテキストをスライドに追加したい(Google Apps Script)

今回Google Apps Scriptでやりたいこと GoogleスプレッドシートA列にある複数の値を取得して Googleスライドに渡して 図形オブジェクトのテキストとして追加したい ① スプレッドシートのA列に値を入れておく ② Code.gsのinsertNewShape...