Googleフォーム送信後に『自動返信メール』を送る方法

目次

Googleフォーム送信後に「自動返信メール」を送る方法

Googleフォームで回答を受け付けたら、自動で受付メールを送りたい──そんなときの設定方法を、GASなし(標準機能)GASあり(自由に文面をカスタム)の2パターンで解説します。まずは簡単に始めたい方は「GASなし」から、文面を自由にしたい方は「GASあり」へ進んでください。

🧭 比較:GASなし/GASあり の違い

方式メリット制約
GASなし(標準機能)設定だけで即使用/ノーコード件名・本文などを自由にカスタム不可/テンプレ固定
GASあり(Apps Script)件名・本文・差出人名・差し込みが自由/条件分岐もOK最初に少しコード設定と権限付与が必要

① GASなし:標準機能で「自動返信メール(回答のコピー)」を送る

Googleフォームの標準機能「回答のコピーをメールで送信」を使うと、回答者に自動でメールが届きます。設定は数クリックです。

  1. フォーム編集画面で右上の歯車アイコン「設定」を開く
  2. 全般タブ → 「メールアドレスを収集」をON
  3. 同じく全般タブ → 「回答のコピーを送信」を
    • 「要望に応じて」または
    • 「常に」から選択
  4. 保存 → テスト送信

ポイント:この方法はカンタンですが、件名や本文、レイアウトは基本的に変更不可です。
よりリッチな文面や差し込み、条件分岐を行いたい場合は、次の「GASあり」へ。

② GASあり:Apps Scriptで自由な自動返信メールを送る

フォーム送信時(onFormSubmit)にGASを実行して、任意の件名・本文で自動返信します。差し込み・HTMLメール・署名・条件分岐も追加できます。

準備:メールアドレスの取得方法を決める

  • 方法A:「設定 → メールアドレスを収集」をON(推奨/安全)
  • 方法B:質問として「メールアドレス」項目を作る(必須/検証ON)

手順

  1. フォーム編集画面 → メニュー「スクリプトエディタ」を開く(フォームに紐づくGAS)
  2. 下記スクリプトを貼り付けて保存
  3. 左の「時計」アイコン → 「トリガーを追加」→ 関数 onFormSubmit /イベントのソース「フォームから」/イベントの種類「フォーム送信時」
  4. 初回は権限承認 → テスト送信で動作確認

💻 最小コード:プレーンテキストで自動返信

フォームの1問目がメールアドレスの想定です(タイトルは任意)。

function onFormSubmit(e) {
  const items = e.response.getItemResponses();
  const email = items[0].getResponse(); // 1問目=メールアドレス
  const subject = "【自動返信】お問い合わせを受け付けました";
  const body = [
    "この度はお問い合わせありがとうございます。",
    "担当者が内容を確認し、折り返しご連絡いたします。",
    "",
    "――",
    "※このメールは自動送信です。ご返信には対応しておりません。"
  ].join("\n");
  GmailApp.sendEmail(email, subject, body);
}

✨ 実用コード:差し込み+HTMLメール+ログ記録

質問タイトルで回答を拾い、HTMLで見やすく返信。さらに回答スプレッドシートへ「返信済み」タイムスタンプを残します。

/**
 * フォーム送信時に自動返信(HTML)&「返信済み」ログを残す
 * 前提:
 *  - 質問に「メールアドレス」「お名前」「お問い合わせ内容」がある想定
 *  - フォームはスプレッドシートへリンク済み(回答保存)
 */
function onFormSubmit(e) {
  const data = toObject_(e.response.getItemResponses()); // タイトル:回答 のMap
  const email = data["メールアドレス"];
  const name = data["お名前"] || "お客様";
  const inquiry = data["お問い合わせ内容"] || "";

  const subject = "【自動返信】お問い合わせを受け付けました";
  const htmlBody = [
    "<p>" + esc_(name) + " 様</p>",
    "<p>この度はお問い合わせありがとうございます。以下の内容で受け付けました。</p>",
    "<hr>",
    "<p><strong>お問い合わせ内容</strong><br>" + nl2br_(esc_(inquiry)) + "</p>",
    "<hr>",
    "<p>担当者より通常1〜2営業日以内にご連絡いたします。</p>",
    "<p>※このメールは自動送信です。</p>"
  ].join("");

  GmailApp.sendEmail(email, subject, "", {
    htmlBody: htmlBody,
    name: "自動返信システム"
  });

  // 回答シートに「返信済み」ログ
  logReplied_();
}

// ========== ヘルパー ==========
function toObject_(itemResponses) {
  const obj = {};
  itemResponses.forEach(ir => obj[ir.getItem().getTitle()] = ir.getResponse());
  return obj;
}
function esc_(s){ return String(s).replace(/[<>&"]/g, c => ({"&":"&","<":"<",">":">",'"':"""}[c])); }
function nl2br_(s){ return String(s).replace(/\n/g,"<br>"); }

function logReplied_(){
  try{
    const form = FormApp.getActiveForm();
    const destId = form.getDestinationId();        // 回答シートのスプレッドシートID
    if(!destId) return;
    const ss = SpreadsheetApp.openById(destId);
    const sh = ss.getSheets()[0];
    const lastRow = sh.getLastRow();
    const headers = sh.getRange(1,1,1,sh.getLastColumn()).getValues()[0];
    let col = headers.indexOf("返信済み") + 1;
    if(col === 0){ col = headers.length + 1; sh.getRange(1,col).setValue("返信済み"); }
    sh.getRange(lastRow, col).setValue(new Date());
  }catch(err){ Logger.log(err); }
}

🧰 運用しやすく:文面・差出人をプロパティで管理

コードを書き換えずに文面や差出人名を変更したい場合は、スクリプトのプロパティを使います(「設定 → プロジェクトのプロパティ → スクリプトのプロパティ」)。

function onFormSubmit(e){
  const P = PropertiesService.getScriptProperties();
  const SENDER = P.getProperty("SENDER_NAME") || "自動返信システム";
  const FOOTER = P.getProperty("MAIL_FOOTER") || "\n――\n自動送信メール";

  const data = toObject_(e.response.getItemResponses());
  const email = data["メールアドレス"];
  const name = data["お名前"] || "お客様";

  const subject = P.getProperty("MAIL_SUBJECT") || "【自動返信】お問い合わせありがとうございます";
  const body = [
    name + " 様",
    "",
    "お問い合わせありがとうございます。内容を受け付けました。",
    FOOTER
  ].join("\n");

  GmailApp.sendEmail(email, subject, body, { name: SENDER });
}

推奨キー例: SENDER_NAME / MAIL_SUBJECT / MAIL_FOOTER

⚠️ よくある詰まりポイント

  • 動かない:インストール型の「フォーム送信時」トリガーを設定しているか確認(関数名だけでは動きません)。
  • 届かない:迷惑メール振り分け/誤ったメール入力。まずは自分のアドレスでテスト。
  • 差し込みが空欄:質問タイトルを変更するとマッピングが崩れます。コード側のキー名を合わせるか、質問に応答検証(メール形式)を設定する。
  • 上限:Gmailの送信上限あり(Workspaceのプランによる)。大量配信はバッチ化・時間分散を検討。

🌱 まとめ

まずはGASなしで手早く「回答のコピー」を送る→運用で「件名や本文をカスタムしたい」段階になったらGASありへ移行、がスムーズです。GASなら差し込み・HTML・署名・条件分岐・ログ記録まで一気通貫で自動化できます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次