LANG SELRCT

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

2018年1月25日木曜日

JIRA APIで特定のissueのコメントを取得したい


JIRAの特定の課題のコメントをすべて取得したくて書いたコードです


今回取得するコメント情報
  • コメントした人
  • コメントした日時
  • コメント

コード.gsの以下の変数を設定して実行すると上記の情報がログに出ます
  • ISSUE_KEY
  • SITENAME
  • LOGIN_EMAIL
  • LOGIN_PASSWORD



コード.gs
function get_comment_gs(){
  var key = "ISSUE_KEY"
  var response = get_issue(key);
  var jobj = JSON.parse(response);
  var fields = jobj["fields"]
  var comments = fields["comment"]["comments"];
  var len = comments.length;
  var concat = "";
  for(var i = 0; i < len; i++){
    var comment = comments[i]["body"];
    var created = comments[i]["created"];
    var author = comments[i]["updateAuthor"]["emailAddress"];
    created = Utilities.formatDate(new Date(created), 'Asia/Tokyo', 'yyyy/MM/dd-HH:mm:ss');
    concat += author + "\n" + created + "\n" + comment + "\n\n";
  }
  var result = [concat, len]
  Logger.log(result);
}

function get_issue(key) {
  var ISSUE_URL = 'https://SITENAME.atlassian.net/rest/api/2/issue/';
  var token = get_token();
  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;
}
意訳
この機能がやること
課題のKEYを指定する
get_issueに渡して結果を取得して
JSONをオブジェクトに変換して
fieldsを取得して
コメントをすべて取得して
コメントの数を取得して
すべてのコメントを入れる入れ物を用意して
コメントの数だけ以下を繰り返す
コメントの内容を取得して
コメントの日付けを取得して
コメントした人のemailを取得して
日付けをフォーマットして
改行を入れて結合していく

すべてのコメントとコメント数を
ログに出す


この機能がやること
issueのapiをたたくURLをISSUE_URLに入れる
get_token()からtokenを取得して
optionのオブジェクトを作る
contentType は "application/json"
headers は  {"Authorization": " Basic " + token}

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


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