Googleフォームで自動返信メールを送る方法|回答者へGASで自動送信

Google Workspace

Googleフォームで申し込みや問い合わせを受け付けていると、回答後に毎回こんな作業をしていないでしょうか。

  • 回答内容を確認する
  • 回答者のメールアドレスをコピーする
  • Gmailを開く
  • 定型文を貼り付ける
  • 名前や日付を書き換える
  • メールを送信する

1件なら数分でも、毎週・毎月繰り返すと意外と手間がかかります。

この記事では、Googleフォームに回答が届いたら、回答者へ自動でメールを送る仕組みをGoogle Apps Script(GAS)で作ります。

実際にGoogleフォームを作成して動作確認したところ、

  • 回答者名の自動差し込み
  • 参加希望日の自動差し込み
  • フォーム回答をきっかけとしたメール送信

まで正常に動作しました。

途中で、Apps Script上では正常終了しているのにメールがすぐ届かず、10分以上遅れて届くケースもありました。

その実体験も含めて、設定手順とつまずきやすいポイントを紹介します。

✅ この記事は実際に動作検証しています

Googleフォームからテスト回答を送信し、GASのフォーム送信トリガーを使って回答者へ自動返信メールが届くことを確認しました。送信済みに表示されたあと受信まで時間がかかるケースも実際に確認しています。

検証結果: フォーム送信 → GAS自動実行 → メール送信成功 / 回答者アドレスへの受信確認済み / 配送遅延ケースも確認

Googleフォーム標準機能だけではダメ?

Googleフォームには、回答者へ回答内容の控えを送る機能があります。

そのため、

フォーム回答後にメールを送るだけなら、GASを使わなくてもいいのでは?

と思うかもしれません。

単純に回答内容のコピーを回答者へ送るだけなら、標準機能で足りるケースもあります。

一方で、今回のように、

  • 独自の件名を設定したい
  • 「○○様」のように名前を差し込みたい
  • 回答内容の一部だけを本文に使いたい
  • 独自の案内文を送りたい
  • 将来、回答内容によって処理を分岐したい

といった場合は、GASを使うと柔軟に設定できます。

やりたいこと標準機能GAS
回答内容の控えを送る○○
独自の件名を設定する△○
独自の本文を作る△○
回答者名を差し込む△○
必要な回答だけ本文に使う△○
条件によって処理を変える△○
他の自動処理につなげる△○

今回の記事では、回答者へ独自の件名・本文で受付メールを自動送信することを目的にするため、GASを使用します。

今回作る自動返信メール

今回は、次の3項目を持つGoogleフォームを使います。

  • お名前
  • メールアドレス
  • 参加希望日

回答者がフォームを送信すると、自動で次のようなメールが届きます。

件名:
【受付完了】お申し込みありがとうございます

山田太郎 様

お申し込みありがとうございます。
以下の内容で受付しました。

参加希望日:2026/09/25

当日はよろしくお願いいたします。

TaskLess Lab

この記事内に登場する「山田太郎」などの名前は、すべてテスト用の架空名です。

1. Googleフォームを作成する

まずGoogleフォームを作成します。

今回はテスト用として、

TaskLess Lab 自動返信テスト

というフォームを作りました。

質問項目は次の3つです。

  1. お名前
  2. メールアドレス
  3. 参加希望日

今回はすべて必須回答に設定しています。

自動返信の仕組みを試すだけなら、最初から複雑なフォームにする必要はありません。

2. 回答先をGoogleスプレッドシートに接続する

次に、Googleフォームの回答をGoogleスプレッドシートへ保存します。

Googleフォームの「回答」画面からスプレッドシートを作成すると、今回の環境では次の列が作られました。

列内容
Aタイムスタンプ
Bお名前
Cメールアドレス
D参加希望日

実際に回答すると、1回答につき1行ずつ追加されます。

ブログなどでスクリーンショットを公開する場合は、実際のメールアドレスなど個人情報が写り込んでいないか確認してください。

3. Apps Scriptを開く

回答先のGoogleスプレッドシートを開き、

「拡張機能」→「Apps Script」

を選択します。

ここに、自動返信メールを送る処理を書きます。

4. 自動返信用のGASコードを貼り付ける

今回、最終的に使用したコードはこちらです。

function sendAutoReply(e) {
  const responses = e.namedValues;

  const name = responses["お名前"]?.[0];
  const email = responses["メールアドレス"]?.[0];
  const desiredDate = responses["参加希望日"]?.[0];

  console.log("name: " + name);
  console.log("email: " + email);
  console.log("desiredDate: " + desiredDate);

  if (!email) {
    console.log("メールアドレスを取得できませんでした");
    return;
  }

  const subject = "【受付完了】お申し込みありがとうございます";

  const body =
    name + " 様\n\n" +
    "お申し込みありがとうございます。\n" +
    "以下の内容で受付しました。\n\n" +
    "参加希望日:" + desiredDate + "\n\n" +
    "当日はよろしくお願いいたします。\n\n" +
    "TaskLess Lab";

  MailApp.sendEmail({
    to: email,
    subject: subject,
    body: body
  });

  console.log("メール送信完了: " + email);
}

コードを貼り付けたら保存します。

フォームの質問名とコードを一致させる

このコードでは、

responses["お名前"]
responses["メールアドレス"]
responses["参加希望日"]

のように、Googleフォームの質問名を使って回答内容を取得しています。

そのため、フォーム側の質問タイトルとコード内の名称を一致させてください。

例えば、Googleフォーム側が、

氏名

となっているのに、コード側が、

responses["お名前"]

となっている場合、その回答を正しく取得できません。

列番号ではなく質問名で取得する理由

最初のテストでは、次のように回答データを列番号で取得する方法も試しました。

const values = e.values;

const name = values[1];
const email = values[2];
const desiredDate = values[3];

この方法でも、列構成が固定されていれば利用できます。

ただし、あとからフォーム項目を追加したり並び替えたりすると、番号と質問内容の関係が分かりにくくなります。

そこで今回は、

e.namedValues

を使用しました。

質問名がそのままコードに出るため、どの回答を取得しているのか分かりやすいというメリットがあります。

5. フォーム送信時に自動実行するトリガーを設定する

コードを貼り付けただけでは、自動返信は動きません。

Apps Script左側メニューから「トリガー」を開き、新しいトリガーを追加します。

今回の設定は次の通りです。

  • 実行する関数:sendAutoReply
  • 実行するデプロイ:Head
  • イベントのソース:スプレッドシートから
  • イベントの種類:フォーム送信時

これで、

Googleフォームへ回答
↓
スプレッドシートへ回答が追加
↓
sendAutoReply が自動実行
↓
回答者へメール送信

という流れになります。

6. 初回はGoogleアカウントの権限承認を行う

初めてApps Scriptからメール送信を行う場合、Googleアカウントの権限確認画面が表示されます。

今回のテストでも、Apps Scriptが必要な権限を使用するための承認画面が表示されました。

自分で作成したスクリプトであることを確認したうえで、必要な権限を許可します。

第三者から受け取った内容不明のスクリプトの場合は、コードを確認せずに権限を許可しないよう注意してください。

7. 実際にフォームから回答してテストする

設定が終わったら、実際にGoogleフォームから回答を送信します。

今回はテストとして、

  • お名前:山田太郎
  • メールアドレス:テスト用メールアドレス
  • 参加希望日:2026/09/25

として送信しました。

その結果、自動返信メールが届きました。

メール本文には、

  • 回答者名
  • 参加希望日

が正しく差し込まれていました。

日本語の文字化けもありませんでした。

8. Apps Scriptの実行履歴も確認する

Apps Script左側の「実行数」を開くと、スクリプトの実行履歴を確認できます。

今回のテストでは、

  • 関数:sendAutoReply
  • 種類:トリガー
  • ステータス:完了

となっていました。

自動返信メールが届かない場合は、まずここを見ると原因を切り分けやすくなります。

メールが届かないときの確認ポイント

今回の検証では、少しややこしい現象が起きました。

フォームを送信したあと、

Apps Scriptの実行履歴では「完了」になっているのに、メールが届かない

という状態になりました。

迷惑メールフォルダも確認しましたが、すぐには見当たりませんでした。

まずMailAppそのものが動くかテストした

原因を切り分けるため、フォームを介さずにメールだけを送るテスト関数を作りました。

function testSendEmail() {
  const email = "テスト用メールアドレス";

  MailApp.sendEmail({
    to: email,
    subject: "TaskLess Lab メール送信テスト",
    body: "Apps Scriptからの直接送信テストです。"
  });

  console.log("送信処理完了: " + email);
}

この関数を直接実行したところ、

  • Yahooメールに届く
  • Gmailの送信済みにも表示される

ことを確認できました。

つまり、Apps Scriptからメールを送る機能そのものには問題がないと切り分けられました。

今回のケースでは10分以上遅れて届いた

その後しばらく待つと、最初に届かなかった自動返信メールも後から到着しました。

今回の環境では、10分以上遅れて届いたケースがありました。

そのため、

Apps Scriptの実行履歴が「完了」だからといって、必ずしも即時にメールが届くとは限らない

ことが分かりました。

メールが届かない場合は、次の順番で確認すると切り分けしやすいです。

  1. Apps Scriptの実行履歴を確認する
  2. ステータスが「完了」か確認する
  3. 送信先メールアドレスが正しいか確認する
  4. 迷惑メールフォルダを確認する
  5. 少し時間を置いて再確認する

※今回の「10分以上」という時間は、実際のテストで発生した事例です。すべての環境で同じ遅延が発生するわけではありません。

よくあるつまずき

メールアドレスを取得できない

コード内の、

responses["メールアドレス"]

とGoogleフォーム側の質問名が一致しているか確認してください。

回答者名がundefinedになる

同じように、

responses["お名前"]

とGoogleフォーム側の質問タイトルが一致しているか確認します。

フォームを送信してもスクリプトが動かない

トリガー設定を確認します。

今回使用しているのは、

スプレッドシートから → フォーム送信時

のトリガーです。

実行履歴は「完了」なのにメールが届かない

今回の検証でも実際に発生しました。

まず、

  • メールアドレス
  • 迷惑メールフォルダ
  • Apps Scriptの実行履歴
  • ログ

を確認します。

異常がなければ、配送に時間がかかっている可能性もあります。

GASで自動返信するときの注意点

今回の方法は、小規模なフォーム受付や定型返信の自動化には便利です。

一方で、Apps Scriptによるメール送信には利用上限があります。

そのため、

  • 数千人規模のメール配信
  • メールマガジン
  • 大量の一斉送信

といった用途には、専用のメール配信サービスを検討した方が適しています。

この記事では、フォーム回答者へ受付メールを1通返すような用途を想定しています。

こんな業務に応用できる

今回の仕組みは、単純な受付メール以外にも応用できます。

  • セミナー申し込み
  • イベント予約
  • 問い合わせ受付
  • 資料請求
  • 教室・スクール申し込み
  • 社内申請
  • アンケート受付

さらにGASを拡張すれば、

  • 回答内容によってメール文面を変更する
  • 管理者にも通知する
  • Googleカレンダーへ登録する
  • Slackへ通知する
  • スプレッドシート上で別の処理を行う

といった自動化にも発展できます。

毎回繰り返す定型作業は、自動化候補になる

今回作った仕組み自体はシンプルです。

しかし、

回答を確認して、同じようなメールを毎回送る

という作業を人間が行わなくて済むようになります。

1件あたり数分でも、月に何十回も発生すれば、積み上げるとそれなりの時間になります。

GoogleフォームとGASを組み合わせれば、

フォーム回答
↓
回答内容取得
↓
メール送信

まで自動化できます。

TaskLess Labでは、こうした「少し面倒だけど、何度も繰り返しているPC作業」を減らす方法を、実際に試しながら紹介していきます。

Googleフォームだけでなく、Gmailで受信した添付ファイルをGoogle Driveへ自動保存することもできます。

Gmailの添付ファイルをGoogle Driveへ自動保存する方法|GASで自動化
Gmailの添付ファイルをGoogle Driveへ自動保存する方法を実際の検証結果をもとに解説。GASコード、二重保存防止、処理済みラベル、時間主導トリガーによる自動実行まで紹介します。

まとめ

今回の設定手順は次の通りです。

  1. Googleフォームを作成する
  2. 回答先スプレッドシートを作成する
  3. Apps Scriptを開く
  4. 自動返信コードを設定する
  5. フォーム送信時トリガーを追加する
  6. 必要な権限を承認する
  7. 実際にフォームから回答する
  8. 自動返信メールを確認する

実際にテストした結果、自動返信メールは正常に送信できました。

また今回のテストでは、スクリプトが正常終了していてもメールが10分以上遅れて届くケースも確認しました。

自動返信メールがすぐ届かない場合は、慌ててコードを書き直す前に、

  • 実行履歴
  • ログ
  • 送信先メールアドレス
  • 迷惑メールフォルダ

を確認してみてください。

Googleフォームで毎回同じような返信メールを送っているなら、比較的取り入れやすい自動化のひとつです。

タイトルとURLをコピーしました