はじめに
Backlogのインテグレーションでは、本日が期限日だけど完了していない課題を通知出来ません。そのため、GoogleAppsScriptで課題にコメントを登録するコードを作成し、Backlogのインテグレーションで通知できるようにしました。
GoogleAppsScriptを選んだ理由は、触ってみたかったのとトリガーの定時実行があるからです。
- Backlog API
- Google Apps Script -はじめに-
サンプルコード
サブドメインやプロジェクトIDは、Backlogを開いたURLに含まれています。
検索する課題のステータスのIDはデフォルトとし、完了していない課題は未処理・処理中・処理済みとしています
function func_backlog() { // 課題一覧を取得するためのパラメータ let parameter_get = { "method" : "GET", "contentType": "application/json", }; // 本日の日付を取得する let today = Utilities.formatDate(new Date(), "JST","yyyy-MM-dd") // 取得したい課題の検索条件をURLの後に記載する let issues_url = "https://【サブドメイン】.backlog.com/api/v2/issues?apiKey=【API Key】&projectId[]=【プロジェクトID】&statusId[]=1&statusId[]=2&statusId[]=3&dueDateSince=" + today + "&dueDateUntil=" + today; // 課題一覧を取得する let rslt = UrlFetchApp.fetch(issues_url, parameter_get); // JSONにパースする let json_rslt = JSON.parse(rslt); // 課題にコメントを登録するパラメータ let parameter_post = { "method": "POST", "contentType": "application/x-www-form-urlencoded", "payload" : { // 任意のメッセージに変更してください "content" : "本日が期限日です", }, }; // 複数の課題に対応 for (let i = 0; i < json_rslt.length ; i++) { // コメントを登録したい課題を指定する issues_comments_url = "https://【サブドメイン】.backlog.com/api/v2/issues/" + json_rslt[i]["issueKey"] + "/comments?apiKey=【API Key】"; // 課題にコメントを登録する。rsltは無くてもいい rslt = UrlFetchApp.fetch(issues_comments_url, parameter_post); // ログ出力用。無くてもいい console.log("期限日 " + today + " のタスク: " + json_rslt[i]["issueKey"]); } }
課題の検索条件について
- projectId
- 複数のプロジェクトIDを指定できます
- 複数の指定例(&は検索条件をorでつなぐイメージ)
- projectId
- デフォルト設定の場合、1=未処理、2=処理中、3=処理済みです
- 複数の指定例(&は検索条件をorでつなぐイメージ)
- statusId
- 期限日の範囲(開始日)を指定する
- 期限日の範囲(終了日)を指定する
- dueDateUntil以前の課題をすべて検索したい場合は、dueDateSinceを指定しない
BacklogのAPI Key取得手順
API Keyを発行した、個人アカウント名でコメントが書かれます。そのため、あたかもその個人から言われたと感じる恐れがあり、人を連想しないアカウント(例えばシステム、またはチコちゃん)でAPI Keyの発行することをお勧めします。
- API Key取得手順
Backlogのインテグレーション設定
下記を参考に設定します。SlackやTeamsなどがあります。
- インテグレーションの設定手順
GoogleAppsScriptのトリガー実行設定
GUIでさっと時間や日、週指定などが設定でき、なんならログも保存されます。便利ですね。