みどりゲーム

主にUnityについての覚え書きです。

JIRAチケットをGoogleSpreadSheetで見たい

※今回は見るだけ
※実際作ったコードはいろいろまずいので載せられぬ

JIRA REST APIを叩く

SpreadSheetを開いて、ツール→スクリプトエディタを選択する。
こちらのサイトを参考にがんばる
Google Apps Script試行錯誤Blog: JIRA APIでissueの内容を取得する
Google Apps Script試行錯誤Blog: JIRA APIでissueの特定の情報を取得する
Google Apps Script試行錯誤Blog: JIRAの特定のプロジェクト内のissuesの情報を取得したい

最初はJIRAの認証とかがでるかもなので、出たら許可する。

※叩きすぎると403エラーで怒られる(JIRAのページで再ログインしたら治った ロボットだと思われてた)


とってきたJSONをいじいじする

ステータス、チケットへのリンク、概要、報告者、更新日を書き出す

function get_tickets(issues){
  var tickets = [];//1つ1つまとめる用
  
  var len = issues.length;
  
  var persons = []
  var pastDay = [];
  var status = [];
  var id = [];
  var link = [];
  var summary = [];
  var reporter = [];
  var updateDate = [];
  
  for(var i = 0; i < len; i++){
    //jsonから取り込む
    status[i] = issues[i]["fields"]["status"]["name"];
    id[i] = issues[i]["key"];
    link[i] = '=HYPERLINK("https://jira.サイトの名前/browse/' + id[i] + '","' + id[i] + '")';
    summary[i] = issues[i]["fields"]["summary"];
    reporter[i] = issues[i]["fields"]["reporter"]["displayName"];
    updateDate[i] = toDate(issues[i]["fields"]["updated"]);
    
    //書き出すものを列挙
    tickets[i] = [status[i], link[i], summary[i], reporter[i], updateDate[i]];
  }

  return tickets;
}

function write_tickets(tickets, sheet){
    var tbl = [];//書きだす用
    var len = tickets.length;
    var col = tickets[0].length;//status[i], link[i], summary[i], ...
  
    for(var i = 0; i < len; i++){
      tbl.push(tickets[i]);
    }
  var origin = [3,1];//原点(左上)
  var range = sheet.getRange(origin[0],origin[1], len, col);
  range.setValues(tbl);
}

これで、
write_tickets(get_tickets(書き込むイシュー達), 書き込みたいシート);
すると、書き出される はず

他にも、チケットのverごとにシート分けたり、更新用にメニュー作ったりしました(割愛)
JQLで先にほしいチケットをフィルタしておくといい感じ


番外編 みんなで見るのに認証がめんどうだった

自分のIDとパスワードをハードコーディングするわけにもいかず、別の方法でやってみた。

PropertiesService.getUserProperties()はアクセスしている人専用?の値を入れる場所です。
メニューを作って、PropertiesServiceに値を入れてもらい、JIRAへの認証はそれを使います。
これで使う人がそれぞれログインすればよくなりました。

var userProp = PropertiesService.getUserProperties();

//最初の準備 onOpen
function Preparation(){
  //Menu追加
  var userDataMenu = ui.createMenu('ユーザー登録');
  userDataMenu.addItem('ユーザーIDを登録', 'InputUserID');
  userDataMenu.addItem('パスワードを登録', 'InputUserPW');
  userDataMenu.addToUi();
}

function InputUserID(){
  var id = Browser.inputBox('JIRAのユーザー名(メールアドレス)を入力してください');
  userProp.setProperty("id", id);
  Browser.msgBox('入力されました!'); 
}

function InputUserPW(){
  var pw = Browser.inputBox('JIRAのパスワードを入力してください');
  userProp.setProperty("pw", pw);
  Browser.msgBox('入力されました'); 
}

function get_token() {
  var id = userProp.getProperty("id");
  var pw = userProp.getProperty("pw");

  var token = Utilities.base64Encode(id + ":" + pw);
  return token;
}