LANG SELRCT

コードを書く場所

2019年10月19日土曜日

JIRAのリンクされた課題をAPIで追加したい


以下のように「リンクされた課題」をAPIで設定したくて書いたコードです。





Blocksにする例

コード.gs
var ENDPOINT = "https://SITENAME.atlassian.net/rest/api/3/issueLink";

function doPost() {
  var payload = getPayload();
  var options = getOptions(payload);
  var response = UrlFetchApp.fetch(ENDPOINT, options);
  Logger.log(response.getResponseCode());
}

function getPayload(values) {
  var data = {
    "type": {
      "name": "Blocks"
    },
    "inwardIssue": {
      "key": "KT-9"
    },
    "outwardIssue": {
      "key": "KT-8"
    }
  }
  var payload = JSON.stringify(data);
  return payload;
}

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

function getToken() {
  return PropertiesService.getScriptProperties().getProperty("token");
}

意訳
実行するAPIのENDPOINTを指定する

この機能がやること
payloadを取得する
optionsを取得する
ENDPOINTにoptionsを渡して結果を取得する
getResponseCodeをログに出す


この機能がやること
dataオブジェクトを作って
typeは
Blocks

inwardIssueは
KT-9(KT-9のリンクされた課題にblocksでKT-8を追加する)

outwardIssueは
KT-8(KT-8のリンクされた課題にis blocked byでKT-9を追加する)


dataをJSONにして
返す


この機能がやること
optionsオブジェクトを作って
methodはpostにして
payloadには引数で渡されたpayloadを指定して
contentTypeはapplication/jsonにして
headersにはスクリプトのプロパティに入れたtokenをgetToken()で取得して

optionsを返す


この昨日がやること
スクリプトのプロパティにあるのtokenを取得して返す