GoogleFormをみなさんは使ったことがありますか?
アンケートフォームを簡単に作ることができ、Googleのプラットフォームで実現できるので、セキュリティ的にも安心なツールですよね。
ただ、このGoogleFormの欠点として、フォームに回答した人に対しての自動返信のメールを自由にカスタマイズできない点があります。
本記事では、Google Apps Scriptを使ってこのカスタマイズした自動返信メールを実装してみます。
ご自身のGoogleDriveを開いてGoogleFormを作成してください。
続いて、今回のGoogle Formの質問内容はテストとして下記の3つにしてください。
質問タイトル:氏名
→ 形式:記述式
→ 必須
質問タイトル:メールアドレス
→ 形式:記述式
→ 必須
質問タイトル:お問い合わせ内容
→ 形式:段落
Google Formの編集画面上部にある「回答」をクリックしてください。

「回答」をクリックすると表示される「スプレッドシート」のアイコンをクリックしてください。
アイコンをクリックすると「回答先の選択」という項目が表示されるので、上側の「新しいスプレッドシートを作成」を選択して「作成」ボタンをクリックしてください。
新しいタブでスプレッドシートが開きます。先ほどGoogleフォームで作成した質問がスプレッドシートの1行目に書かれていることが確認できます。
ここで作成したスプレッドシートは今後も使用していきますので、Google Formと同じ場所に保存しておくようにしてください。
続いて、Google Formからお問い合わせ内容が登録された際にその内容から返信のメール作成・送信するロジックを作成していきます。
先ほどのスプレッドシートを開いて上部のメニューから「拡張機能」をクリックします。
プルダウンで表示されるリストの中からApps Scriptをクリックします。

コードエディタが表示されると同時にスプレッドシートにリンクしたGASプロジェクトが作成されます。
プロジェクト名についてはデフォルトで「無題のプロジェクト」となっているので、任意の名前に変更をして利用してください。
コード記述エリアにカーソルを合わせて下記のコードをコピペして保存をしてください。
function onFormSubmit(e) {
let TimeStamp = e.namedValues["タイムスタンプ"][0];
let Name = e.namedValues["氏名"][0];
let Email = e.namedValues["メールアドレス"][0];
let InquiryContent = e.namedValues["お問い合わせ内容"][0];
let Subject = "【自動返信】" + Name + " 様 お問合せありがとうございます";
let Body = Name + "様 お問合せありがとうございます。" + "\n" +
"\n" +
"担当者より改めてご連絡いたしますのでもうしばらくお待ちください。" + "\n" +
"\n" +
"〜お問合せ内容〜" + "\n" +
"お名前:" + Name + "\n" +
"メールアドレス:" + Email + "\n" +
"お問合せ内容:" + InquiryContent + "\n" +
"\n" +
"フォーム送信日時:" + TimeStamp + "\n";
GmailApp.sendEmail(Email, Subject, Body);
}
本記事の最後でコードの説明を追加しますので、詳細が気になる方はそちらをご参照ください。
スクリプトエディタの左側のメニューから「目覚まし時計」アイコンをクリックして右下の「+ トリガーを追加」をクリックしてください。

表示される設定画面では下記の通りに設定して、右下の「保存」をクリックしてください。
実行する関数を選択
→ onFormSubmit
(先ほどのコードで設定した関数名にしてください)
実行するデプロイを選択
→ Head
イベントのソースを選択
→ スプレッドシートから
イベントの種類を選択
→ フォーム送信時
エラーの通知設定
→毎日通知を受け取る

Googleフォームのページから回答用のリンクを発行してGoogle Formに回答をしてください。
フォームで入力したメールアドレス宛にGASで設定した自動返信メールが送信されていることが確認できると思います。
以上で「Googleフォームの自動返信メールをGASを使って自由に作成する方法」の紹介でした。
function onFormSubmit(e)
onFormSubmit(e)
という名前の関数を作成することを意味しています。
プログラミング経験者の方は関数名を自由に変えていただいても構いませんが、トリガーの設定でこの関数名が重要となりますので、まだプログラミングに馴染んでいない方はこのままの関数名を使用してください。
let TimeStamp = e.namedValues["タイムスタンプ"][0];
let Name = e.namedValues["氏名"][0];
let Email = e.namedValues["メールアドレス"][0];
let InquiryContent = e.namedValues["お問い合わせ内容"][0];
変数と呼ばれる箱を作成してGoogleフォームの送信によって得られた回答を保存する処理を行なっています。
TimeStamp
は e.namedValues["タイムスタンプ"][0]
でスプレッドシートの『タイムスタンプ』の値を取得します。
Name
は e.namedValues["お名前"][0]
によってスプレッドシートの『氏名』の値を取得します。
Email
は e.namedValues["メールアドレス"][0]
によってスプレッドシートの『メールアドレス』の値を取得します。
InquiryContent
は e.namedValues["お問合せ内容"][0]
によってスプレッドシートの『お問い合わせ内容』の値を取得します。
ここで感の良い方なら気づくかもしれませんが e.namedValues["質問の名称"][0]
の『質問の名称』の部分がスプレッドシートの質問の名称と一致しています。
つまり、Googleフォームで質問を増やしたり変化させた場合はこちらを修正することでGoogleフォーム送信時の回答の値をGASで得ることができます。
let Subject = "【自動返信】" + Name + " 様 お問合せありがとうございます";
let Body = Name + "様 お問合せありがとうございます。" + "\n" +
"\n" +
"担当者より改めてご連絡いたしますのでもうしばらくお待ちください。" + "\n" +
"\n" +
"〜お問合せ内容〜" + "\n" +
"お名前:" + Name + "\n" +
"メールアドレス:" + Email + "\n" +
"お問合せ内容:" + InquiryContent + "\n" +
"\n" +
"フォーム送信日時:" + TimeStamp + "\n";
自動返信メールの件名と本文を変数に代入する処理を行なっています。
let Subject = "【自動返信】" + Name + " 様 お問合せありがとうございます";
では Subject という箱を用意すると同時に『【自動返信】<名前> 様 お問合せありがとうございます』という文字列を箱の中に入れる処理を行なっています。
先ほどと同じようにして Body という箱を用意すると同時に『お礼』と『フォームの回答内容・回答日時』を合わせた文字列をメール本文として箱の中に入れる処理を行なっています。
GmailApp.sendEmail(Email, Subject, Body);
今までに作成した変数である Email 、Subject 、Body を用いてメールを送信する処理を行なっています。
ここではメールの送信を行なっていますが、メール送信以外にもメールの下書きや、CC、BCCなどの設定も可能です。
今回はGASを使ってGoogle Formsを送信時に入力された情報で自動返信メールを作成・送信する方法を紹介しました。
お問い合わせフォーム以外にもイベントの応募管理やその他の登録が必要なすべてに応用ができますので、ぜひご活用いだだければと思います。
最後まで読んでくれてありがとうございました!!
よかったらお気に入り登録をお願いします!!!!