ランダムにタスクを割り当ててSlackに通知するbotを作った
はじめに
先日公開された下記のスライドを社内に紹介したところ、とあるディレクターさんからランダムにタスクを割り当てるbotについて聞かれたので適当につくってみました。
www.slideshare.net
やったこと
とにかく簡単にタスクの登録がしたいということだったので、Googleスプレッドシートを使うことに。
tasksシートとmembarsシートに、それぞれタスクとメンバーを記入、そこからランダムに1件選択してSlackに通知するだけのシンプル仕様。
これをディレクターさんのGoogleスプレッドシートに登録して、任意の時間をスケジューリングしてもらいました。
かなり雑な作りですが、とりあえずは要望を満たせています。
お試し運用してもらって、もっと改善要望出てきたら対応しようと思います。
コード
function doPost() { var tasks = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('tasks'); var taskMax = tasks.getLastRow(); var task = tasks.getRange(getRandomNumber(2, taskMax), 1).getCell(1, 1).getValue(); var members = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('members'); var memberMax = members.getLastRow(); var member = members.getRange(getRandomNumber(2, memberMax), 1).getCell(1, 1).getValue(); var payload = { text : "<@" + member + "> " + task + "お願いします", username : 'タスク割り当てbot', icon_emoji:':dart:', link_names: 1 } var options = { method: 'post', payload : JSON.stringify(payload) }; var url = "https://hooks.slack.com/services/xxxxxxxxxx/xxxxxxxxxx/xxxxxxxxxx"; var response = UrlFetchApp.fetch(url, options); if (response.getResponseCode() != 200) { Logger.log(response); } } function getRandomNumber(min, max) { return Math.floor((Math.random() * ((max + 1) - min)) + min); }