はじめに
Backlogの課題と日報の紐付けをしたいという要望があり、作成しました。
スクリプトエディタを開く
新しくスプレッドシートを作成し、
ツール > スクリプトエディタ からスクリプトエディタを開く
プログラム作成
スクリプトエディタで下記プログラムを作成
/**
* 編集時に発動
**/
function task_action() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// 日報以外のシートはスルー
if (sheet.getName() != '日報') {
return;
}
var range = SpreadsheetApp.getActiveRange();
// A列目以外の編集はスルー
if (range.getLastColumn() != 1) {
return;
}
// 入力したキーからデータ取得
var key = range.getDisplayValue();
set_task_data(key, range);
}
/**
* BacklogAPIからデータを取得して反映する
**/
function set_task_data(key, range) {
if (key == "") {
return;
}
// B(作業日)
var d = new Date();
range.offset(0, 1).setValue(Utilities.formatDate(d, 'Asia/Tokyo', 'yyyy/MM/dd'));
SpreadsheetApp.flush();
// C(作業者)
var username = get_name();
range.offset(0, 2).setValue(username);
try {
// Backlog課題取得
var data = get_api_data(key);
// D(種別)
range.offset(0, 3).setValue(data["issueType"]["name"]);
// E(作業内容)
range.offset(0, 4).setValue(data["summary"]);
} catch(e) {
Browser.msgBox(e.message);
log(e.message + "\n" + e.fileName + ".gs : " + e.lineNumber + "\nstack:\n" + e.stack);
}
}
/**
* BacklogAPIデータ取得
**/
function get_api_data(key) {
var HOST = PropertiesService.getScriptProperties().getProperty("BACKLOG_HOST");
var API_KEY = PropertiesService.getScriptProperties().getProperty("BACKLOG_API_KEY");
var url = HOST + "/api/v2/issues/" + key + "?apiKey=" + API_KEY;
var fetch = UrlFetchApp.fetch(url);
var data = JSON.parse(fetch.getContentText());
return data;
}
/**
* 編集者のメールアドレスから名前を取得
**/
function get_name() {
var name = '';
var email = Session.getActiveUser().getEmail();
switch(email) {
case 'testA@test.com':
name = 'テストA';
break;
case 'testB@test.com':
name = 'テストB';
break;
default:
}
return name;
}
API情報の保持
ファイル > プロジェクトのプロパティ > スクリプトのプロパティ で下記保存
BACKLOG_HOST : [BacklogAPI]
BACKLOG_API_KEY : https://xxxxx.backlog.jp
トリガー追加
編集 > 現在のプロジェクトのトリガー > トリガー追加
実行する関数を選択 : task_action
デプロイ時に実行 : Head
イベントのソースを選択 : スプレッドシートから
イベントの種類を選択 : 編集時
保存
実行
A列にBacklogのキーを入力すると、内容をAPIで取得して表示する
さいごに
毎日日報入れるの面倒だった。
引き継いで使ってくれるのかな。
もっと便利なツールがあればいいなと思った。