毎日その日のタスクを自動通知する Slack bot 作った話
毎日その日のタスクを自動通知する Slack bot 作った話
経緯
Google スプレッドシート
値を取ってきて利用できるという話を先日きいた
つまり
スプレッドシートで
1. 工数管理 (自動計算)
2. 工数管理の情報を元に1ヶ月のスケジュールを組む
3. Slack で毎日その日のタスク通知してくれたら便利やん!
と思った (月並)
スプレッドシート作成
工数管理シート
タスクの工数を自動計算してくれるシートスケジュールシート
1ヶ月のタスクを登録しておくシートSlack シート
Slack で通知して欲しい情報はこのシートで全て管理している
TODAY() で日付オブジェクトを作り、
MATCH() でスケジュールシートの日付とマッチした行番号取得
その行番号に欲しい情報が全てあるので、列名と組み合わせて文字列のセル番号を作成
indirect() で文字列セル番号をオブジェクト化して、値を参照できるようにしている
GoogleAppScript (GAS)
ただの JavaScript だった
function myFunction() { // spread sheet 取得 var sheet = SpreadsheetApp.openById('13RzmCmRRsYc4N2MU9xwJoRVhDQLjqNwkrhj5dc8YUVU'); // 拾うシートの名前 var sheetName = 'slack'; // 日付 var today = sheet.getSheetByName(sheetName).getRange(1,1).getValue(); // 曜日 var week = sheet.getSheetByName(sheetName).getRange(1,2).getValue(); // タスク名 var task = sheet.getSheetByName(sheetName).getRange(1,3).getValue(); // 大目標 var big = sheet.getSheetByName(sheetName).getRange(1,4).getValue(); // 中目標 var medium = sheet.getSheetByName(sheetName).getRange(1,5).getValue(); // 小目標 var small = sheet.getSheetByName(sheetName).getRange(1,6).getValue(); // タスク進捗率 var percent = sheet.getSheetByName(sheetName).getRange(1,7).getValue() * 100; var sentence = "-- *きょうのいけだの衝動* --\n" + "*" + task + "* [ *" + percent + " %* ] " + "\n" + "\n" + ":yavai: 大目標 `" + big + "` \n" + "\n" + ":yavai: 中目標 `" + medium + "` \n" + "\n" + ":yavai: 小目標 `" + small + "` \n" + "https://drive.google.com/open?id=13RzmCmRRsYc4N2MU9xwJoRVhDQLjqNwkrhj5dc8YUVU"; var payload = { 'text' : sentence, 'channel' : 'stand_up' , // 投稿するチャンネル }; var options = { 'method' : 'post' , 'contentType' : 'application/json' , 'payload' : JSON.stringify(payload), }; var url = '(Slack incoming WebhookでコピーしたURL)'; UrlFetchApp.fetch(url, options); }
完成
まりこ様 bot が決まった時間に通知してくれるようになりました
参考
Slack 設定画面が変わり続けているので、色々と昔と違うところがありました
今回使ったトークンの種類は Webhooks です
共有リンクはオンにしておかないと届かないみたいです
覚えたばかりの工数でいうと1人日かかりました