研究室のコーヒーマシン
私の研究室では1杯50円でコーヒーを飲むことができます。(ラボリーダーに感謝。)
その都度、50円払ってもいいのですが、各自責任を持って飲んだ回数を覚えておくことで後でまとめて精算できたら楽ですね。
記録手段としての Slack
研究室ではSlackを使っていたので、SlackのOutgoing WebHooks
を使うことにしました。記録先としてはGoogle Spreadsheet
に記録します。username
の欄と各ユーザネームに対応した数字を記録する欄を作っておきます。
コマンド
g coffee add
とSlackで入力することで入力したユーザーに対応する数字の欄の数字を1つ増やすことにします。(いつ飲んだかなどの情報は後から一切わからない仕様です汗)
Google Apps Script (GAS) の doPost(e) 関数
GASではdoGet
関数やdoPost
関数を定義することでウェブアプリとして公開することができます。且つ、Google Spreadsheet
を操作するクラスなどが使えるため、Google Drive
上のファイルを操作するBotなどを作るには非常に便利です。
SlackのOutgoing WebHooks
のポスト先としてGASで公開したアプリのURLを指定し、doPost
関数内でGoogle Spreadsheet
を操作することで上記のコマンドを実装しました。
(追記 12/4)
今はExecution API
というのがあるのですね。。
パラメータ
SlackでOutgoing WebHooks
を設定する時のトークンを使うことでSlack以外からのアクセスを無視できます。
function doPost(e) {
if(e.parameter.token != SLACK_OUTGOING_TOKEN) return null;
var username = e.parameters.user_name[0];
var channel = e.parameters.channel_name[0];
var command = e.parameters.text[0].split(" ");
if (command[0] != "g") return null;
switch(command[1]) {
case "coffee":
/*
* spreadsheet上の username の飲んだ回数を1増やす
*/
break;
}
}
GASのGoogle Spreadsheet
の操作に関しては
など色々あります。
おまけ
g coffee all
コマンドでみんなの飲んだ回数を棒グラフで返してくれる機能も実装しました。
参考
以下の記事を非常に参考にさせていただきました <(_ _)>