【初心者向け】Googleフォームでいきなり返信メールを送れるようになる方法(チュートリアル)

GAS

Googleフォーム関連

ご訪問ありがとうございます。

スプレッドシートマスターのひろしです。

前回

Googleフォーム 回答により分岐する方法(条件分岐)
  • Googleフォームで条件により分岐させる方法がわかります。
  • セクションの使用方法がわかります。
  • 今回は、とっても価値の高い方法をお伝えします。


    これを知ることであなたは、

    Google Formに登録があった際に、
    自動的に登録者に返信メール
    送れるようになります。

    Googleフォームは、とても便利なのですが
    残念ながら、登録時に登録者にメールを
    自動的に返信する仕組みがありません。

    それが、この記事を読むことで簡単に実現できて
    しまいます。

    さらに。。。

    • Googleフォーム登録時に自動的に返信メールを送ることができるようになります。
    • GASを使用しますが、GAS内の変更箇所は2箇所だけです。
    • 別のメールアドレスから返信メールを送ることもできます。

    もちろん返信メールの内容を変更するのも自由自在です。

    さらに、登録時に、アナタあてへのメールが届くように
    設定もできます。

    さらにさらに、送信元のメールアドレスを
    変更することも可能です。

     

     

    逆に、知らないと

    毎回、Googleフォームに登録された際に、
    チンタラ、チンタラと登録者に
    手動で返信メールを送る羽目になります。

     

    なので、今すぐこのスクリプトを動かしてほしいと思います。

     

     

    準備するもの

    ・Googleフォーム

    これだけです。

    あとは、未知の世界に飛び込む勇気だけです。

     

    では、動画を見ながらやってみましょう。

    動画はこちら

    【初心者向け】Googleフォーム 登録時に自動的に返信メールを送る方法

     

    設定方法

    スクリプトエディタの起動

    Step1.

    Googleフォームを作成ます

     

    Step2.

    ①[|]をクリックします。
    ②[<>スクリプトエディタ]をクリックします。

     

    スクリプトの編集

    Step1.

    以下のコードをコピペします

    //★スプレッドシートのID URLのユニークな長い部分
    const FORMAT_SHEET_ID = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
    
    //★設定項目が記載してあるシートの名称
    const FORMAT_SHEET_NAME = "返信メールフォーマット"
    
    //フォーム登録者にメールを送信する
    function submitForm(e) {
      let itemResponses = e.response.getItemResponses();
      let message = '';
      let username = '';
      let mail = '';
    
      const ss = SpreadsheetApp.openById(FORMAT_SHEET_ID)
      const sheet = ss.getSheetByName(FORMAT_SHEET_NAME)
    
      //スプレッドシートから設定内容を取得する
      let SendInfobuf = sheet.getRange(1, 1, 11, 3).getValues()
    
      const Cchk = 0  //チェックボックスの値の位置
      const Clmv = 2  //項目の値の位置
    
      const Lsubject = 0    // 件名
      const Lcontents = 1   // 本文
      const Lfromadder = 2  // 送信元メールアドレス
      const Lfromname = 3   // 送信元名前
      const Latendmadder = 4  // 通知先メールアドレス
      const Latendsubject = 5 // 通知先への件名
      const Latendcontents = 6 // 通知先への本文
      const Lmailaddercaption = 9 // フォーム上のメールアドレスのキャプション
      const Lnamecaption = 10 //フォーム上の名前のキャプション
    
      //フォーム内の名称
      const ITEM_MAILADDRESS = SendInfobuf[Lmailaddercaption][Clmv]//メールアドレス"
      const ITEM_NAME_TITLE = SendInfobuf[Lnamecaption][Clmv]//お名前(ニックネーム可)
    
      //フォームから各項目の値を取得
      for (let i = 0; i < itemResponses.length; i++) {
        let itemResponse = itemResponses[i];
        let question = itemResponse.getItem().getTitle();
        let answer = itemResponse.getResponse();
    
        if (question == ITEM_MAILADDRESS) {
          mail = answer;
        }
        if (question == ITEM_NAME_TITLE) {
          username = answer;
        }
        message += (i + 1).toString() + '. ' + question + ': ' + answer + '\n';
      }
    
      //返信メールの作成
      let subject = SendInfobuf[Lsubject][Clmv]//件名の取得
      let contents = SendInfobuf[Lcontents][Clmv] //本文の取得
    
      subject = subject.replace("%name%", username);//%name%を置換する
       let result = contents //初期値を代入
    
      do {
    
        contents = result //結果を代入
        result = contents.replace("%name%", username);//%name%を置換する
    
        console.log(result)
      } while (result !== contents)
      
    
      let options =
      {
        from: SendInfobuf[Lfromadder][Clmv],
        name: SendInfobuf[Lfromname][Clmv]
      }
    
      //登録者にメールを送信する
      if (SendInfobuf[Lfromadder][Cchk]) {  //送信元メールアドレスがon
        console.log("送信元を変更 " + SendInfobuf[Lfromadder][Clmv])
        GmailApp.sendEmail(mail, subject, contents, options) //登録者にメールを送信する
      }
      else {
        GmailApp.sendEmail(mail, subject, contents) //登録者にメールを送信する
      }
    
    
      if (SendInfobuf[Latendmadder][Cchk]) {  //通知先メールアドレスがon
        console.log("通知先メールアドレスがon")
        console.log(SendInfobuf[Latendmadder][Clmv])
        subject = SendInfobuf[Latendsubject][Clmv]  //件名の取得
        contents = SendInfobuf[Latendcontents][Clmv] //本文の取得
        contents += '\n\n' + message;
    
        GmailApp.sendEmail(SendInfobuf[Latendmadder][Clmv],
          SendInfobuf[Latendsubject][Clmv],
          contents)
      }
      else {
        console.log("通知先メールアドレスがoff")
      }
    
    }
    

    Step2.
    「返信メールフォーマット」のシート
    あなたのスプレッドシート内にコピペします。

    (シート名を「返信メールフォーマット」に変更する)

    Step3.

    ①コピーした「返信メールフォーマット」のURLのa.の部分をコピーし

    以下の XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXxに貼り付けます。

    //★スプレッドシートのIDz*URLのユニークな長い部分
    var FORMAT__SHEET_ID = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
    

    Step4.

    シート名が一致しているか確認しセーブする。

    //★設定項目が記載してあるシートの名称
    const FORMAT_SHEET_NAME = "返信メールフォーマット";
    

    Step5.

    フォームのキャプションが同じであることを確認する。

     

     

    トリガーの設定

    Step1.

    トリガーを設定します。

     

     

     

     

    マインドセットします。

    マインドセット
    一歩踏み込むこむ事で快適さが待っている

    ここまで、読んでいただきありがとうございます。

    おそらくあなたは、GAS(Google Apps Script)なるものを
    触ると聞き、二の足を踏みそうになったと思います。

    そして多くの方が、ここまで来る前に
    自分には関係ない世界だと諦めたことだと思います。

     

    でも、ちょっと頑張ってやるだけで、
    Googleフォームで「自動返信メール」が送れるようになるのです。

    多くの人が挫折した中で、
    あなたはすばらしいです。

    では、今回のスプレッドシートマスターへの究極の方法です。

    Step1.
    Googleフォームを作成する
    Step2.
    「返信メールフォーマット」のシート
    あなたのスプレッドシート内にコピペする。

    Step3.
    スクリプトをコピペする

    Step4.
    スプレッドシートのIDを変更する

    Step5.
    トリガーを設定する

    これだけです。

    では、早速 Googleフォームを作成してください
    今すぐです。

    最後までご覧いただきありがとうございます。

    ps.


    2021/03/14 スクリプトを改善しました。

     

    スクリプトの中身について知りたい場合は、こちら↓

     

    Googleフォーム関連

    コメント

    1. たろー より:

      いつも色々と参考にさせていただいてます。

      現在、スプレッドシートの文章を変数としたHTMLメールを送信する社内システムを利用しているのですが、常に新規のメールという扱いになり、受信したメールに対して返信(同スレッドID)という形で送信することができません。

      重複管理の都合、スレッドIDやメッセージIDは既に抽出できている状態なのですが、例えば送信時にスレッドIDを付与するなどして、特定のメールに対してスプレッドシートから返信する事は可能でしょうか?

      • hiroshi より:

        実現できれば便利そうなのですが、sendEmailのパラメータにはないので、
        現時点では、難しそうです。

    タイトルとURLをコピーしました