Googleフォームの回答を確認するために、毎回スプレッドシートを開くのは手間がかかります。特に回答が不定期に届く場合、通知がなければ気付くのが遅れてしまうこともあるでしょう。そこで便利なのが、GoogleスプレッドシートのApps ScriptとonFormSubmitトリガーを使った自動メール通知の仕組みです。この記事では、回答が届いた瞬間に指定のメールアドレスへ通知を送る方法を、手順を追って解説します。
【要点】フォーム回答の自動メール通知を実現する3つの要素
- onFormSubmitのインストーラブルトリガー: フォーム送信をイベントとしてスクリプトを実行するトリガーです。回答が届くたびに自動で起動します。
- MailApp.sendEmailメソッド: スプレッドシートのデータを元にメールを送信するApps Scriptの関数です。件名や本文を自由にカスタマイズできます。
- スクリプトの承認とトリガーの設定: 正しく動作させるために、初回の承認とプロジェクトへのトリガー登録が必要です。この手順を踏まないとメールは送信されません。
ADVERTISEMENT
目次
onFormSubmitトリガーの概要と仕組み
onFormSubmitトリガーは、Googleフォームの回答がスプレッドシートに記録されたタイミングでスクリプトを実行する仕組みです。フォームと連携したスプレッドシートにApps Scriptを追加し、特定の関数を紐付けることで機能します。この際、使用するのは「インストーラブルトリガー」と呼ばれる種類のトリガーです。単純な「シンプルトリガー」ではメール送信に必要な認証を通過できないため、必ずインストーラブルトリガーを設定します。トリガーが起動すると、スクリプト内で記述した処理(例えば回答内容をメールにまとめる)が自動で行われます。これにより、手動でシートを確認する必要がなくなります。
フォーム回答時にメール通知を設定する手順
手順1: フォーム連携スプレッドシートを開き、スクリプトエディタを起動する
- フォームの回答先スプレッドシートを開く
Googleフォームで「回答」タブを開き、スプレッドシートのアイコンをクリックしてリンク先のシートを開きます。すでにシートが作成されている場合はそのまま開いてください。 - 拡張機能メニューからApps Scriptを開く
メニューバーの「拡張機能」→「Apps Script」を選択し、スクリプトエディタを起動します。新しいプロジェクトが作成されます。
手順2: メール送信用の関数を記述する
- スクリプトエディタにコードを入力する
エディタに次のサンプルコードをコピー&ペーストします。function sendNotification(e) {
var sheet = e.source.getActiveSheet();
var row = e.range.getRow();
var data = sheet.getRange(row, 1, 1, sheet.getLastColumn()).getValues()[0];
var recipient = "your-email@example.com";
var subject = "新しいフォーム回答がありました";
var body = "回答者: " + data[1] + "\n内容: " + data[2];
MailApp.sendEmail(recipient, subject, body);
} - 必要に応じてコードをカスタマイズする
メールの宛先や件名、本文に含めるデータの列番号を調整します。列番号はスプレッドシートの列の並びに合わせて変更してください。 - スクリプトを保存する
フロッピーディスクのアイコンをクリックするか、Ctrl+Sで保存します。プロジェクト名は任意の名前に変更できます。
手順3: インストーラブルトリガーを設定する
- トリガー設定画面を開く
スクリプトエディタの左側メニューにある「トリガー」アイコン(時計マーク)をクリックします。 - トリガーを追加する
右下の「トリガーを追加」ボタンをクリックし、設定画面を開きます。 - 各項目を選択する
「実行する関数」でsendNotificationを選び、「イベントのソース」を「スプレッドシートから」、「イベントの種類」を「フォーム送信時」に設定します。 - 通知設定と保存
「エラー通知」は必要に応じて「毎日」または「なし」を選びます。最後に「保存」をクリックします。 - 承認を実行する
初回保存時には権限の承認が求められます。自分のGoogleアカウントを選び、スクリプトがメール送信やスプレッドシートへのアクセスを許可します。
手順4: 動作確認を行う
- テスト用のフォーム回答を送信する
実際にフォームを開いて回答を1件送信します。 - メールが届くか確認する
設定した宛先にメールが届けば成功です。届かない場合はスクリプトのエラーログを確認してください。
onFormSubmitトリガー使用時の注意点とよくあるトラブル
メールが送信されない
最も多い原因は、トリガーが正しく設定されていないことか、承認が完了していないことです。スクリプトエディタの「実行」メニューから一度手動で関数を実行してみて、エラーが出る場合はコードの問題を特定できます。また、トリガー設定画面で「イベントの種類」が「フォーム送信時」になっているか確認しましょう。
メールの宛先や件名が正しく反映されない
コード内の列番号が実際のスプレッドシートとずれている可能性があります。フォームの回答が1行目から始まる場合、data[0]がタイムスタンプ、data[1]が最初の質問の回答というように対応します。シートの構成を確認してコードを修正してください。
トリガーが二重に設定される
スクリプトを編集して再保存するたびに、誤ってトリガーを追加してしまうことがあります。トリガー設定画面で重複したトリガーが存在しないか確認し、不要なものは削除しましょう。1つの関数に対して1つのトリガーで十分です。
ADVERTISEMENT
シンプルトリガーとインストーラブルトリガーの比較
| 項目 | シンプルトリガー | インストーラブルトリガー |
|---|---|---|
| 設定方法 | 関数名をonFormSubmitと命名するだけ | トリガー設定画面から明示的に登録する |
| 認証の必要性 | 不要だが制限あり | 初回のみ承認が必要(一回限り) |
| メール送信可否 | 不可(MailApp.sendEmailが使えない) | 可能(認証済みのため) |
| エラー通知 | なし | 設定すればメールで通知される |
| 推奨用途 | 単純なログ記録など | メール送信や外部API連携など |
フォーム回答のメール通知には、必ずインストーラブルトリガーを使用してください。シンプルトリガーでは必要な権限が不足しているため、メール送信ができません。
まとめ
この記事では、onFormSubmitトリガーとApps Scriptを使って、Googleフォームの回答が届いた瞬間にメール通知を送る方法を解説しました。手順に沿ってスクリプトとトリガーを設定すれば、手動確認の手間を省き、迅速な対応が可能になります。まずはサンプルコードをそのまま試し、慣れてきたら件名に回答内容を含めるなどカスタマイズしてみてください。応用として、Slack通知やGoogle Chatへの投稿も同様の仕組みで実現できます。ぜひ活用して、業務の効率化を図ってみてください。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
- 【Googleスプレッドシート】GOOGLEFINANCE関数で株価・為替を取得!リアルタイムデータの呼び出し
- 【Googleスプレッドシート】印刷範囲を指定して印刷!特定範囲だけPDFや紙に出す手順
- 【Googleスプレッドシート】複合グラフで棒と折れ線を同時表示!2軸グラフの作り方
- 【Googleスプレッドシート】FILTER関数で条件に合う行だけ抽出!数式1つで動的な絞り込み
- 【Googleスプレッドシート】フィルタ表示で他の人の表示を変えずに絞り込み!共有時の使い分け
- 【Googleスプレッドシート】重複データを抽出して表示!COUNTIFと条件付き書式の併用
- 【Googleスプレッドシート】新しいスプレッドシートを作成する3つの方法!ドライブ・URL・テンプレート
- 【Googleスプレッドシート】ARRAYFORMULAで列全体に数式を一括適用!セル分の入力を不要に
- 【Googleスプレッドシート】データ範囲を動的に伸縮させる!INDIRECTと参照範囲のコツ
- 【Googleスプレッドシート】共有解除と権限の取り消し!アクセスを完全に閉じる手順
