📬

Googleフォームの改修をした話

2023/12/11に公開

これまで使用していたお問い合わせフォームが問題だらけだったので改修することにしました。

これまで

  • フォーム送信時には自分たちにお知らせメールが届くように設定していた
     ※ただしそのアドレスは「******@gmail.com」であり、アドレスから問い合わせがあったと判別しずらかった。(まあ、周知していれば問題ないのだけれど)
  • お客様は(Googleフォームの機能で)チェックを入れるとお客様に自動返信メールが届くように設定していた

既存のフォームは以下のリンク先のイメージです。
https://365blog.net/gas-mail-notification/

やったこと

改修のためにしたことは大きく分けて以下の4つです。

  • お客様の方でチェックを入れなくても自動返信メールが届くようにする
  • 会社のメールアドレスからメールが届くようにする
  • bcc宛に自社主要社員にメールが届くように設定する
  • 自動返信だと分かるようなメッセージを入れておく

参考にしたサイトは以下になります。
[記事1]
https://liapoc.com/new-google-form.html
[記事2]
https://liapoc.com/changename-mail.html

要所を掻い摘んで説明してきます。

お客様の方でチェックを入れなくても自動返信メールが届くようにする

詳しい説明は端折りますが、記事1を参考にするとGoogleフォームの自動返信機能を使わなくても、フォーム送信時に回答者へメールが届くように設定することができました。

会社のメールアドレスからメールが届くようにする

記事2を見て、Googleフォームから送られるメールアドレスを任意のアドレスに変更することができることを知りました。(任意と書いてありますが、どんなメールアドレスでも可能という話ではなく実際にはメールアドレスに加えて、メールアドレスのパスワードやSMTPサーバーのポート番号の情報なども必要になりました。)

bcc宛に自社主要社員にメールが届くように設定する

bccにメールを送るにはちょっと工夫が必要でした。肝になるのが、GmailApp.sendEmail()メソッドと4つ目の引数optionsでした。

GmailApp.sendEmail()メソッドおよびoptionsに関して

どういった引数を用いるかでいくつか使い方があるのですが、今回はoptionsとして差出人のアドレスや差出人名、ccやbccの設定ができる以下の内容を利用しました。

GmailApp.sendEmail( '宛先' , '件名', '本文' , options※ );

※詳しくは末尾にコード載せますので参考にしてください。

自動返信だと分かるようなメッセージを入れておく

以上で送りたいメールは届くのですが、どうせなら内容も整えたいと思います。こちらで人為的に送ったメールではなく、自動返信によるメールだと記載があったほうがお相手にも親切だと思います。

  • 本文の一行目に、本メールが自動返信であることを記載する
  • 差出人も「【自動返信】株式会社△△△」と記載する

※こちらも詳しくは末尾のコードを参照して下さい。

まとめ

最後にアドレスや会社名は伏せて、コードを公開いたします。

function sendMailGoogleForm() {
 Logger.log('sendMailGoogleForm() debug start');

 //------------------------------------------------------------
 // 設定エリアここから
 //------------------------------------------------------------

 // 件名、本文、フッター
 var subject = "お問い合わせありがとうございました-株式会社△△△"; 
 var body
 = "お問い合わせありがとうございました。\n以下の内容でお問い合わせを承りました。\n\n"
+"------------------------------------------------------------\n";
 var footer
 = "------------------------------------------------------------\n\n"
+"後ほど担当者よりご連絡させていただきます。";

 // 入力カラム名の指定
 var NAME_COL_NAME = '名前';
 var MAIL_COL_NAME = 'メールアドレス';

 // メール送信先
 var admin_name ="【自動返信】株式会社△△△";//送信メールの名前 
 var admin = "差出人として設定したいメールアドレス"; // 管理者(必須)
 var bcc = "bccとして設定したいメールアドレス"; // Bcc:
 var to = ""; // To: (入力者のアドレスが自動で入ります)

// 送信先オプション
 var options = {};
 if ( admin ) options.from = admin;
 if ( admin_name ) options.name = admin_name;
 if ( bcc ) options.bcc = bcc;

 //------------------------------------------------------------
 // 設定エリアここまで
 //------------------------------------------------------------

 try{
  // スプレッドシートの操作
  var sheet = SpreadsheetApp.getActiveSheet();
  var rows = sheet.getLastRow();
  var cols = sheet.getLastColumn();
  var rg = sheet.getDataRange();
  Logger.log("rows="+rows+" cols="+cols);

  // メール件名・本文作成と送信先メールアドレス取得
  for (var i = 1; i <= cols; i++ ) {
    var col_name = rg.getCell(1, i).getValue(); // カラム名
    var col_value = rg.getCell(rows, i).getValue(); // 入力値

    ////////////下記を入れる////////////////
    if (col_name === "タイムスタンプ"){
	    continue;
    }
    ////////////////上記を入れる////////////

    body += "【"+col_name+"】\n";
    body += col_value + "\n\n";
    if ( col_name === NAME_COL_NAME ) {
        body = "※本メールは自動返信メールになります。\n\n" + col_value+" 様\n\n"+body;
    }
    if ( col_name === MAIL_COL_NAME ) {
        to = col_value;
    }
  }
  body += footer;

  // メール送信
  GmailApp.sendEmail(
    to, //toアドレス
    subject, //表題
    body, //本文
    {
      from: admin, //fromアドレス
      name: admin_name, //差出人
      bcc: bcc
    }
  );
}catch(e){
 MailApp.sendEmail(admin, "【失敗】Googleフォームからメール送信中にエラーが発生", e.message);
 }
}

Googleでお問い合わせフォームを作る際の参考になれば嬉しいです。
※試験的に作っては消してを繰り返していたら、どのGoogleフォーム、スプレッドシート、GASと連携しているのか分からなくなって焦りました。プロジェクトの命名は計画的に。(笑)

Discussion