Googleフォームの回答内容によって送信先を自動で振り分ける方法

目次

Googleフォームの回答内容によって送信先を自動で振り分ける方法

「お問い合わせ内容に応じて担当部署に自動でメールを送りたい」──そんなときに便利なのが、GoogleフォームとGAS(Google Apps Script)の連携です。 この記事では、回答内容に応じて自動で送信先を切り替える方法を、初心者でもわかるように解説します。

この記事でできること

  • フォーム送信時にGASが自動実行
  • 回答内容(例:部署や担当者)に応じて宛先を変更
  • 件名・本文を自動生成してメール送信
  • 誤送信を防ぐ仕組みを追加

① フォームを準備しよう

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

  • 質問例:「お問い合わせ内容の種類を選んでください」
  • 選択肢:「商品について」「契約について」「その他」など
  • 次に「スクリプトエディタ」を開きます(メニュー → 拡張機能 → Apps Script)

② 回答内容ごとに送信先を設定する

次のスクリプトを貼り付けてください。 (フォームがスプレッドシートに連携されている状態を想定しています)

function onFormSubmit(e) {
  const items = e.response.getItemResponses();
  const data = {};
  items.forEach(ir => data[ir.getItem().getTitle()] = ir.getResponse());

  // 回答内容に応じて送信先を設定
  const category = data["お問い合わせ内容の種類"];
  let to = "";

  switch (category) {
    case "商品について":
      to = "product@example.com";
      break;
    case "契約について":
      to = "sales@example.com";
      break;
    default:
      to = "info@example.com";
      break;
  }

  // メール送信
  const subject = "【自動通知】" + category + " に関する新しいお問い合わせ";
  const body = [
    "新しいお問い合わせがありました。",
    "",
    "▼お問い合わせ内容",
    "種類:" + category,
    "お名前:" + (data["お名前"] || "(未入力)"),
    "メールアドレス:" + (data["メールアドレス"] || "(未入力)"),
    "",
    "――",
    "このメールはGoogleフォームとGASによる自動通知です。"
  ].join("\n");

  GmailApp.sendEmail(to, subject, body);
}

実行結果イメージ

フォームで「商品について」が選ばれると、GASが自動的に product@example.com に通知メールを送信します。 同様に「契約について」なら営業部宛、「その他」なら代表アドレスに届くようになります。

③ トリガーを設定して自動化

  1. GASエディタ左側の「時計マーク」をクリック
  2. 「トリガーを追加」→ 関数 onFormSubmit を選択
  3. イベントのソース:「フォームから」
  4. イベントの種類:「フォーム送信時」
  5. 保存(初回は権限を承認)

これでフォーム送信と同時に自動メールが飛ぶようになります。

④ よくあるカスタマイズ

  • 複数宛先に送る:
    to = ["a@example.com","b@example.com"].join(",");
  • CCやBCCを追加:
    GmailApp.sendEmail(to, subject, body, {cc:"cc@example.com"});
  • HTMLメールにしたい:
    オプションに htmlBody: "<p>〜</p>" を追加。
  • 条件を増やす:
    switch 文を編集して「サポート」「返品」などを追加。

⑤ エラー対策と確認ポイント

  • 動かない:「onFormSubmit」関数にインストール型トリガーを設定したか確認(自動トリガーでは動作しません)。
  • 送信先が空:フォーム質問タイトルを正確に一致させてください(「お問い合わせ内容の種類」など)。
  • テスト方法:フォームを実際に送信して確認。GASのログ(表示→ログ)にも出力されます。
  • セキュリティ:メールアドレスをハードコードせず、スクリプトプロパティで管理するのがおすすめ。

⑥ プロパティ管理で安全に(応用)

メールアドレスをコードに直接書かずに、プロジェクトのプロパティに保存すると安全性が上がります。

function getEmail_(key) {
  return PropertiesService.getScriptProperties().getProperty(key);
}

// 例:プロパティに登録しておけば
// PRODUCT_MAIL=product@example.com
// SALES_MAIL=sales@example.com

// 呼び出し時
const to = getEmail_("PRODUCT_MAIL");

プロパティ管理を活用すれば、担当者が変更になってもコードを書き換える必要がなくなります。

自動化がうまく動かない時のチェックリスト

「スクリプトを実行してもメールが飛ばない」「条件分岐が効かない」という場合は、以下の3点を確認してみてください。

  • スプレッドシートの「列番号」は合っていますか?
    GASで getItemResponses()[0] のように指定する場合、0から数え始めます。フォームの質問を後から追加したり順番を変えたりすると、取得する列がズレてしまい、意図しない条件判定(undefinedなど)になることがあります。
  • 文字列が「完全一致」しているか確認
    条件分岐で if (response === "承認") と書いている場合、フォームの選択肢に「承認(スペースあり)」や「承認する」と入っていると正しく動きません。一文字でも違うと反応しないため、コピー&ペーストで正確に合わせるのがコツです。
  • トリガーの設定忘れ
    コードを保存しただけでは自動で動きません。左メニューの「トリガー」から、イベントの種類を「フォーム送信時」に設定しているか、今一度チェックしてみてください。

さらに自動化を加速させる活用術

入力制限(正規表現)だけでなく、回答があった際の内容を自動でメール転送したり、AIを使って回答を要約したりすることで、運用の手間をさらに減らすことができます。

こちらの記事もあわせて参考にしてみてください。

まとめ

Googleフォーム+GASを使えば、回答内容に応じて自動でメールを振り分ける仕組みが簡単に作れます。 複数部署への連絡・問い合わせフォーム・社内申請など、手動仕分けの手間をなくせる便利な仕組みです。

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