LINE BOT を使ってGoogle spreadsheet に毎日の体温を記録させてみる
LINE BOT を使ってGoogle spreadsheet に毎日の体温を記録させてみました。LINE BOT やGoogle spreadsheet の script の作成に慣れてない前提で所要時間は8時間ほどでした。
目的
家族が接客業の仕事をしており、COVID-19 の影響で「毎日体温を計って上長に共有、体温高い人がいたら報告して休ませる」(で症状や感染を疑うような会食などがあったかなど状況に応じて、様子をみるなり、保健所に連絡させたり)と対応をとるという状態で勤務をしています。
部下に報告をさせて上長に共有、というのもやっており、報告自体の負担は大したことないものの、記録を共有するのに自分が休みでも店舗は営業しているのでほぼ毎日PCを開けて記録、報告ということをしています。その状態を「なんとかならんかなぁ」と思い、それをなんとかするものを作ってみよう、ということではじめてみました。
LINE BOT の動作
まず解決する問題を設定します。家族が
・ある時間までにLINEのグループチャットで送られてくる部下の検温結果や自分の検温結果をGoogle spreadsheet に記録する
・検温記録を上長に共有する
という2つをPCを開いて作業をしていることを作成するLINE BOT で解決する問題としました。
ここから、LINE BOT には以下の動作をさせることを目標にしました。
・部下一人一人が自分で体温をLINEでグループチャットではなく作成したLINE BOTに報告させる。
・LINE BOTで報告された体温を報告日時、部下の名前と一緒にGoogle spreadsheet 記録する。
・LINE BOTにその日そのときまでの報告を問い合わせると名前と報告日時と体温の一覧を返事させる。
家族の職場では G suite を使っており、Google spreadsheet への記録がよく使われるということだったので、LINE BOT からGAS (Google apps script) の公開WebアプリのWeb-hook を呼び出すことで spreadsheet に記録させ、また、GAS から LINE Message API を呼び出すことで返信させることにしました。
やったことの概要
1. LINE Developers へのログイン(自分のLINEアカウントを使用)
2. LINE Developers でプロバイダの作成
3. LINE Developers でチャネルの作成 Message API を選択
4. LINE Developers で作成した Message API でチャネルアクセストークンを発行(GASでLINEのデータを取得したりメッセージを送るときに使う)
5. Google spreadsheet のファイルを一つ作成する
6. Google spreadsheet からツール→スクリプトエディタで起動
7. スクリプトエディタで、GAS にPOSTされたデータからメッセージを抽出8. 体温を正規表現で抽出(37 とか36.5 とか二桁の整数と、整数二桁を持つ小数)、POSTされた時刻と、POSTしたLINEアカウントの名前を取得し、スプレッドシートの末尾に追加する。
9. 体温でなく報告を求めるメッセージ(単に"報告" であるとき)であれば、spreadsheet から報告を要請された日のその時点までの報告されたデータを抜き出す。もし同じ人が複数回報告されていれば最も新しいデータのみを抜き出す。
10. Spreadsheet にアクセスする処理が終わったらLINE返信する(体温確認できたらその旨、できなかったら体温入力要請、報告の場合は報告内容)
11. Spreadsheet を公開→ウェブアプリケーションとして導入 し、表示されたURLを LINE のチャネルの Webhook に登録する。(これでメッセージがチャネルに送られるとspreadsheet に書いたスクリプトの doPost が呼び出される)
※作成した script は今のところ公開する予定はありません。
出来上がり
このような感じで、体温を伝えるとそれを記録して、「報告」と伝えると、その日の全員の最新体温一覧を返してくれます。
ここに職場の部下が体温を報告してくれることで、家族が spreadsheet に記録する手間がなくなり、記録するためにノートPCを開かなくてもよくなります。
つまづいたところ・解決に時間がかかったところ
作る中で大まかに時間がかかった順に書くとが、
・GASが失敗したときの原因の分析
・GAS のイベントオブジェクトの内容を知ること(知らないと正しいコード書けない)
・メッセージ中の体温を抽出するGASの正規表現
特に、1番時間がかかったのが、LINEにメッセージを送ってGASの動作は開始しているが失敗していることはわかるのに、それがなぜかわかる手段が限られていたことでした。
spreadsheet から実行しているとログは残せるようでしたが、上手くいかず、spreadsheet に出力させ、追加・変更したコードを二分探索的に探して問題となっているポイントを探しました。
もう少しうまいやり方があるはずだと推測していますが、簡単なスクリプトのつもりで書いているので初歩的な間違い、ただの勘違いが動かない原因であり見つけるのが容易い想定でそのまま進めてしまいました。
仕事だったらダメだな。。と思いながら。。
使用感
現状はまだ、私と家族での試験運用中ですが、家族の反応としては上々・十分で、本番運用を考えています。
現状は私個人のLINEアカウントでプロバイダー・チャネルを使い、また私個人の Google アカウントの spreadsheet を使用しています。家族以外の個人情報も含まれるため少なくとも情報が蓄積されるspreadsheet を職場のアカウントに変えておく必要が本番環境での開始に向けた課題です。
まとめ
LINE BOTの Message API とGoogle spreadsheet を使って体温を記録・報告するアプリを作りました。
使用開始はこれからですが、家族が職場で行っている部下の体温記録を部下がそれぞれが自分でLINE BOTに報告するだけで、spreadsheetに記録されるようになりました。また、それを同じLINE BOT に問い合わせると最新の記録を見ることができるようになりました。
この記事が気に入ったらサポートをしてみませんか?