2017-06-17 9 views
0

フォーム提出のフィールドの1つに基づいて適切な人に電子メールを送信する次のスクリプトがあります。それは適切に働いていますが、新しいエントリーが提出されるたびに複数の電子メールを送信しています。理由はわかりません。誰かが私のコードでこれを修正するために間違っていることを教えてもらえますか?新しいフォーム提出エントリに重複した電子メールを送信

function sendEmails() { 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var startRow = 2; // First row of data to process 
    var numRows = 2; // Number of rows to process 
    // Fetch the range of cells A2:B3 
    var dataRange = sheet.getRange(startRow, 1, numRows, 3) 
    // Fetch values for each row in the Range. 
    var data = dataRange.getValues(); 
    var email1 = "[email protected]"; 
    var email2 = "[email protected]"; 
    for (i in data) { 
    var row = data[i]; 
    var emailAddress = row[0]; // First column 
    var message = row[1];  // Second column 
    var subject = "Sending emails from a Spreadsheet"; 
    if (message = "cat") { 
    MailApp.sendEmail(email1, subject, message); 
    if (message = "dog") { 
    MailApp.sendEmail(email2, subject, message); 
    } 
    } 
    } 
     } 
+1

あなたのif文で等価のためにテストするために使用==もしくは===を向上させることができました。そうであるように、両方の項目は真であると評価されます。 – ScampMichael

+0

@ScampMichaelはあなたの提案を試みましたが、運がない、それでも複数を送信しています。それは、電子メールの送信先を決定するために新しい行だけをチェックしていないのと同じですが、すべての行をチェックしているかのようです。私はこれをどのように修正するか分からない。 –

+0

email1の数とemail2の数はいくつですか? – ScampMichael

答えて

1

私は、フォームの送信が最後の行で終わると行を反復処理することは不要であるかなり確信しています。これは、配列の式などを使ってフォームの提出シートを改ざんしていないことを前提としています。

function sendEmails() { 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var row = sheet.getLastRow(); 
    var dataRange = sheet.getRange(row, 1, 1, sheet.getLastColumn()); 
    var data = dataRange.getValues()[0]; 

    var email1 = "[email protected]"; 
    var email2 = "[email protected]"; 

    var emailAddress = data[0]; // First column 
    var message = data[1];  // Second column 
    var subject = "Sending emails from a Spreadsheet"; 

    if (message == "cat") { 
    MailApp.sendEmail(email1, subject, message); 
    }; 
    if (message == "dog") { 
    MailApp.sendEmail(email2, subject, message); 
    }; 
    } 

最後の部分は、おそらく、サンディの提案やスイッチ>ケース

+0

お世話になりました!それは今働きます!私は本当にそれを感謝します。 –

2

これらの行:

if (message = "cat") { 
    MailApp.sendEmail(email1, subject, message); 
if (message = "dog") { 
    MailApp.sendEmail(email2, subject, message); 
} 

は次のようになります。

var email;//Create a new variable 

if (message == "cat") { 
    email = email1; 
} else if (message == "dog") { 
    email = email2; 
} 

MailApp.sendEmail(email, subject, message); 
+0

ありがとうございました@sandygood私は今あなたの援助のおかげでこれを動作させることができました! –

関連する問題