Googleフォームの回答内容によって自動返信メールを切り替える方法|GASで条件分岐

Googleフォームの回答内容に応じてGASで自動返信メールの件名と本文を切り替える方法 Google Workspace

「Googleフォームから問い合わせが届くたびに、内容を確認して返信メールを作っている。」

そんなことはありませんか?

例えば、会社の問い合わせフォームで、

  • 資料請求
  • 見積相談
  • その他のお問い合わせ

の3種類を受け付けている場合です。

資料請求には資料の案内、見積相談には見積もりに関する案内など、問い合わせ内容によって返信メールの内容を変えたいことがあります。

ただ、毎回フォームの回答を確認してからメールを作成していると、

  • 問い合わせ内容の確認に時間がかかる
  • 定型文のコピー&ペーストが発生する
  • 別の問い合わせ用の文章を送ってしまう
  • 返信するまでに時間が空いてしまう

といった問題が起きやすくなります。

この記事では、GoogleフォームとGAS(Google Apps Script)を使って、フォームの回答内容に応じて自動返信メールの件名・本文を切り替える方法を紹介します。

今回は実際に、

  • お問い合わせ種別を選択できるGoogleフォームを作成
  • 回答先スプレッドシートを連携
  • GASで3種類の返信メールを設定
  • フォーム送信時の自動実行トリガーを設定
  • 資料請求・見積相談・その他の3パターンで送信テスト
  • 回答者の氏名がメール本文に反映されることを確認

まで動作確認しました。

プログラムをPCへインストールする必要はありません。

「問い合わせの種類ごとに返信メールを作り分ける作業を減らしたい」人向けの記事です。

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

Googleフォームから「資料請求」「見積相談」「その他」の3パターンを実際に送信し、回答内容に応じてGASがメールの件名・本文を切り替えることを確認しました。入力した氏名がメール本文へ反映されることも確認しています。

検証結果: 3パターンすべて送信成功 / 件名・本文の切り替え:成功 / 氏名差し込み:成功 / フォーム送信トリガー:動作確認済み

この記事はこんな人向け

  • Googleフォームを問い合わせ窓口として使っている
  • フォームの回答後に自動返信メールを送りたい
  • 選択された回答によってメールの件名・本文を変更したい
  • 資料請求と見積相談で異なる受付メールを送りたい
  • 回答者の氏名を返信メールに自動で入れたい
  • GASで条件分岐を設定する方法を知りたい

この記事でできるようになること

今回の方法では、Googleフォームの「お問い合わせ種別」で選ばれた回答に応じて、送信するメールを自動的に切り替えます。

例えば、「資料請求」が選ばれた場合は資料請求用のメール、「見積相談」が選ばれた場合は見積相談用のメールを送ります。

フォームで選択した内容送信されるメールの件名
資料請求【TaskLess Lab】資料請求を受け付けました
見積相談【TaskLess Lab】お見積もり相談を受け付けました
その他【TaskLess Lab】お問い合わせを受け付けました

全体の流れは次のとおりです。

Googleフォームに回答
↓
回答先スプレッドシートへ記録
↓
フォーム送信をきっかけにGASを自動実行
↓
お問い合わせ種別を判定
↓
選択内容に合った件名・本文を作成
↓
回答者のメールアドレスへ自動返信

今回は、返信内容の切り替えだけでなく、回答者の氏名もメール本文に反映します。

なお、今回の「資料請求」は受付完了メールを送る仕組みです。資料PDFの添付・自動配布までは行いません。

今回使うGoogleフォーム

今回は、動作検証専用のGoogleフォームを作成しました。

フォーム名は、

TaskLess Lab_条件分岐自動返信テスト

です。

質問は次の4つにしました。

質問タイトル質問形式必須
氏名記述式ON
メールアドレス記述式ON
お問い合わせ種別ラジオボタンON
お問い合わせ内容段落ON

「お問い合わせ種別」の選択肢は、次の3つです。

資料請求
見積相談
その他

今回のGASでは、この選択肢の文字列を使って返信内容を判定します。フォーム側の質問名・選択肢と、GAS側の設定を一致させることが重要です。

メールアドレス欄には、Googleフォームの回答の検証機能で「メールアドレス」を設定しました。

また、今回の検証では、Googleフォーム標準のメールアドレス収集機能とは別に「メールアドレス」という質問を作成しています。設定が重複しないよう、標準のメールアドレス収集機能はOFFにして進めました。

Googleフォームの回答先スプレッドシートを作成する

次に、フォームの回答をGoogleスプレッドシートへ自動記録できるようにします。

Googleフォームの編集画面で「回答」タブを開き、スプレッドシートのアイコンから「新しいスプレッドシートを作成」を選択します。

今回は、

TaskLess Lab_条件分岐自動返信_回答管理

という名前にしました。

作成後、回答先スプレッドシートには、次の5列が用意されました。

列項目名
Aタイムスタンプ
B氏名
Cメールアドレス
Dお問い合わせ種別
Eお問い合わせ内容

今回は、この回答先スプレッドシートにGASを紐づけます。

GASで回答内容に応じた自動返信を設定する

回答先スプレッドシートで、上部メニューの「拡張機能」→「Apps Script」を開きます。

プロジェクト名は、

TaskLess Lab_条件分岐自動返信_GAS

にしました。

最初に表示される myFunction() を削除し、以下のコードを貼り付けて保存します。

今回使用したGASコード

/**
 * Googleフォームの回答内容に応じて
 * 自動返信メールの件名・本文を切り替える
 */
function sendConditionalAutoReply(e) {

  // フォーム送信イベントがない場合は停止
  if (!e || !e.namedValues) {
    throw new Error(
      "フォーム送信イベントがありません。回答用スプレッドシートのフォーム送信時トリガーから実行してください。"
    );
  }

  const values = e.namedValues;

  // フォーム回答を取得
  const name = (values["氏名"] || [""])[0].trim();

  const email = (values["メールアドレス"] || [""])[0].trim();

  const inquiryType =
    (values["お問い合わせ種別"] || [""])[0].trim();

  // 必須情報を確認
  if (!name || !email || !inquiryType) {
    console.log("必要な回答が不足しているため、送信を中止しました。");
    return;
  }

  // メールアドレスの形式を簡易チェック
  const emailPattern = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;

  if (!emailPattern.test(email)) {
    console.log("メールアドレスの形式が不正なため、送信を中止しました。");
    return;
  }

  // 問い合わせ種別によって件名・本文を切り替える
  let subject = "";
  let message = "";

  if (inquiryType === "資料請求") {

    subject = "【TaskLess Lab】資料請求を受け付けました";

    message =
      name + " 様\n\n" +
      "資料請求を受け付けました。\n" +
      "お申し込みいただき、ありがとうございます。\n\n" +
      "内容を確認のうえ、担当者よりご案内いたします。\n\n" +
      "TaskLess Lab";

  } else if (inquiryType === "見積相談") {

    subject = "【TaskLess Lab】お見積もり相談を受け付けました";

    message =
      name + " 様\n\n" +
      "お見積もりのご相談を受け付けました。\n" +
      "お問い合わせいただき、ありがとうございます。\n\n" +
      "内容を確認のうえ、担当者よりご連絡いたします。\n\n" +
      "TaskLess Lab";

  } else if (inquiryType === "その他") {

    subject = "【TaskLess Lab】お問い合わせを受け付けました";

    message =
      name + " 様\n\n" +
      "お問い合わせを受け付けました。\n" +
      "ご連絡いただき、ありがとうございます。\n\n" +
      "内容を確認のうえ、担当者よりご連絡いたします。\n\n" +
      "TaskLess Lab";

  } else {

    // 想定外の選択肢だった場合は送信しない
    console.log(
      "未対応のお問い合わせ種別です: " + inquiryType
    );

    return;
  }

  // 自動返信メールを送信
  MailApp.sendEmail({
    to: email,
    subject: subject,
    body: message
  });

  console.log(
    "自動返信メールを送信しました。種別: " + inquiryType
  );
}

コードが少し長く見えますが、今回の中心となる処理は、フォームの回答を取得して、条件に合うメール文面を選ぶ部分です。

GASの条件分岐はどのように動く?

今回のコードでは、if と else if を使って、お問い合わせ種別を判定しています。

例えば、

if (inquiryType === "資料請求") {

は、お問い合わせ種別が「資料請求」だった場合に、その中の処理を実行するという意味です。

同じように、

} else if (inquiryType === "見積相談") {

では見積相談用の処理を、

} else if (inquiryType === "その他") {

ではその他のお問い合わせ用の処理を実行します。

つまり、

資料請求 → 資料請求用の件名・本文

見積相談 → 見積相談用の件名・本文

その他 → 通常のお問い合わせ用の件名・本文

という仕組みです。

氏名をメール本文へ自動反映する

今回のコードでは、次の部分でフォームに入力された氏名を取得しています。

const name = (values["氏名"] || [""])[0].trim();

そして、メール本文の先頭に、

name + " 様\n\n"

を入れています。

これによって、例えばフォームで「テスト太郎」と入力すると、メール本文には、

テスト太郎 様

と表示されます。

最後にMailAppでメールを送信する

返信するメールの件名と本文が決まったら、次のコードで送信します。

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

to は送信先、subject は件名、body はメール本文です。

条件分岐で決定した件名と本文が、フォームに入力されたメールアドレスへ送られます。

フォーム送信時にGASを自動実行する

コードを保存しただけでは、フォームが送信されても自動返信は実行されません。

そこで、フォームの送信をきっかけにGASを動かす「トリガー」を設定します。

Apps Script画面の左側にある時計マーク(トリガー)を開き、「トリガーを追加」をクリックします。

今回は次のように設定しました。

設定項目設定内容
実行する関数sendConditionalAutoReply
実行するデプロイHead
イベントのソーススプレッドシートから
イベントの種類フォーム送信時
エラー通知設定毎日通知を受け取る

今回は、回答先スプレッドシートに紐づけたGASを使用しているため、イベントのソースは「スプレッドシートから」に設定しています。

同じ関数のトリガーを重複登録すると、メールが重複して送信される可能性があるため、設定は1件だけにします。

Googleからアクセス許可を求められた場合

初めてトリガーを設定すると、Googleアカウントのアクセス許可画面が表示されることがあります。

今回の検証でも、Googleによる確認が完了していないアプリである旨の警告が表示されました。

自分で作成したGASプロジェクトであること、表示されている開発者アカウントが自分のものであること、要求される権限の内容を確認してから進めます。

今回は、スプレッドシート・フォームに関する権限と、メール送信に関する権限が表示されました。

なお、アクセス許可には、今回のテスト用ファイルだけに限定されない広い権限が含まれる場合があります。他人から渡された不明なスクリプトに対して、内容を確認せず許可しないようにしてください。

GASの「実行」ボタンは押さなくてOK

今回の関数は、フォームが送信された際に渡される回答データを使って動作します。

そのため、Apps Script画面の「実行」ボタンから直接起動すると、必要な回答データが渡されず、エラーになる構成です。

トリガーを保存したら、Googleフォームから実際にテスト回答を送信して確認します。

資料請求を選択して自動返信をテストする

最初に、「資料請求」を選んだ場合の動作を確認しました。

Googleフォームへ入力した内容は次のとおりです。

質問入力内容
氏名テスト太郎
メールアドレス自分の受信確認用アドレス
お問い合わせ種別資料請求
お問い合わせ内容資料請求の自動返信テストです。

フォームを送信すると、次の件名・本文のメールが届きました。

件名:

【TaskLess Lab】資料請求を受け付けました

本文:

テスト太郎 様

資料請求を受け付けました。
お申し込みいただき、ありがとうございます。

内容を確認のうえ、担当者よりご案内いたします。

TaskLess Lab

今回の検証では、資料請求用の件名・本文に切り替わり、入力した氏名も正常に反映されました。

見積相談を選択して自動返信をテストする

次に、GASのコードは変更せず、フォームの「お問い合わせ種別」だけを「見積相談」に変更して送信しました。

今回届いたメールはこちらです。

件名:

【TaskLess Lab】お見積もり相談を受け付けました

本文:

テスト太郎 様

お見積もりのご相談を受け付けました。
お問い合わせいただき、ありがとうございます。

内容を確認のうえ、担当者よりご連絡いたします。

TaskLess Lab

資料請求とは異なる件名・本文が送信され、条件分岐が正常に動作していることを確認できました。

その他を選択して自動返信をテストする

最後に、「お問い合わせ種別」で「その他」を選択して送信しました。

今回届いたメールはこちらです。

件名:

【TaskLess Lab】お問い合わせを受け付けました

本文:

テスト太郎 様

お問い合わせを受け付けました。
ご連絡いただき、ありがとうございます。

内容を確認のうえ、担当者よりご連絡いたします。

TaskLess Lab

今回のテストでは、3種類すべてのメールが想定どおりに届きました。

3種類の自動返信テスト結果

今回実際に確認した結果をまとめると、次のとおりです。

お問い合わせ種別件名の切り替え本文の切り替え氏名の反映
資料請求成功成功成功
見積相談成功成功成功
その他成功成功成功

GASのコードを変更しなくても、フォームの選択肢を変えるだけでメールの内容が切り替わりました。

これで、毎回お問い合わせ種別を確認してから定型メールを作る作業を自動化できます。

自分のGoogleフォームで変更する場所

今回のコードを自分のフォームで使う場合は、主に次の部分を変更します。

今回の設定自分のフォームでは
"氏名"自分のフォームの氏名に相当する質問タイトル
"メールアドレス"返信先メールアドレスの質問タイトル
"お問い合わせ種別"条件分岐に使用する質問タイトル
"資料請求"1つ目の選択肢
"見積相談"2つ目の選択肢
"その他"3つ目の選択肢
subjectそれぞれの返信メールの件名
messageそれぞれの返信メールの本文

例えば、問い合わせ種別を「採用について」「サービスについて」「その他」にしたい場合は、フォーム側の選択肢だけでなく、GAS側の条件分岐も同じ文字列に変更します。

質問タイトルや選択肢が一致していないと、回答を取得できなかったり、意図したメールに切り替わらなかったりするため注意してください。

メールが届かない場合に確認すること

① トリガーが正しく設定されているか

今回は、回答先スプレッドシートに紐づくGASを使用しています。

トリガーのイベントソースは「スプレッドシートから」、イベントの種類は「フォーム送信時」に設定します。

また、同じ関数のトリガーが重複登録されていないかも確認しましょう。

② 質問タイトルがGASのコードと一致しているか

例えば、フォーム側の質問タイトルが、

お名前

なのに、GAS側では、

values["氏名"]

となっている場合、今回のコードでは氏名を正常に取得できません。

質問タイトルの変更後は、GAS側も合わせて修正する必要があります。

③ Apps Scriptの実行履歴を確認する

フォームを送信してもメールが届かない場合は、Apps Scriptの左側メニューにある「実行数」を開きます。

スクリプトが実行されたか、エラーが発生していないかを確認できます。

なお、スクリプトの実行が成功しても、実際のメール配送には時間がかかる場合があります。受信トレイだけでなく、迷惑メールフォルダなども確認してください。

空欄や想定外の回答への対策について

今回のコードには、必要な回答が空欄だった場合や、メールアドレスの形式が明らかに不正だった場合に送信を中止する処理も入れています。

また、「資料請求」「見積相談」「その他」以外の選択肢が渡された場合も、メールを送信しない構成です。

ただし、今回実際に送信テストを行ったのは、3種類の正常な回答パターンのみです。

空欄・形式不正・想定外の選択肢などの異常系については、コード上の対策を実装しましたが、実際の送信テストまでは行っていません。

実際の問い合わせ窓口で使用する場合は、公開前に必要な異常系テストも追加しましょう。

どんな仕事で使える?

今回の方法は、問い合わせフォーム以外にも応用できます。

  • 資料請求・見積相談・一般問い合わせの受付メール
  • イベントの参加区分によって異なる受付メールを送る
  • 商品・サービスの種類によって案内文を切り替える
  • 問い合わせ先の部署ごとに異なる返信文面を送る
  • 申し込み内容によって次の手順を案内する

特に、

フォームの選択肢によって、毎回決まった案内メールを送り分けている

といった仕事では、今回の仕組みを活用しやすいです。

ただし、今回のコードは受付メールを自動送信する仕組みです。実際に担当者が確認・返信する業務そのものを自動化するものではありません。

以前紹介したGoogleフォームの自動返信との違い

以前の記事では、Googleフォームに回答があった際、回答者へ自動返信メールを送る基本的な方法を紹介しました。

今回は、その仕組みを発展させています。

項目以前の自動返信今回の条件分岐自動返信
返信メール基本的に共通の内容回答内容によって切り替え
判定条件フォーム送信フォーム送信+お問い合わせ種別
GASの処理回答を取得して送信回答を取得し、条件分岐して送信

まずは基本的な自動返信から試したい場合は、こちらの記事も参考にしてください。

あわせて読みたい

Googleフォームで自動返信メールを送る方法|回答者へGASで自動送信
Googleフォームの回答者へ自動返信メールを送る方法を、実際の検証結果をもとに解説。GASコード、トリガー設定、権限承認、メールが届かない場合の確認方法まで紹介します。

まとめ

今回は、GoogleフォームとGASを使って、回答内容に応じた自動返信メールを設定しました。

実際に確認したのは、

  • お問い合わせ種別を選択できるGoogleフォームを作成
  • 回答先スプレッドシートを連携
  • GASで3種類の件名・本文を設定
  • フォーム送信時のトリガーを設定
  • 資料請求用メールの送信に成功
  • 見積相談用メールの送信に成功
  • その他のお問い合わせ用メールの送信に成功
  • 回答者の氏名が本文に反映されることを確認

です。

今回のようにフォームの回答内容を条件として設定すれば、同じGoogleフォームでも、回答者に合わせて異なる案内メールを送れるようになります。

毎回お問い合わせの種類を確認して、定型メールを作り分けているなら、この方法で返信内容の切り替えを自動化して、面倒なメール作成作業を減らしていきましょう!

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