2017-02-24 6 views
0

以下のスクリプトの目的は、Googleシートからメールを送信することですが、条件が満たされた場合のみ送信します。GoogleのスクリプトからGoogleシートからメールを送信するif条件が機能しない

私のスプレッドシートのM列(12行目)の値は、TRUEまたはFALSEです。セル内で実行されるANDスクリプトに基づいて、セルはTRUEまたはFALSEを表示します。たとえば、TRUEの1つの条件は、列Pが空である(EMAIL_SENTを表示するのではなく)ことです。 ANDステートメントは正常に動作します。

しかし、スクリプトを実行すると、この条件に関係なくメールが送信されます。だから、何かが、私はこのチュートリアルhereに、それをもと

...条件と間違っている...しかし、私はちょうどそのようにそれを実行し、元は私を助けない、どちらか私のために動作するようには思えません推測!

// Create a date object for the current date and time. 
var now = new Date(); 

// This constant is written in column C for rows for which an email 
// has been sent successfully. 
var EMAIL_SENT = "EMAIL_SENT"; 
var SENDYESNO = "FALSE"; 

function sendEmails2() { 
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, 16) 
// Fetch values for each row in the Range. 
var data = dataRange.getValues(); 
for (var i = 0; i < data.length; ++i) { 
var row = data[i]; 
var title = row[0]; 
var name = row[2]; 
var link = row[9]; 
var emailAddress = row[10]; // First column 
var message = row[14];  // Second column 
var emailSent = row[16];  // Third column 
var date = row[17]; 
var yesNo = row[12]; 
if (yesNo != SENDYESNO) { // Prevents sending duplicates 
    var subject = "Sending emails from a Spreadsheet"; 
    GmailApp.sendEmail(emailAddress, subject, "Dear " + title + " " + name + ", \n\nThis is an email report of your link. \n\nYour link is " + link + " \n\nKind regards,\nName ", { 
        from: "[email protected]", 
        name: "My name"}); 
    sheet.getRange(startRow + i, 16).setValue(EMAIL_SENT); 
    sheet.getRange(startRow + i, 17).setValue(now); 
    // Make sure the cell is updated right away in case the script is interrupted 
    SpreadsheetApp.flush(); 
} 
} 
} 

答えて

0

私は、あなたの価値は、列Mが真偽でありテキスト文字列ではないことを推測します。それをテキスト文字列と比較しています。ブール値に対してテストする

var SENDYESNO = false; 

var SENDYESNO = "FALSE"; 

を変更してみてください。また、テストするロジックを変更してifテストを!=から=に変更する

var SENDYESNO = true; 
//more code... 
if (yesNo === SENDYESNO) { //continue with your code... 
+0

ありがとうございました! – touto

関連する問題