Googleフォームの申込みをメールで受信する方法(GAS)

IMG:https://rin-design.com/wp-content/uploads/2024/10/googleform_and_gas.png

googleフォームでイベントなどの募集をする際、応募があったことを随時メールで知らせてくれたら便利ですよね.そのための設定をgoogleApps(GAS)で行なう手順です.PCでの作業を想定しています.

googleフォームの設定方法はこちらで紹介しています.
→ googleフォームの使い方{:target="new"}

1.Googleフォームとスプレッドシートのリンク

最初に、Googleフォームの回答を保存するために、googleフォームとgoogleスプレッドシートをリンクします.

Googleフォームを開き、右上の「回答」タブをクリック.

「スプレッドシートの作成」ボタンを押して、新しいスプレッドシートに回答を保存します.

2.GAS(google Apps)を開く

Googleスプレッドシートで「拡張機能」→「Apps Script」をクリックして、Google Apps Scriptエディタを開きます.エディタに記載してある関数は上書きして大丈夫です.

スクリプトの記述例です.
通知を送るメールアドレス(あなたのメールアドレス)と、subjectの欄はご自身で設定してください.


function onFormSubmit(e) {
// フォームの回答を含むシートのヘッダー(質問項目)を取得
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0]; // シートの最初の行(質問項目)

// フォーム送信時の回答
var responses = e.values;

var email = "あなたのメールアドレス"; // 通知を受け取るメールアドレス
var subject = "新しいフォームの回答があります";

// メッセージ本文の作成
var body = "フォームの回答が送信されました:\n\n";
body += "タイムスタンプ: " + responses[0] + "\n\n"; // タイムスタンプの追加

// 質問と回答を結合
for (var i = 1; i < headers.length; i++) {
body += headers[i] + ": " + responses[i] + "\n";
}

// メール送信
MailApp.sendEmail(email, subject, body);
}


ディスクのような小さなアイコン(スクリプト記入欄のすぐ上にあります)をクリックして、スクリプトを保存します.この時、左上にあるプロジェクト名も、わかりやすいものに変えておいたほうがいいでしょう.

3.トリガーの設定

スクリプトが完成したら、フォーム送信時に自動で実行されるようにトリガーを設定します.

「トリガー」は画面の左側メニューにあります.左側にある 時計のアイコン をクリックしてトリガー設定画面に進みます.

トリガー画面の画面右下で、「トリガーを追加」 をクリックします.フィルタを追加、とは違いますので注意してください.

トリガーを次のように設定します.

実行する関数: onFormSubmit
イベントのソース: 「スプレッドシートから」
イベントの種類を選択: 「フォーム送信時」

エラー通知設定 毎日通知を受け取る.(ここは必要に合わせて設定してください.)

保存します.
保存の際、二、三注意事項がありますので、次の項目も確認してください.

保存時の注意

保存する際、ブラウザに広告のポップアップブロックがかかっているとキャンセルされることがあります.ひっかかってしまったら一時的に外して作業する必要があります.

さらに「Google hasn’t verified this app」というポップアップが出ることがあります.googleはこのアプリを検証していない、ということなので、advanced あるいは「詳細」という文字をクリックして表示される「go to (あなたのプロジェクト名)(unsafe)」をクリックして認証します.

認証を求められるこのプロセスはアプリを保存する初回のみらしいです.

4.トリガーの保存と動作確認

認証が完了したら、ご自身で実際にGoogleフォームに回答して、スクリプトが正しく動作しているか確認します.メールが届けば設定は成功です.
同時にスプレッドシートでも集計されているため、いろいろ活用できそうです.