目次
Contents
Googleフォーム送信後に「自動返信メール」を送る方法
Googleフォームで回答を受け付けたら、自動で受付メールを送りたい──そんなときの設定方法を、GASなし(標準機能)とGASあり(自由に文面をカスタム)の2パターンで解説します。まずは簡単に始めたい方は「GASなし」から、文面を自由にしたい方は「GASあり」へ進んでください。
🧭 比較:GASなし/GASあり の違い
| 方式 | メリット | 制約 |
|---|---|---|
| GASなし(標準機能) | 設定だけで即使用/ノーコード | 件名・本文などを自由にカスタム不可/テンプレ固定 |
| GASあり(Apps Script) | 件名・本文・差出人名・差し込みが自由/条件分岐もOK | 最初に少しコード設定と権限付与が必要 |
① GASなし:標準機能で「自動返信メール(回答のコピー)」を送る
Googleフォームの標準機能「回答のコピーをメールで送信」を使うと、回答者に自動でメールが届きます。設定は数クリックです。
- フォーム編集画面で右上の歯車アイコン「設定」を開く
- 全般タブ → 「メールアドレスを収集」をON
- 同じく全般タブ → 「回答のコピーを送信」を
- 「要望に応じて」または
- 「常に」から選択
- 保存 → テスト送信
ポイント:この方法はカンタンですが、件名や本文、レイアウトは基本的に変更不可です。
よりリッチな文面や差し込み、条件分岐を行いたい場合は、次の「GASあり」へ。
② GASあり:Apps Scriptで自由な自動返信メールを送る
フォーム送信時(onFormSubmit)にGASを実行して、任意の件名・本文で自動返信します。差し込み・HTMLメール・署名・条件分岐も追加できます。
準備:メールアドレスの取得方法を決める
- 方法A:「設定 → メールアドレスを収集」をON(推奨/安全)
- 方法B:質問として「メールアドレス」項目を作る(必須/検証ON)
手順
- フォーム編集画面 → メニュー「スクリプトエディタ」を開く(フォームに紐づくGAS)
- 下記スクリプトを貼り付けて保存
- 左の「時計」アイコン → 「トリガーを追加」→ 関数
onFormSubmit/イベントのソース「フォームから」/イベントの種類「フォーム送信時」 - 初回は権限承認 → テスト送信で動作確認
💻 最小コード:プレーンテキストで自動返信
フォームの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・署名・条件分岐・ログ記録まで一気通貫で自動化できます。
