LoginSignup
1
2

google formで解答があると回答者にメールを自動で送信するプログラムについての解説

Posted at

初めに

このコードを作成しようとおもった理由はサークルなどでのイベントで参加募集をする際,メールアドレスを指定しそこに送ってきてくれた人に都度都度メールを送り,ラインのグループのURLを送信し,ラインのグループに入ってもらうことでイベントの詳細などを共有していたがめちゃくちゃめんどくさい!!!!
なので自動でメールを返信して,LINEのグループのURLを共有する機能を追加しようと思いたちました!

google apps script側の設定について

image.png
google apps scriptが開いたら左にあるトリガーをクリックしてください!
image.png
トリガーを追加をする画面が表示されるのでここを押す!
image.png
赤く囲われたところを画像のようにフォーム送信に変更する。
ここの設定を変更することでフォームを開いた時にスクリプトを実行するのか,フォームを送信した時にスクリプトを実行するのかを設定することができます。

組込み関数についての説明

image.png

行ごとのソースコードの解説

全体のコード

以下は、与えられたコードの各行の解説です。

function autoReply(e) {

この行は、autoReplyという関数を宣言しています。この関数は引数eを受け取ります。

  // ステップ1: フォームのデータを取得する
  let itemResponses = e.response.getItemResponses();
  let recipient = e.response.getRespondentEmail();

この部分では、Google フォームのイベントオブジェクトからフォームの回答データと回答者のメールアドレスを取得しています。e.responseはフォームのイベントオブジェクトを表し、getItemResponses()メソッドはフォームの回答データを取得します。また、getRespondentEmail()メソッドは回答者のメールアドレスを取得します。

  // ステップ2: 必要なデータを抽出する
  let subject = "【ボランティア協議会】〇〇にご参加ありがとうございます";
  let bodyTemplate = "この度は〇〇イベントにご応募ありがとうございます。\n\n" +
    "ご応募内容にお間違いがないかご確認頂けますようお願いいたします。\n\n" +
    "============\n" +
    "{{responses}}\n" +
    "============\n\n" +
    "〇〇へのご参加心よりお待ちしております。\n\n" +
    "------------\n" +
    "ボランティア協議会\n" +
    "Email: info@〇〇event.com\n" +
    "TEL: 0120-〇〇〇-〇〇〇\n" +
    "HP: http://meijo-volunteer.com/";

この部分では、メールの件名と本文のテンプレートを定義しています。subjectはメールの件名を表し、bodyTemplateはメールの本文のテンプレートです。{{responses}}という部分は後ほど回答内容が挿入される箇所です。

  // ステップ3: 最初の回答のみに対してメールを送信する
  let answer = itemResponses[0].getResponse();
  if (answer === "参加") {
    let questionTitle = itemResponses[0].getItem().getTitle();

    // メール本文の回答部分を作成
    let responseText = questionTitle + ": ";
    if (answer) {
      responseText += answer;
    } else {
      responseText += "未回答";
    }

    // 参加の回答の場合、詳細URLを追加
   有いたします

    responseText += "\n\nイベントの詳細については、以下のURLから入ることのできるラインで共有いたします!\n";
    responseText += "https://line.me/ti/g/pDExB0dQKo";

この部分では、回答内容に基づいてメール本文の回答部分を作成しています。まず、回答内容の部分を作成し、responseTextに格納しています。その後、参加の回答の場合はイベントの詳細URLを追加しています。

    // 個別のメール本文を作成
    let body = bodyTemplate.replace("{{responses}}", responseText);

    // メールを送信
    GmailApp.sendEmail(recipient, subject, body);
  }
}

この部分では、個別のメール本文を作成し、bodyTemplateの中の{{responses}}を実際の回答内容に置き換えます。それから、GmailApp.sendEmail()メソッドを使用してメールを送信します。メールの宛先はrecipient、件名はsubject、本文はbodyとなります。

、Google フォームのイベントトリガーとして設定することで、フォームの回答があった際に自動的にメールを送信する機能を実現することができます!!!!!!!

参考にしたサイト

下の記事ではgoogle formの値をどのように取得しているのか理解する事ができる!!!

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2