Googleフォームの回答が届いたら自動でメールを送る方法(コード付き)

Googleフォームの回答が届いたら自動でメールを送る方法(コード付き)

記事
IT・テクノロジー
お問い合わせや申し込みをGoogleフォームで受け付けていると、回答が届くたびに確認のメールを送ったり、担当者に知らせたりする手間がかかります。GAS(Google Apps Script)を使えば、このメール送信を自動にできます。

まず確認:フォームの標準機能で足りる場合

回答した人に、回答内容の控えを送るだけでよければ、GASは要りません。フォームの「設定」でメールアドレスを収集する設定にし、「回答のコピーを回答者に送信」をオンにすれば、自動で届きます。
文面を自由に書きたいとき、担当者にも知らせたいとき、回答の内容によって送り先を変えたいときに、GASが役に立ちます。

準備

・フォームの「回答」タブから、回答をスプレッドシートに出力しておきます
・この記事では、フォームに「お名前」と「メールアドレス」の項目がある前提で説明します

コード

スプレッドシートの「拡張機能」→「Apps Script」を開き、次のコードを貼り付けて保存します。「担当者のメールアドレス」の部分は、通知を受け取りたいアドレスに書き換えてください。
function sendReply(e) {
  const v = e.namedValues;
  const name = (v['お名前'] || [''])[0];
  const email = (v['メールアドレス'] || [''])[0];
  if (!email) return;

  const body = name + ' 様\n\n'
    + 'お問い合わせありがとうございます。\n'
    + '内容を確認のうえ、2営業日以内にご連絡します。\n';
  MailApp.sendEmail(email, 'お問い合わせを受け付けました', body);

  const lines = Object.keys(v).map(k => k + ':' + v[k].join(', '));
  MailApp.sendEmail('担当者のメールアドレス', '新しいお問い合わせ:' + name, lines.join('\n'));
}

トリガーを設定する

1. Apps Scriptの画面の左側にある時計のアイコン(トリガー)を開きます
2. 「トリガーを追加」を押し、実行する関数に「sendReply」、イベントのソースに「スプレッドシートから」、イベントの種類に「フォーム送信時」を選んで保存します
3. 許可を求める画面が出たら、自分のアカウントを選んで許可します
これで、フォームに回答が届くたびに、回答した人と担当者にメールが送られます。テストで一度回答してみて、両方にメールが届くか確かめてください。

うまく動かないとき

・コードの「お名前」「メールアドレス」が、スプレッドシートの1行目の見出しと一字一句同じか確かめてください(空白の有無も区別されます)
・Apps Scriptの「実行数」の画面で、エラーが出ていないか見てください
・1日に送れるメールの数には上限があります。回答が多いフォームでは注意してください

作り込みが必要な場合は

回答の内容によって担当者を振り分けたい、チャットにも通知したい、といった作り込みは、ご依頼でもお受けしています。
▶ フォーム回答時の自動メール送信をGASで構築します
サービス数100万件のスキルマーケット、あなたにぴったりのサービスを探す