20
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

GoogleForm×GAS×Googleスプレッドシートで入退室通知Botを作ってみた

Last updated at Posted at 2022-03-26

Googleフォームが送信されると、Lineに入退室が通知されるBotを制作しました。

経緯

 私は工学部2年の大学生です。課外活動の一環で、学習塾の生徒の入退室を保護者へ通知するLinebotを作ることになりました。そこで調べたところ、こちらの記事を見てフォームで入退室を記録する方法を思いつき制作しました。

動作イメージ

Screenshot_20211209-100042_LINE.png

 最初に通知する名前をLine Botで登録します。 新規登録→登録先を選択→名前を入力→登録確認 の手順で登録します。

Screenshot_20211209-110848_LINE (1).png

登録後、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
  • ユーザープロフィールを取得する

やったこと

  1. Line Developersを登録、設定
  2. 情報登録用にGoogle Spread Sheetの作成
  3. 入退室記録用にGoogle Formの作成
  4. GASの作成
  5. リッチメニューの作成
  6. 動作確認

1.LineDevelopersを登録、設定

  • Line Developersに登録します。手順はこちらです。
  • Line Botを作成します。手順はこちらです。

※「Webhook URL」の部分はGASを作成する際に設定するので飛ばしていいです。

2.Google Spread Sheetの作成

Screenshot_20211209-110848_LINE (1).png

Google Driveから 新規>Googleスプレッドシート で画像のような表を作成し、シート名を「userlist」に変更します。

3.Google Formの作成

Screenshot_20211209-110848_LINE (1).png

この形式のGoogleフォームを作成し、回答先を作成したスプレッドシートに設定します。
するとスプレッドシートに新しくシートが作られるので、シート名を「form」に変更します。

4.GASの作成

Screenshot_20211209-110848_LINE (1).png

スプレッドシートの編集画面の 拡張機能 > Apps Script からGASのファイルを作成します。ファイルの中身はこちらです。通知される日付の形式を整えるためにdayjsというライブラリを使っているので、こちらの記事を参考に設定します。

コードの置き換え

自分の環境で動かしたい場合は、コード中の「**********」になっている部分を環境に合わせて置き換えます。

doPost.gsのchannel_tokenの値をLineのアクセストークンに設定します。

doPost.gs
const channel_token = "**********"; 
...略

doPost.gsのspreadsheetの値をGoogleスプレッドシートのIDに設定します。

doPost.gs
...略
const spreadsheet = SpreadsheetApp.openById("**********"); 
...略

updateForm.gsのformの値をGoogleフォームのIDに設定します。

doPost.gs
...略
 const form = FormApp.openById('**********'); 
...略

トリガーの設定

Screenshot_20211209-110848_LINE (1).png

フォームを送信した際に実行されるトリガーを設定します。画像と同じ設定でトリガーを追加します。

デプロイ

image.png

GASの編集画面のデプロイ > 新しいデプロイ > 種類の選択 から「ウェブアプリ」を選び、 アクセスできるユーザーを「全員」にしてデプロイします。初回デプロイ時は承認が求められるので、詳細から安全ではないページにアクセスするをクリックします。

Webhook URLの設定

image.png
デプロイ完了後にウェブアプリのURLが出るので、これをコピーしてwebhookURLを設定します。手順はこちらです。

5.リッチメニューの作成

image.png
Line公式アカウントの管理画面にログインし、作成したLineBotのアカウントをクリックします。
image.png
サイドバーのトークルーム管理からリッチメニューに移動し、作成をクリックします。
image.png

コンテンツ設定でテンプレートを選択から三分割のメニューを選択し、アクションにそれぞれ以下のテキストを設定します。

  • 新規登録
  • 登録情報の確認
  • 登録情報の削除

6.動作確認

Screenshot_20211209-110848_LINE (1).png

新規登録→登録先を選択→名前を入力→登録確認 でテストと登録してみます。

Screenshot_20220219-150414_LINE.png
登録した名前でGoogleフォームを送信して正常に通知されていれば完成です。実際に使用する際は、出入りする場所にQRコードを置いてGoogleフォームのURLを共有しておくといいと思います。QRコードはこちらのサイトで作成できます。

参考

作成したコードはこちらのGithubに上げています。
https://github.com/days5893/lineBot

20
19
8

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
19

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?