LANG SELRCT

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

2018年2月5日月曜日

JIRAの特定のプロジェクト内のissuesの情報を取得したい


JIRA APIをたたいて
指定したプロジェクトの中にある課題の情報を取得したい

今回取得する情報
  • 課題タイプ
  • ステータス
  • 説明
  • タイトル
  • 特定のカスタムフィールド

以下のコード.gsの
  • SITENAME
  • LOGIN_EMAIL
  • LOGIN_PASSWORD
  • customfield_10025

を変更して実行すると100件までの課題を取得できます
(一度に取得できる上限は100件まで)



コード.gs
var BASE_URL = "https://SITENAME.atlassian.net/rest/api/2/";
var JQL = "search?jql=project=PROJECTNAME&startAt=0&maxResults=100";
var ISSUES_URL = BASE_URL + JQL;

function get_log() {
  var token = get_token();
  var response = get_issues(token);
  var data = get_issue_data(response);
  Logger.log(data);
}

function get_token() {
  var id = "LOGIN_EMAIL";
  var pw = "LOGIN_PASSWORD";
  var token = Utilities.base64Encode(id + ":" + pw);
  return token;
}

function get_issues(token) {
  var options = {
    contentType: "application/json",
    headers: {"Authorization": " Basic " + token}
  };
  var url = ISSUES_URL;
  var response = UrlFetchApp.fetch(url, options);
  return response;
}

function get_issue_data(response) {
  var jobj = JSON.parse(response);
  var len = jobj["issues"].length;
  var data = [];
  for (var i = 0; i < len; i++) {
    var fields = jobj["issues"][i]["fields"]
    var type = fields["issuetype"]["name"];
    var status = fields["status"]["name"];
    var description = fields["description"];
    var summary = fields["summary"];
    var custom1 = fields["customfield_10025"];
    var combine = [type, status, description, summary, custom1];
    data.push(combine);
  }
  return data;
}
意訳
JIRAのapiをたたくBASE_URLを指定する
JQLで取得したい情報を絞る
BASE_URLとJQLをあわせる

この機能がやること
tokenを取得して
get_issues()に渡して
返ってきたデータをget_issue_data()に渡して
返ってきたデータをログに出す


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


この機能がやること
optionのオブジェクトを作る
contentType は "application/json"
headers は  {"Authorization": " Basic " + 受け取ったtoken}

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


この機能がやること
受け取ったresponseをオブジェクトに変換して
その数を取得して
結果を入れる入れ物を用意して
issuesの数だけ以下を繰り返す
issuesをひとつずつ取得してそのfieldsの中の
issuetypeのnameを取得して(課題タイプ)
statusのnameを取得して(ステータス)
descriptionを取得して(説明)
summaryを取得して(タイトル)
customfield_10025の値を取得して
それらを配列に入れて
dataに追加して

返す



参考

Search for issues using jql
https://developer.atlassian.com/cloud/jira/platform/rest/#api-api-2-search-get