Googleフォームに投稿があったことを指定のアドレスにメールで通知する
Googleフォームに投稿があったことに気づかずしばらく放置してしまったことがあったため、防止のためにメールで通知がくるようにしました。けっこう使いそうなので未来の自分のためにやり方をメモ。
まずはGoogleフォームでテスト用のフォームを作ります。一言入力するだけの簡単なものを用意しました。フォームを作ったら、右上の縦にみっつ「・」が並んだメニューをクリックして「スクリプトエディタ」を選択します。
スクリプトエディタ画面が開いたら、まずは画面左上のプロジェクト名を設定しましょう。好きな名前でOKです。
名称が変更できたらメール送信処理のコードを書きます。
function submitForm(e) {
// すべての質問を取得
var itemResponses = e.response.getItemResponses();
// ひとつ目の質問の回答を取得
var itemResponse = itemResponses[0].getResponse();
// メール送信
sendMail(itemResponse);
}
function sendMail(itemResponse) {
var recipient = 'user@domain';
var subject = 'Sample Formに投稿がありました';
var body = '【投稿内容】\n' + itemResponse;
GmailApp.sendEmail(recipient, subject, body)
}
sendMail関数の recipient
に設定している user@domain
は仮の値です。ここには実際にメールを受信したいアドレスを入力してください。subject
はメールの件名、body
はメールの本文となります。ここでは本文に投稿された回答を記述しています。なお、こちらは質問がひとつしかない場合限定の処理です。複数ある場合はfor文を使うなどもう少しごにょごにょする必要がありますが、メール送信処理にフォーカスするためそこは割愛しました。
さて続きです。処理を書いたら次はこれをいつ実行するかを設定しましょう。やりたいのは「フォームに投稿があったら」でした。スクリプトエディタの時計アイコンをクリックしましょう。
別タブで以下の画面が開くので、「新しいトリガーを作成します。」をクリックし、「イベントの種類を選択」の部分を「フォーム送信時」に変更して保存します。
Googleへのログイン(認証)が求められたら許可しましょう。トリガーの画面が以下の表示になれば設定完了です。
実際にフォームを開いて投稿すると…
ちゃんとメールで通知が届きました。