質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Google フォーム

Google フォームは、 Google社が提供しているアンケートフォーム作成および集計ができる無料のツール。Googleアカウントがあれば利用が可能です。集計データは、スプレッドシートに収集され、データ分析もできます。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

1588閲覧

Google Apps Scriptでの不具合 確認メール連続送信

gorudora

総合スコア11

Google フォーム

Google フォームは、 Google社が提供しているアンケートフォーム作成および集計ができる無料のツール。Googleアカウントがあれば利用が可能です。集計データは、スプレッドシートに収集され、データ分析もできます。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

2クリップ

投稿2019/04/14 13:27

前提・実現したいこと

私は、ある団体の登録フォームと登録内容の確認メールをGoogleフォームとスプレッドシートとGASを
使って作っています。確認メールの完成が目標です。

発生している問題・エラーメッセージ

フォームから送られてきた回答を自動メールで送信する際に、2回以上同じ確認メールが送信されることがあります。 時によってなのかわかりませんが、一回だけの時や、あとから+1通が送られてくるとき、 3回送られるときがあります。 なお、下のソースコード内の文面はプライバシー的に書き換えてます。メールも架空のアドレス(だと思います)です。 また、トリガーはスプレッドシートからフォーム送信時一個のみです。

該当のソースコード

GAS

1function myFunction() { 2 3 //設定 4 5  //メール送信先 6   var admin ="henshinyousuteaka@gmail.com"; 7   var admin2 ="fudannohonnaka@gmail.com"; 8   var Maneger ="daihyounomeado@gmail.com"; 9   var admin_name ="団体"; 10   var cc =""; 11   var bcc = admin2+","+Maneger; 12   var reply = Maneger; 13 14  //件名 15   var subject ="団体へようこそ!"; 16 17  //本文 18   var body 19 ="〈このメールは自動送信です〉\n\n" 20 +"団体に入っていただきありがとうございます!!\n" 21 +"申請を以下の通り受け付けました\n\n" 22 +"-----------------------------\n"; 23 24  //フッター 25   var footer 26 ="-----------------------------\n" 27 +"返信は不要です\n" 28 +"聞きたいことがあったら何でもどうぞ\n" 29 +"連絡先(代表)\n" 30 +"〈"+Maneger+"〉"; 31 32  //入力col 33 var NAME_col="お名前" 34 var MAIL_col="メールアドレス" 35 36  //------------------------------------------------------- 37 38 try{ 39 40 //スプレッドシート指定 41 var spreadsheet =SpreadsheetApp.getActive(); 42 var sheetA =spreadsheet.getSheets()[0]; 43 var rows =sheetA.getLastRow(); 44 var cols =sheetA.getLastColumn(); 45 var rg =sheetA.getDataRange(); 46 47 //セル内容をメール本文に追加 48 for(var i=2;i<=7;i++) 49 {var col_name =rg.getCell(1, i).getValue(); 50 var col_value =rg.getCell(rows,i).getValue(); 51 body +="〈"+col_name+"〉\n"; 52 body +=col_value+"\n\n"; 53 54 //セル利用 55 56  //お名前 57   if(col_name===NAME_col) 58 {body =col_value+"様\n\n"+body;} 59 60   //送信先 61   var to=rg.getCell(rows, 8).getValue(); 62 63 } 64 65 body += footer; 66 67 //送信先オプション 68 var options ={}; 69 if(cc)options.cc=cc; 70 if(bcc)options.bcc=bcc; 71 if(reply)options.replyTo=reply; 72 if(admin_name)options.name=admin_name; 73 74 //メール送信・エラー処理 75 if(to){ 76 MailApp.sendEmail(to,subject,body,options); 77 }else{ 78 MailApp.sendEmail(admin,"〈失敗〉Googleフォームにメールアドレスが指定されていません",body); 79 } 80 }catch(e){ 81 MailApp.sendEmail(admin,"〈失敗〉Googleフォームからメール送信中にエラーが発生",e.messsage); 82 } 83} 84

試したこと

何度も実行ボタンを押したのが原因かと思い、フォームおよびソースコードのコピー、また、トリガーの再指定を行いましたが、変わりませんでした。

補足情報(FW/ツールのバージョンなど)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

この辺で事象報告がありました(この後にも2件くらいあった気がする)が、Formに関連付いているスプレッドシートのスクリプトエディタにコードを書いて、「フォーム送信時」のトリガーをかけると、複数回送信が行われる現象が少し前から発生している模様

対応策として、フォームのスクリプトエディタにコードを書いて「フォーム送信時」のトリガーをかけると、1回になる模様(ただし、回答データの取り方が大幅にかわるので注意を要する)
https://teratail.com/questions/176187
https://teratail.com/questions/174338
https://teratail.com/questions/177064

投稿2019/04/15 13:42

編集2019/04/15 13:43
papinianus

総合スコア12705

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gorudora

2019/04/16 13:11

ありがとうございます! フォームから直接送る仕組みについての文献は少なかったですが、なんとか完成させることができました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問