# はじめに
チケット駆動の開発を続けていると、日々の振り返りの中で残りチケット・タスクを確認する機会があると思います。
それが朝会の場であったり、夕会であったりしますが、その都度Backlogを開いて検索かけてーとやっていると面倒です。せっかくAPIが公開されているのなら、定期的にチケットの一覧をチャットワークに投稿すれば、確認も早いんじゃないかと思いました。
チャットワークに投稿するだけでなく、スプレッドシートにも書き込めるようにしています。
雑なGASのスクリプトで申し訳ありませんが、何かの参考になればと。
Backlog APIのリファレンスはこちら
http://developer.nulab-inc.com/ja/docs/backlog
# てかGASって何?
GoogleAppsScriptの略で、簡単に言うとGoogle製のサービスのプログラム環境です。JavaScriptで記述できます。プログラムを作ることで、例えば表計算を自動化したり、サービス間の連携を行うといったことが可能になります。
####簡単に使用する場合
スプレッドシートを新規作成 > ツール > スクリプトエディタ
オンラインエディタが開かれ、JavaScriptを書いていきます。
# 必要なもの
APIキーはそれぞれのリファレンスを参考に取得します
- BacklogのAPIキー
- ChatWorkのAPIキー
- BacklogのプロジェクトのID
# GASのスクリプト
function task() {
// スプレットシート取得
var mySS = SpreadsheetApp.openById("***スプレットシートのID***");
// スプレットシートの書き込む位置
var range= mySS.getSheetByName("**シートの名前**").getRange(1, 1);
// BacklogプロジェクトのID
var pjid = **PJ ID**;
// ChatWorkに投稿する本文
var honbun = "";
// APIキーでBacklog認証&取得
var resissue = UrlFetchApp.fetch("https://***.backlog.jp/api/v2/issues?apiKey=*******APIキー*******&projectId[]="+pjid+"&statusId[]=1&statusId[]=2&statusId[]=3&order=&count=100");
if (resissue.getResponseCode() != 200) {
return false;
}
var issuelist = JSON.parse(resissue.getContentText());
// 一旦、シートをクリアにする
mySS.getSheetByName("**シートの名前**").getRange("A2:G"+issuelist.length+"").clearContent();
for(var i=1; i<issuelist.length; i++) {
// スプレッドシートに書き込む
range.offset(i, 0).setValue(issuelist[i]["issueKey"]);
range.offset(i, 1).setValue(issuelist[i]["summary"]);
range.offset(i, 2).setValue(issuelist[i]["description"]);
range.offset(i, 3).setValue(issuelist[i]["assignee"]["name"]);
range.offset(i, 4).setValue(issuelist[i]["priority"]["name"]);
range.offset(i, 5).setValue(issuelist[i]["status"]["name"]);
range.offset(i, 6).setValue(issuelist[i]["dueDate"]);
// 投稿するメッセージの本文
honbun += issuelist[i]["issueKey"] + " ";
honbun += issuelist[i]["summary"] + " ";
honbun += "担当:" + issuelist[i]["assignee"]["name"] + " ";
honbun += "優先度:" + issuelist[i]["priority"]["name"] + " ";
honbun += "ステータス:" + issuelist[i]["status"]["name"] + "\n";
honbun += "https://****.backlog.jp/view/" + issuelist[i]["issueKey"] + "\n[hr]";
}
//ここからはChatWork
var client = ChatWorkClient.factory({token: "***ChatWorkのAPIキー***"});
/* 決められた記法をもとに整形。
投稿する部屋のIDと共に
メッセージを投稿します。*/
client.sendMessage({
room_id:***room ID***,
body: "[info][title]残タスク一覧[/title]\n"+honbun+"\n現在の残タスクになります。完了しているタスクについてはステータスを変更してください。\n [/info]"
});
}
#課題の一覧の取得
https://***.backlog.jp/api/v2/issues?apiKey=*******APIキー*******&projectId[]="+pjid+"&statusId[]=1&statusId[]=2&statusId[]=3&order=&count=100
クエリ status
は課題の状態なので、完了以外の「未対応(ID:1)」「処理中(ID:2)」「処理済み(ID:3)」を指定。
最後のクエリ count
は取得する件数を指定しています。
ここでは100件。
クエリパラメーターの詳細はコチラで
http://developer.nulab-inc.com/ja/docs/backlog/api/2/get-issues
# ChatWorkClientライブラリの追加
ChatWorkにメッセージ投稿するには、GAS側でChatWorkのClientライブラリを追加する必要があります。
スクリプトエディタの
リソース > ライブラリ
からライブラリを追加します。プロジェクトキーは以下に記述されています。
https://github.com/cw-shibuya/chatwork-client-gas
拡張子を「ChatWorkClient」にして下さい。
あとはスクリプトエディタから時計のようなアイコン(トリガー)で好きな時間でこの関数が実行されるように設定。
# 結果
###スプレッドシート
###ChatWork
GASは面白い