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へのログイン(認証)が求められたら許可しましょう。トリガーの画面が以下の表示になれば設定完了です。

トリガーが登録された

実際にフォームを開いて投稿すると…

フォームに投稿

ちゃんとメールで通知が届きました。

メール受信