LANG SELRCT

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

2018年5月25日金曜日

JIRA APIでステータスをtransitionで更新する


JIRAのstatusをAPIで更新するにはtransitionでやるらしい
https://developer.atlassian.com/cloud/jira/platform/rest/#api-api-2-issue-issueIdOrKey-transitions-post

  1. transitoin idを確認する
    https://SITENAME.atlassian.net/rest/api/2/issue/ISSUE_KEY/?expand=transitions.fields
  2. transition idをPOSTで更新する



コード.gs
function get_jira_token() {
  var id = "LOGIN_EMAIL";
  var pw = "LOGIN_PASSWORD";
  var jira_token = Utilities.base64Encode(id + ":" + pw);
  return jira_token;
}

function get_base_url() {
  var base_url = "https://SITENAME.atlassian.net/rest/api/2/issue/";
  return base_url;
}

/************************************
まずはtransitionsを取得してログに出して変更したいステータスのidを見つける
...{"id":"31","name":"完了"...
などと取得できる
************************************/
function get_issue() {
  var token = get_jira_token();
  var key = "KEY-1";
  var options = {
    contentType: "application/json",
    headers: {"Authorization": " Basic " + token}
  };
  var url = get_base_url() + key + "?expand=transitions.fields";
  var response = UrlFetchApp.fetch(url, options);
  Logger.log(response);
}

/************************************
transitionを変更する
var transitions = {"transition": {"id": "31"}}
などと書いて変更する
************************************/
function change_transition() {
  var token = get_jira_token();
  var payload = get_payload();
  var options = get_options(token, payload);
  var url = get_url();
  UrlFetchApp.fetch(url, options);
}

function get_url(){
  var key = "KEY-1";
  var url = get_base_url() + key + "/transitions";
  return url;
}

function get_payload(values) {
  var transitions = {"transition": {"id": "31"}}
  var payload = JSON.stringify(transitions);
  return payload;
}

function get_options(token, payload) {
  var options = {
    method: "post",
    payload: payload,
    contentType: "application/json",
    headers: {"Authorization": " Basic " + token}
  }
  return options;
}


参考

Do transition
https://developer.atlassian.com/cloud/jira/platform/rest/#api-api-2-issue-issueIdOrKey-transitions-post