前提・実現したいこと
2つのgoogleformを1つのスプレッドシートで管理し、内容の違う自動返信メールを送りたい。
前提・実現
回答形式の2つのgoogleformを作成し、
1つのスプレッドシートで管理するために、シートを分けて関連付けました。
(テスト1は回答フォーム1、テスト2は回答フォーム2とします)
form送信後に自動返信メールを送りたいのですが、メール本文の内容が回答フォームごとに違うため、スクリプトを新規で追加しました。
フォームに回答後、メールは届きますが、テスト1用とテスト2用両方届いてしまいます。
全くの初心者なので、ネットで見たソースを参考に作成しております。
シート別に違う内容のメールを送ることはそもそも不可能なのでしょうか…
現在2通届いてしまうソースはこちらです。
▼テスト1 フォームの回答 1
function auto_reply() { //自動返信メールの件名 var title = "【テスト1用(自動返信)】"; //自動返信メールの本文1(\nは改行) var body = "この度はお申し込みいただきまして、誠にありがとうございます。\n" + "お問合せいただいた内容は次の通りです。\n" + "------------------------------------------------------------\n\n" //自動返信メールの本文2(\nは改行) var body2 = "------------------------------------------------------------\n\n" + "内容を確認の上、あらためて返信させていただきます。\n"; + "本メールに心当たりが無い場合は、その旨を記載の上ご返信下さいますようお願い申し上げます。\n\n"; //本文作成用の変数 var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('フォームの回答 1'); var row = sheet.getLastRow(); var column = sheet.getLastColumn(); var range = sheet.getDataRange(); //メールアドレス保存用の変数(最後のメール送信時に使用。) var mail = ""; for (var i = 1; i <= column; i++ ) { //スプレッドシートの入力項目名を取得 var header = range.getCell(1, i).getValue(); //スプレッドシートの入力値を取得 var value = range.getCell(row, i).getValue(); //本文1(body)にスプレッドシートの入力項目を追加 body += "■"+header+"\n"; //本文1(body)にフォームの入力内容を追加 body += value + "\n\n"; //スプレッドシートの入力項目が「お名前」の場合は、「様」を付け本文の前に追加 if ( header === 'お名前' ) { body = value+" 様\n\n"+body; } //フォームの入力項目が「メールアドレス」の場合は、変数mailに代入 if ( header === 'メールアドレス' ) { mail = value; } } //本文1に本文2を追加 body += body2; //宛名=mail、件名=title、本文=bodyで、メールを送る GmailApp.sendEmail(mail,title,body); }
▼テスト2 フォームの回答 2
function myFunction() { //自動返信メールの件名 var title = "【テスト2用(自動返信)】"; //自動返信メールの本文1(\nは改行) var body = "この度はお申し込みいただきまして、誠にありがとうございます。\n" + "------------------------------------------------------------\n\n" //自動返信メールの本文2(\nは改行) var body2 = "------------------------------------------------------------\n\n" + "ご来店を心よりお待ちしております。\n\n"; //本文作成用の変数 var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('フォームの回答 2'); var row = sheet.getLastRow(); var column = sheet.getLastColumn(); var range = sheet.getDataRange(); //メールアドレス保存用の変数(最後のメール送信時に使用。) var mail = ""; for (var i = 1; i <= column; i++ ) { //スプレッドシートの入力項目名を取得 var header = range.getCell(1, i).getValue(); //スプレッドシートの入力値を取得 var value = range.getCell(row, i).getValue(); //本文1(body)にスプレッドシートの入力項目を追加 body += "■"+header+"\n"; //本文1(body)にフォームの入力内容を追加 body += value + "\n\n"; //スプレッドシートの入力項目が「お名前」の場合は、「様」を付け本文の前に追加 if ( header === 'お名前' ) { body = value+" 様\n\n"+body; } //フォームの入力項目が「メールアドレス」の場合は、変数mailに代入 if ( header === 'メールアドレス' ) { mail = value; } } //本文1に本文2を追加 body += body2; //宛名=mail、件名=title、本文=bodyで、メールを送る GmailApp.sendEmail(mail,title,body); }
ちなみに、
スプレッドシートにメールアドレスはちゃんとシートごとに追加されています。
プロジェクトエディタの実行(再生マーク)では正しくメール1通のみです。
フォームに回答して自動送信になると2通となります。
どこが間違っているのか、そもそもできないのかもわからず、困っております…
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー