• Data Current

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

最終更新: 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ダッシュボードから確認することができます。

https://script.google.com


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


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

0回の閲覧