LANG SELRCT

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

2018年1月2日火曜日

JIRA APIでissueの特定の情報を取得する


JIRA APIでissueの内容を取得する
ではissueのすべての情報を取得しました

今回はその中から欲しい情報だけを抽出します


抽出する情報
  • 課題タイプ
  • ステータス
  • 説明
  • タイトル
  • コメント


抽出する方法

responseを見ると
fields の中に issuetype や status の情報があるので
それらの中から欲しい情報を指定して取得してみる

新たに get_issue_data() という機能を作って取得する
 それ以外は JIRA APIでissueの内容を取得する と同じで
 get_issue()の最後にログではなく return response で返すところだけ違う


抽出結果




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

function get_issue_data(){
  var response = get_issue();
  var jobj = JSON.parse(response);
  var fields = jobj["fields"]
  var type = fields["issuetype"]["name"];
  var status = fields["status"]["name"];
  var description = fields["description"];
  var summary = fields["summary"];
  var comment = fields["comment"]["comments"][0]["body"];
  var custom1 = fields["customfield_10025"];
  Logger.log([type, status, description, summary, comment]);
}

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;
  var response = UrlFetchApp.fetch(url, options);
  return response;
}

function get_token() {
  var id = "LOGIN_EMAIL";
  var pw = "LOGIN_PASSWORD";
  var token = Utilities.base64Encode(id + ":" + pw);
  return token;
}
意訳
issueのapiをたたくURLをISSUE_URLに入れる

この機能がやること
get_issue()から返ってきたデータを
オブジェクトに変換して
fieldsの中の
issuetypeのnameを取得して(課題タイプ)
statusのnameを取得して(ステータス)
descriptionを取得して(説明)
summaryを取得して(タイトル)
commentのcommentsの0番目のbodyを取得して(コメント)
customfield_10025の値を取得して
ログに出す


この機能がやること
get_token()からtokenを取得して
issue keyを指定して
optionのオブジェクトを作る
contentType は "application/json"
headers は  {"Authorization": " Basic " + token}

urlにISSUE_URL + keyを入れて
optionを付けてデータを取得して
返す


この機能がやること
JIRAのログインに使っているemailと
パスワードを
base64Encodeでエンコードして
返す



参考

Get issue
https://developer.atlassian.com/cloud/jira/platform/rest/#api-api-2-issue-issueIdOrKey-get