Googleフォームの回答をメール通知するための方法3選

2019.06.06

こんにちは。初めてコラムを掲載します。千葉と申します。所属はデータテクノロジーチームです。

 

社内向けの業務支援として、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ダッシュボードから確認することができます。

https://script.google.com

 

上限を迎えないように、1スクリプトあたりの処理時間を短くしていくよう心がけたいです。

 

ここまで読んでいただき、ありがとうございました。