【カスタマイズもOK】Googleフォームに自動返信機能を付ける

ここ最近、「静的  HTML サイト + Google フォームによるメールフォーム」という構築案件が続いたので  Google フォームに自動返信機能を付ける GAS(Google Apps Script)を作りました。

実際のところ「Googleフォーム 自動返信」で検索するといろんな作例が出てくるのですが、メールの題名や本文などのカスタマイズ性でしっくり来るものがなく、極めて「オレオレ要求仕様」なスクリプト sendmail.js を新たに起こしてみた次第です。

スクリプトは  GitHub で公開しています。ライセンスはMITライセンスです。

https://github.com/tecking/sendmail.js

フォームからの投稿内容を集計するスプレッドシートの「スクリプトエディタ」にてスクリプトを記述したり、「フォーム送信時」のイベントをトリガーに設定したりするのは他の作例と同様です。スクリプトの設定方法については「Googleフォーム 自動返信」で検索するなどして参照してください。

特長

  • メールの題名・差出人名・差出人メールアドレスなどを任意の値に設定可
  • フォーム投稿者への自動返信メール、およびフォーム管理人への通知メールの本文テンプレートをスクリプト本体から分離して別シートに格納

ざっくりと使い方説明

GitHub リポジトリにある sendmail.js をスクリプトエディタにコピペし、下記の項目を設定します。

  • FORM_SHEET
    フォームの集計を記録するシート名
  • FORM_SHEET_COL_LABEL
    メール本文に値を挿入するフォームフィールド(=スプレッドシート上のカラム)名
  • REPLY_MAIL_COL_LABEL
    返信先メールアドレスが記載されたフォームフィールド(=スプレッドシート上のカラム)名
  • ADMIN_MAIL_BODY_SHEET
    フォーム管理者あてメールのテンプレートを記述したシート名
  • REPLY_MAIL_BODY_SHEET
    自動返信メールのテンプレートを記述したシート名
  • MAIL_BODY_CELL
    フォーム管理者あてメール・自動返信メールのテンプレートを記述したセル(通常は A1)
  • ADMIN_MAIL_SUBJECT
    フォーム管理者あてメールの題名
  • ADMIN_MAIL_SENDER
    フォーム管理者あてメールの差出人名
  • ADMIN_MAIL_FROM
    管理者あてメールの差出人メールアドレス (通常はフォームを作成したアカウントの Gmail アドレス)
  • ADMIN_MAIL_TO
    管理者あてメールのあて先メールアドレス
  • ADMIN_MAIL_CC
    管理者あてメールのCcメールアドレス(設定しなくても可)
  • ADMIN_MAIL_BCC
    管理者あてメールのBccメールアドレス(設定しなくても可)
  • REPLY_MAIL_SUBJECT
    自動返信メールの題名
  • REPLY_MAIL_SENDER
    自動返信メールの差出人名
  • REPLY_MAIL_FROM
    自動返信メールの差出人メールアドレス(通常はフォームを作成したアカウントのGmailアドレス)

リポジトリにある sendmail_template_sample.ods (OpenDocument 形式のスプレッドシート)を参考に、下記のメールテンプレートをそれぞれ別シートの A1 セルに記述。{{ }} で囲まれた箇所にメールの投稿内容が挿入されます。

  • フォーム投稿者への自動返信メール
  • フォーム管理人への通知メール

初期設定にあたっての留意点

ADMIN_MAIL_FROM と REPLY_MAIL_FROM を Gmail アドレス以外の値 (独自ドメインのメールアドレスなど) とする場合、あらかじめ Gmail の [設定] – [アカウントとインポート] にて当該アドレスの追加が必要です。

詳しくは Gmail のヘルプ「別のアドレスやエイリアスからメールを送信する」を参照してください。


例外処理を盛り込むなどメール送信不可だったときの対策も練ったつもりですが、不具合を洗い出しきれてないと思うので、お気づきの点があればプルリクエストなどでフィードバックいただけるとうれしいです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください