Googleフォームの回答をメール通知するための方法3選
最終更新: 2020年5月26日
こんにちは。初めてコラムを掲載します。
千葉と申します。所属はデータテクノロジーチームです。
社内向けの業務支援として、Googleフォームに回答があった場合に通知メールを送信するGoogle Apps Script(以降、GASと表記します)を書きました。
今回は、Googleフォームで回答が行われたら通知メールを送信したいとき、どんな方法があるのか?という話をしたいと思います。
方法1.Googleスプレッドシートの「ツール」⇒「通知ルール」から通知設定を行う
この方法は、GASを使いません。スプレッドシートの機能で通知設定を行います。
スクリプトを書く必要はないため、簡単に設定することができます。
GoogleフォームにはGoogleスプレッドシートに回答を書き出す、という機能があります。
この機能を使うと、Googleスプレッドシートのシートに対してGoogleフォームを紐づける(リンクさせる)ことができます。
Googleフォームとリンクしたスプレッドシートで、通知ルールの設定を行います。

「ツール」⇒「通知ルール」設定画面。通知を受け取りたいアカウント自身が設定を行う必要があります。

フォームが送信されたとき送られるメール。
画像のように、本文にはフォームの送信内容が記載されないため、内容を知りたい場合は、スプレッドシートを開いて確認します。
この方法の場合、通知を受けたいアカウント自身が通知ルール設定を行うので、通知を受けたいアカウントがフォームとリンクしたスプレッドシートの閲覧権限を持っている必要があります。
通知ルールをアカウント側で解除することもできるので、決められたメンバーに強制的に通知メールを送信したい場合にはGASで送信先を定義します。
方法2.Googleフォームの「スクリプトエディタ」にメール送信のためのGASを書いて、トリガーを設定する

Googleフォームのメニューからスクリプトエディタを立ち上げてメール送信GASを書き、フォーム送信時にスクリプトが動作するようにトリガーを設定します。フォームをスプレッドシートにリンクしなくても動かすことができます。
Googleアプリケーション(フォーム、スプレッドシート、ドキュメント など)に対して紐づいているGASプロジェクトはコンテナバインドスクリプトと呼ばれています。Googleフォームからスクリプトエディタを立ち上げると、フォームをコンテナとするGASプロジェクトが作成されます。
方法2、方法3はコンテナとなるものがフォームかスプレッドシートかという違いがあり、トリガーに設定した関数が動くときに渡される引数が異なります。 公式のリファレンスにトリガーごとの引数の内容が記載されています。
https://developers.google.com/apps-script/guides/triggers/events
Googleフォームをコンテナとする場合、フォーム送信トリガーの引数としてFormResponseオブジェクトを取得できます。
ここから、フォームの回答編集用リンクの取得など、Googkeフォーム側の操作を行うことができます。スプレッドシートをコンテナとする場合やコンテナをもたないGASプロジェクトでも同じことができますが、フォームから実行したほうがやや簡易です。
方法3.Googleスプレッドシートの「スクリプトエディタ」にメール送信のためのGASを書いて、トリガーを設定する

フォームとリンクしたスプレッドシートのスクリプトエディタでメール送信GASを書き、フォーム送信時にスクリプトが動作するようにトリガーを設定します。
スプレッドシートをコンテナとする場合、トリガー発火時の引数からはフォームの回答内容を取得することができます。
また、1つのスプレッドシートに対して複数のフォームをリンクした状態でフォーム送信トリガーを設定すると、すべてのフォームの回答を1つのトリガーで監視することができます。
シート名で処理を分岐させることで、回答元のフォーム毎に別の処理を行うことも可能です。
冒頭で触れた社内向けのメール通知スクリプトでは、
・メール本文にフォームの回答内容を記載したかったこと
・複数のフォームに対するメール通知処理を1か所で管理したかったこと
を踏まえて、方法3をとることにしました。
GASのトリガー設定には利用上限が設定されていますので、上限を超過しないように注意が必要です。
上限値はGASのリファレンスに掲載されています。
https://developers.google.com/apps-script/guides/services/quotas
この記事を書いている時点では、トリガー自体の作成上限は1ユーザーあたり20個です。
スクリプト自体の実行時間は6分以内となっています。
加えて、G Suiteアカウントのグレードごとに上限値は異なるのですが、
1日あたりのトリガーからのスクリプト実行時間上限値も掲載されています。
GASの一覧や設定中のトリガー、自分のアカウントで実行したGAS関数の履歴や処理にかかった時間、成功/失敗のステータス等をGASダッシュボードから確認することができます。
上限を迎えないように、1スクリプトあたりの処理時間を短くしていくよう心がけたいです。
ここまで読んでいただき、ありがとうございました。
210回の閲覧