LANG SELRCT

コードを書く場所

2019年5月6日月曜日

JIRA APIのexpandで課題のフィールド情報を取得したい


クエリパラメータに expand を指定すると、デフォルトでは取得できない情報を response に含めることができるらしいので試してみました


今回試したexpandの例

  • var url = ISSUE_URL + key + '?expand=changelog&renderedFields';
    • パラメータに renderedFields を追加して課題のフィールド情報を取得する



この記事のコード.gsでやっていること

  • 変更履歴を取得して、changelogだけでは取得できない status と statusCategory をrenderedFieldsで取得する



各自の環境で変更する値
  • var ISSUE_URL のNAME
  • var keyのプロジェクトキー
  • var id のEmail
  • var api_tokenのAPI TOKEN


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

function get_issue_histories(){
  var response = get_issue();
  var jobj = JSON.parse(response);
  var histories = jobj["changelog"]["histories"][0];
  var created = histories["created"];
  var items = histories["items"][0];
  var field = items["field"];
  var from = items["fromString"];
  var to = items["toString"];
  var status = jobj['fields']['status']['name'];
  var statusCategory = jobj['fields']['status']['statusCategory']['name'];
  Logger.log([field, from, to, created, status, statusCategory]);
}

function get_issue() {
  var token = get_token();
  var key = "KEY-1";
  var options = {
    contentType: "application/json",
    headers: {"Authorization": " Basic " + token}
  };
  var url = ISSUE_URL + key + '?expand=changelog&renderedFields';
  var response = UrlFetchApp.fetch(url, options);
  console.log(response);
  return response;
}

function get_token() {
  var id = "Email";
  var api_token = "API TOKEN";
  var token = Utilities.base64Encode(id + ":" + api_token);
  return token;
}


関連記事

JIRA APIでissueの変更履歴を取得する
JIRAでAPIトークンを取得したい


参考

Expansion
https://developer.atlassian.com/cloud/jira/platform/rest/v3/#expansion