JavaScript
GoogleAppsScript
backlog
chatwork

【GAS】Backlogの残タスク(課題チケット)をGASで取得してチャットワークに流す

More than 3 years have passed since last update.


はじめに

チケット駆動の開発を続けていると、日々の振り返りの中で残りチケット・タスクを確認する機会があると思います。

それが朝会の場であったり、夕会であったりしますが、その都度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」にして下さい。

あとはスクリプトエディタから時計のようなアイコン(トリガー)で好きな時間でこの関数が実行されるように設定。


結果


スプレッドシート

spsheet.png


ChatWork

lovewg.png

GASは面白い