Apps Scriptでフォームからメール

Google Apps Script(GAS) その1 Googleフォームが送信されたらメールを送る

Apps Scriptでフォームからメール

GAS(Google Apps Script) その1 Googleフォームが送信されたらメールを送る

エントレでは問い合わせフォームとしてGoogleフォームを使っているのですが、メールで通知が来るように仕掛けたくて、Google Apps Script(GAS)で実現してみました。とても便利で、他にもいろいろと出来そうなので、コラムとして(備忘録として)残してみます。
※これは全く演劇と関係ないコラムです。

Google Apps Script(GAS)とは?

Googleが提供するアプリケーション開発プラットフォームです。WEBでよく使われているプログラム言語のひとつ、JavaScriptを使っていろいろな作業を自動化できる開発ツールです。Googleスプレッドシートなどとも連携ができるのでデータを扱う際にも重宝しそうなツールです。

では、「Googleフォームが送信されたらメールを送る」システムの作り方を書いていきます。

1)Googleフォームで問い合わせフォームを作る

Googleフォーム

に行き、空白のフォームをクリック。

空白のフォーム

「無題のフォーム」というのが出てくるので、お問い合わせフォームにタイトル書き換えます。

お問い合わせに変更

「無題の質問」は「お問い合わせ」に変更。形式は「段落」にしておきましょう。
「質問」を増やす場合は、右側の(+)ボタンを押して、項目を増やします。

ここでは「お名前」を足しておきました。
「お名前」の方が「お問い合わせ」よりも前の方が良いと思うので、(:::)みたいなマークをドラッグして入れ替えました。

お名前を追加して入れ替え

お問い合わせフォームは返信する必要があるので、入力者のメールアドレスが必須になります。

メールアドレスを収集する

「設定」のタブを開き、「メールアドレスを収集する」のところが「回答者からの入力」になっていることを確認します。

これでフォームの設定は完了しました。

プレビューマーク

右上にある目玉のようなアイコン(プレビューアイコン)をクリックすると、実際にユーザーが目にするフォームの見え方を確認できます。
こちらからフォームに何か打ち込んでみて、回答が記録されるか確かめてみてください。

2)Google Apps Scriptでメール送信の仕組みを作る

フォーム作成画面の右上にある3点マーク(縦に・が3つならんでいるアイコン)をクリックするとさらにメニューが出てくるので、<>スクリプトエディタをクリックします。

<>スクリプトエディタ

すると、ページが変わって、Apps Scriptのページが開きます。

Apps Script のページ

次に、

function myFunction() {
  
}

と、書いてあるところを変更していきます。
この領域にコードを書いていくことで、フォームの機能を作ることができます。

では、一旦

function myFunction() {
  
}

を消して、以下のコードをコピペしてください。

function sendform(e){
  var items = e.response.getItemResponses(); //フォームに入力された複数の値をitemsというリストにそれぞれ取得
  var yourMail = e.response.getRespondentEmail(); //フォームに入力されたメールアドレスを取得
  var msg = 'メールアドレス: ' + yourMail + '\n\n'; //返信メッセージにメールアドレスを記載

   //返信メッセージに「お名前」「問い合わせ内容」を記載
  for (var i = 0; i < items.length; i++) {
    var item = items[i];
    var q = item.getItem().getTitle();
    var a = item.getResponse();
    msg += q + ': ' + a + '\n\n';
  }
  GmailApp.sendEmail('XXXXX@YYYYY.com', 'お問い合わせフォームに新しい回答がありました。', msg);
}

コードのそれぞれの行の右側に(//)から始まる部分がありますが、これは「コメント」でして、コードとして機能しない部分です。ここにそれぞれのコードの意味をメモっておきました。(※きっと忘れてしまう未来の自分のために)

なお、forから始まる五行ほどのコードは、ユーザーが入力した値を一項目ずつ繰り返し取得して、返信メッセージに記載していくという内容です。

最後の、GmailApp.sendEmail という部分は、返信メッセージに記載する内容です。
一つ目の ‘XXXXX@YYYYY.com’ のところを自分のアドレスにすれば、内容が自分にメールされます。逆に yourMail とすると、ユーザーがフォームで打ち込んだユーザーのメールアドレスにこのメールを送ることができます。つまり自動返信できるというわけですね。とりあえず、実験が必要なので、自分のメールアドレスにしてください。

‘お問い合わせフォームに新しい回答がありました。’ とあるところは、メールの件名です。ここはご自身の好きな内容に書き換えてください。
msg は返信メッセージのことで、 forのところで書いた内容がメールに書かれます。
なお、この ‘  ’ は、文字列だよという目印みたいなものなので、消さないように気をつけてください。

コードを書いた後にはCommand+Rを押すか、上部にあるフロッピーディスクマークを押して保存します。

3)Google Apps Scriptでトリガーを設定する

コードはこれで出来たんですが、最後にトリガー(引き金)を設定します。
左側の上から4番目にある目覚まし時計マーク(トリガーのアイコン)をクリックします。

トリガー

「新しいトリガーを作成します。」をクリックします。

新しいトリガー

「イベントの種類を選択」のところを「フォーム送信時」にして保存します。

すると、こんなウィンドウが出てきます。

googleアカウントの選択

使うGoogleアカウントを選択します。

アラート

するとアラートが出てくるので、左下の「Advanced」をクリックします。

アラート

さらに Go to 無題のプロジェクト (unsafe) をクリックします。

googleアカウント許諾

Googleアカウントへのアクセス許諾を求められるのでAllowを押します。
これでトリガーが保存できるようになるので、「保存」をクリックします。

トリガーが完成

これでトリガーが完成しました!

4)実験する

フォームのプレビュー画面に戻って、実際にフォームを送信してみましょう。
うまく自分にメールが返信されれば成功です。

GmailApp.sendEmail という部分をyourMailとすれば、メールの差出人に自動返信する仕掛けが作れますので、ぜひ試してみてください。

 
(文:森脇孝/エントレ)

関連記事一覧