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; }