企業のお問い合わせフォームや申し込みフォームでGoogleフォームを利用しているケースは多いです。Googleフォームには回答のコピーを送る機能はありますが、メールのFromが自分になってしまったり、追加情報が送れないという欠点があります。また、Googleへのログインが必須になります。
そこでCustomers Mail Cloudを使って、Googleフォームへの回答時に自動返信できる機能を追加してみます。
スクリプトエディタを開く
Googleフォームに用意されているスクリプトエディタを開きます。
名前は自由なのですが、今回はsendFormという関数を作成しています。
function sendForm(e) { }
トリガーを利用する
スクリプトエディタの左側にある時計アイコンをクリックして、トリガーを作成します。
Googleフォームにはいくつかのトリガーが用意されていますが、今回はフォーム送信時のトリガーを利用します。
ライブラリをインストールする
コードエディタのライブラリの横にある + アイコンをタップしてライブラリを追加します。IDは 1RegQzjZLiJUacopzEoxmpTe5_vp7LP3r01aa-D9rf4sJRPZkifI4Mf7K
です。これはCustomers Mail Cloudを扱いやすくするライブラリです。
コードを書く
ではコードを書いていきます(内容はすべて sendForm 関数の中に書きます)。まず、Googleフォームで送られてきた内容を、JavaScriptのオブジェクトにします。
最初の行にある FormApp.getActiveForm();
はGoogleフォームを扱う権限を取得するためのものです。一度テスト実行したら不要です(削除またはコメントアウトしてください)。
FormApp.getActiveForm(); const values = e.response.getItemResponses(); const params = {}; values.forEach(value => { const item = value.getItem(); const v = value.getResponse(); const res = {}; params[item.getTitle()] = v; });
これによって例えば名前と会社名というラベルを用意していた場合、paramsという変数は次のようになります。
{ "名前": "テスト太郎", "会社名": "テスト会社名", }
次にCustomers Mail Cloudでメール送信を行う準備をします。メール本文の中で、入力された内容を扱うこともできます。
// API情報を取得 const apiUser = 'YOUR_API_USER'; const apiKey = 'YOUR_API_KEY'; // Customers Mail Cloudを初期化 const c = new CustomersMailCloud.Client(apiUser, apiKey); // 契約ごとにエンドポイントごとに異なるので、その指定 c.trial(); const fromName = 'Customers Mail Cloud'; const fromAddress = 'YOUR_FROM_ADDRESS'; const toAddress = params['メールアドレス']; const toName = params['名前']; c.setFrom(fromName, fromAddress); c.addTo(toName, toAddress); // 件名を取得 c.subject = 'お問い合わせありがとうございます'; c.text = `お問い合わせありがとうございます。 お問い合わせ内容: ${params['お問い合わせ内容']} `;
後はメール送信を実行します。
// 送信処理を実行 const res = c.send(); Logger.log(res);
テスト実行する
必ず1回、関数をテスト実行してください。そうすると権限の確認が出ますので、許諾してください。
テストする
実際にアンケートに投稿して、メールが送られてくるか確認します。
注意点
今回はすべてテキスト(一行または複数行)のデータを扱っています。ラジオやチェックボックスを使った場合には、また値の取り方や表示のさせ方が異なりますので注意してください。
まとめ
たとえばアンケートに答えてくれた方限定でURLを通知したり、お問い合わせ内容を複数のアドレスに通知したりするのも簡単にできるでしょう。ぜひお試しください。