研究室のコーヒーマシン
私の研究室では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コマンドでみんなの飲んだ回数を棒グラフで返してくれる機能も実装しました。
参考
以下の記事を非常に参考にさせていただきました <(_ _)>

