Googleフォームが送信されると、Lineに入退室が通知されるBotを制作しました。
経緯
私は工学部2年の大学生です。課外活動の一環で、学習塾の生徒の入退室を保護者へ通知するLinebotを作ることになりました。そこで調べたところ、こちらの記事を見てフォームで入退室を記録する方法を思いつき制作しました。
動作イメージ
最初に通知する名前をLine Botで登録します。 新規登録→登録先を選択→名前を入力→登録確認 の手順で登録します。
登録後、Googleフォームに登録した名前と入退室が送信されるとLineBotに通知されます。退室の場合は滞在時間も一緒に通知されます。
環境
- Google Apps Script(GAS)
- Google Spread Sheet
- Google Form
- Line Messaging API
Google Apps Script(GAS)
Googleが提供しているウェブアプリ開発やGoogleサービスを自動化するためのプログラミング言語です。Googleスプレッドシート等のGoogleのサービスを操作できる仕組みが用意されています。
Line Messaging API
Line Botがメッセージを送るための仕組みです。こちらに概要が記載されています。
下記の通り、Messaging APIは様々なメッセージや機能を利用することができます。
- 応答メッセージを送る
- プッシュメッセージを送る
- さまざまなタイプのメッセージを送る
- テキストメッセージ
- スタンプメッセージ
- 画像メッセージ
- 動画メッセージ
- 音声メッセージ
- 位置情報メッセージ
- イメージマップメッセージ
- テンプレートメッセージ
- Flex Message
- ユーザープロフィールを取得する
やったこと
- Line Developersを登録、設定
- 情報登録用にGoogle Spread Sheetの作成
- 入退室記録用にGoogle Formの作成
- GASの作成
- リッチメニューの作成
- 動作確認
1.LineDevelopersを登録、設定
※「Webhook URL」の部分はGASを作成する際に設定するので飛ばしていいです。
2.Google Spread Sheetの作成
Google Driveから 新規>Googleスプレッドシート で画像のような表を作成し、シート名を「userlist」に変更します。
3.Google Formの作成
この形式のGoogleフォームを作成し、回答先を作成したスプレッドシートに設定します。
するとスプレッドシートに新しくシートが作られるので、シート名を「form」に変更します。
4.GASの作成
スプレッドシートの編集画面の 拡張機能 > Apps Script からGASのファイルを作成します。ファイルの中身はこちらです。通知される日付の形式を整えるためにdayjsというライブラリを使っているので、こちらの記事を参考に設定します。
コードの置き換え
自分の環境で動かしたい場合は、コード中の「**********」になっている部分を環境に合わせて置き換えます。
doPost.gsのchannel_tokenの値をLineのアクセストークンに設定します。
doPost.gsconst channel_token = "**********"; ...略
doPost.gsのspreadsheetの値をGoogleスプレッドシートのIDに設定します。
doPost.gs...略 const spreadsheet = SpreadsheetApp.openById("**********"); ...略
updateForm.gsのformの値をGoogleフォームのIDに設定します。
doPost.gs...略 const form = FormApp.openById('**********'); ...略
トリガーの設定
フォームを送信した際に実行されるトリガーを設定します。画像と同じ設定でトリガーを追加します。
デプロイ
GASの編集画面のデプロイ > 新しいデプロイ > 種類の選択 から「ウェブアプリ」を選び、 アクセスできるユーザーを「全員」にしてデプロイします。初回デプロイ時は承認が求められるので、詳細から安全ではないページにアクセスするをクリックします。
Webhook URLの設定
デプロイ完了後にウェブアプリのURLが出るので、これをコピーしてwebhookURLを設定します。手順はこちらです。
5.リッチメニューの作成
Line公式アカウントの管理画面にログインし、作成したLineBotのアカウントをクリックします。
サイドバーのトークルーム管理からリッチメニューに移動し、作成をクリックします。
コンテンツ設定でテンプレートを選択から三分割のメニューを選択し、アクションにそれぞれ以下のテキストを設定します。
- 新規登録
- 登録情報の確認
- 登録情報の削除
6.動作確認
新規登録→登録先を選択→名前を入力→登録確認 でテストと登録してみます。
登録した名前でGoogleフォームを送信して正常に通知されていれば完成です。実際に使用する際は、出入りする場所にQRコードを置いてGoogleフォームのURLを共有しておくといいと思います。QRコードはこちらのサイトで作成できます。
参考
- Googleフォームの回答内容をLINEで通知する
- GASを用いLINE Messaging APIのフォローイベントでuserIdをスプレッドシートに転記する
- 【LINE Botの作り方】お金をかけずにLINEのMessaging APIの投稿(push)と返信(replay)を試してみる。
- LINE BOT×GASでスプレッドシートに書き込み!友達一覧を作ろう
- LINE BOTで「クイックリプライ」を使う
- Google Apps ScriptでDay.jsライブラリを使ってみた
- LINE BOTからGoogleカレンダーに予定の追加&一週間の予定の確認を行う
作成したコードはこちらのGithubに上げています。
https://github.com/days5893/lineBot