~とりあえず返事だけしてくれ編~前回はGASを用いて、Slackの投稿からキーワードを拾い、返事をする機能を作りました。今回はさらに、スプレッドシートを用いて、電話を取った回数を記録したり、中間結果を見るための機能を追加したいと思います。使用する引き金について前回の記事にも書いた通り、電話を取った回数は、特定のスタンプを投稿した回数を集計していました。今回のSlackBotでも、スタンプを拾って動作するようにしたいと思います。各スタンプの役割は以下の通りとなります。どれも似たり寄ったりで分かりにくいですが・・・。「TEL取ってない」とか完全におふざけのつもりだったのになぁまた、それぞれのスタンプは以下のような名前になっています。Webhookの引き金に設定しておきます。次は必要な表をスプレッドシートに用意します。スプレッドシートに表を用意する今回はこのような表を用意しました。Webhookから送られてくる値。表示名:Botの投稿で用いる名前。Slackで表示されているユーザー名ではない。回数:各々が電話を取った回数を記録する列。=SUM(C2:C7)」で集計。合計の行は、前回で記述した、このルールで必要になります。4.全員の回数の合計が、1年目社員の総合人数を下回った場合は、電話応対の回数に関わらず全員で抽選。これでスプレッドシートの用意は終了です。次はいよいよ、GASで処理を実装します。Webhookはその判別をしてくれないので、GASのコード上で分岐する必要があります。そもそもコード内でどうやって引き金を見るのか・・・ということになりますが、前回の記事で実装したコードをもう一度見てみます。slack();}このdoPostメソッドの引数となっている「e」に、様々な情報が詰まっています。どんな情報が入っているのかを紹介しますが・・・ちょっと内容が多いので、必要な分だけ紹介します。}}channel_name:投稿を拾ったチャンネルの名前user_name:投稿したユーザーの名前trigger_word:どの引き金を拾ったかtext:投稿内容の文章それぞれの情報は、以下のように使うことができます。e.parameter.trigger_word;これで、変数triggerに、「:totta:」という文字列が格納されました。今回使うGASのコードに、処理の分岐を実装します。}}これでスタンプごとに処理を分けることができるようになりました。次に、それぞれの処理を実装したいと思いますが、その前に、GASのコード内でスプレッドシートにアクセスする方法を確認したいと思います。アクセス方法はこちらの記事に詳しく記載されています。参考にさせていただきました。アクセスする方法まとめ:https://qiita.com/negito6/items/c64a7a8589faaffcfdcf今回はGASとスプレッドシートを紐づけているので、以下の方法を取ります。SpreadsheetApp.getActiveSheet();これで、変数sheetにスプレッドシートの情報が格納されました。このsheetを用いて、データを取得したり渡したりします。データの受け渡しセルの指定スプレッドシートのセルの指定には、getRange関数を使用します・・・が、このgetRange関数、同じ関数名で種類が複数あり、とてもややこしいです。使い間違えないようにしましょう。sheet.getRange("A3");これらの構文を適宜使い分ける必要があります。値の取得セルを指定できたからと言って、まだ値を取得できたわけではありません。次の2つの場合に応じて、異なる関数を用いて値を取得します。1つのセルを指定した場合こちらの場合はgetValue関数を使います。"user.a"これで2行B列の「user.a」が取得できました。複数のセルを指定した場合は、getValues関数を使います。