2021/10/05に更新

【GASで自動化】フォームの内容を管理者にメールで通知する

フォームメール業務改善

フォームが送信されたら、管理者に対して質問と回答をメールで通知するGoogle Apps Scriptです。標準機能では回答があったことの通知しかできませんが、GASを使えば回答内容も送信できます。

こんな悩みを解決します


  • フォームが送信されたときに、回答内容とともにメールで通知してほしい

用意するもの


特にありません。
今お使いのGoogle フォームに組み込めます。

このスクリプトで出来ること


  • フォームが送信されたタイミングで、設問及び回答内容をメールで送信します。
  • 本記事を書いている時点で、添付ファイルを除く全ての設問形式に対応しています。

使い方


1.フォームの作成

お好きなフォームを作成してください。
今回はサンプルで添付ファイル以外のすべての設問形式を含んだフォームを作成しています。

2.フォームの送信

フォームが送信されたタイミングで、メールが送信されます。
実際に届いたメールの本文です。

グリッドタイプの設問は、回答の表現が少し分かりづらいですね。

ラジオボタン(グリッド)の場合
「1 列目,2 列目,3 列目,4 列目」
これは1行目は1列目が、2行目は2列目が、3行目は3列目・・・と選択されたことを表しています。
行がカンマで区切られています。

チェックボックス(グリッド)の場合
フォームは次の画像のように、各行で1列目と2列目を選択しました。

この結果がこのように表現されています。
「1 列目,2 列目,1 列目,2 列目,1 列目,2 列目,1 列目,2 列目」

カンマでは行の識別ができず、「2列目 → 1列目」のように列番号が減っていれば次の行に移動した、と判断できそうです。
これはもう少し取得方法を考えたほうがよいかもしれませんね。

スクリプト


/**
 * このスクリプトの説明、使い方はこちら。
 * https://myfunc.jp/items/00010/index.html
 */

function onSubmit(e) {

  // フォームの項目や回答を取得する
  const form_responses = e.response.getItemResponses();

  // メール本文を格納する変数を準備
  let mail_body = '';

  // フォームの項目数だけループする
  for (var i = 0; i < form_responses.length; i++) {

    // フォームの質問を取得
    let question = form_responses[i].getItem().getTitle();

    // 質問に対する回答を取得する
    let answer = form_responses[i].getResponse();

    // メール本文を組み立てる
    mail_body += '[質問]' + question + '\n';
    mail_body += '[回答]' + answer + '\n\n';

  }

  // メール送信用のパラメータをセットする
  const mail_to = '送信先メールアドレス';
  const mail_subject = 'フォームが登録されました';
  const mail_options = {
    'name' : '好きな差出人名',
    'cc' : '',
    'bcc' : ''
  }

  MailApp.sendEmail(mail_to, mail_subject, mail_body, mail_options);

}

関連するアプリ


タグ一覧

最新のアプリ

人気のアプリ

ページトップに戻る
myfunc.jp