はじめに
本日が期限日の課題をGoogleAppsScript(以下、GAS)で直接Slackに通知します。
前回の記事ではBacklogのインテグレーションを利用していましたが、今回はGASのみで実装します。
Slackの設定
以下を参考にしてください。
手順5で表示される Incoming Webhook URL をコードに記載します。
Slack での Incoming Webhook の利用 | Slack
サンプルコード
サブドメインやプロジェクトIDは、Backlogを開いたURLに含まれています。
検索する課題のステータスは、デフォルトとします。
function func_backlog() { // 課題一覧を取得するためのパラメータ let parameter_get = { "method" : "GET", "contentType": "application/json", }; // 本日の日付を取得する var 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); // 複数の課題に対応 for (let i = 0; i < json_rslt.length ; i++) { // 通知内容。任意のメッセージに変更してください const data = { "text": "期限日は" + today + "です\n" + "タイトル:" + json_rslt[i]["summary"] + "\n" + "URL:https://【サブドメイン】.backlog.com/view/" + json_rslt[i]["issueKey"] } // Slackに通知するパラメータ const parameter_post = { "method": "post", "Content-type": "application/json", "payload": JSON.stringify(data) } slack_url = "【SlackのIncoming Webhook URL】"; // Slackに通知する。rsltは無くてもいい rslt = UrlFetchApp.fetch(slack_url, parameter_post); // ログ出力用。無くてもいい console.log("期限日 " + today + " のタスク: " + json_rslt[i]["issueKey"]); } }
課題の検索条件などは、以下を参考にしてください。
[Backlog] [GoogleAppsScript] 本日が期限日だけど完了していない課題をSlackやTeamsに通知する - mito’s blog
その他
Slackのワークフローでも実装できるけど、手間は変わらなさそう。
GAS楽しい。