2017-11-29 12 views
0

として、私は次のコードを使用してシートから電子メールを送信していますが、私は問題を持って送信するために...シートAppsスクリプト - ループ行は電子メール

私が送信され、次の繰り返しに移動することはできませんcolumn = "Yes" ie:送信された列= ""の行のみを含めるようにします

ご協力いただきありがとうございます。

function sendEmail() { 
 

 
//setup function 
 
var ActiveSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); 
 
var StartRow = 2; 
 
var RowRange = ActiveSheet.getLastRow() - StartRow + 1; 
 
var WholeRange = ActiveSheet.getRange(StartRow,1,RowRange,11); 
 
var AllValues = WholeRange.getValues(); 
 

 
var message = ""; 
 
    
 
    //iterate loop 
 
for (i in AllValues) { 
 

 
    //set current row 
 
var CurrentRow = AllValues[i]; 
 

 
    //define column to check if sent 
 
const EmailSent = CurrentRow[11]; 
 
    
 
    //if row has been sent, then continue to next iteration 
 
    if (EmailSent == "Yes") 
 
    continue; 
 
    
 
    //set HTML template for information 
 
    message += 
 
     "<p><b>Date of Works: </b>" + CurrentRow[0] + "</p>" + 
 
     "<p><b>Customer: </b>" + CurrentRow[1] + "</p>" + 
 
     "<p><b>Project No: </b>" + CurrentRow[2] + "</p>" + 
 
     "<p><b>Project: </b>" + CurrentRow[3] + "</p>" + 
 
     "<p><b>Location: </b>" + CurrentRow[4] + "</p>" + 
 
     "<p><b>Site Contact: </b>" + CurrentRow[5] + "</p>" + 
 
     "<p><b>Starting Point: </b>" + CurrentRow[6] + "</p>" + 
 
     "<p><b>Start Time: </b>" + CurrentRow[7] + "</p>" + 
 
     "<p><b>Truck Size: </b>" + CurrentRow[8] + "</p><br><br>"; 
 
    
 
    //set the row to look at 
 
    var setRow = parseInt(i) + StartRow; 
 

 
    
 
    //mark row once Sent 
 
    ActiveSheet.getRange(setRow, 11).setValue("Yes"); 
 
} 
 

 
    //define who to send email to 
 
    var SendTo = "[email protected]" 
 
    
 
    //set subject line 
 
    var Subject = "#6 Test - 2 - Selected Rows"; 
 

 

 
    //send the actual email 
 
    MailApp.sendEmail({ 
 
     to: SendTo, 
 
     cc: "", 
 
     subject: Subject, 
 
     htmlBody: message, 
 
}); 
 
}

+0

ときemailsent ==はいどうしますか? –

+0

CurrentRow 11 = yesの場合、現在の行をスキップして次へ進みます。 – Nish1585

+0

私は理想的には、テーブルをフィルタリングし、可視範囲のみを電子メールの本文に書式設定されたテーブルとして送信したいと思います。 私はそれを働かせることができませんでしたが、これは次善策のようでしたか? – Nish1585

答えて

0

これを試してみてください。

function sendEmail(){ 
    var ss=SpreadsheetApp.getActive(); 
    var sh=ss.getActiveSheet(); 
    var startRow=2; 
    var rg=ss.getDataRange(); 
    var vA=rg.getValues(); 
    var message=""; 
    for(var i=1;i<vA.length;i++){ 
    message +="<p><b>Date of Works: </b>" + vA[i][0] + "</p>" + "<p><b>Customer: </b>" + vA[i][1] + "</p>" + "<p><b>Project No: </b>" + vA[i][2] + "</p>" + "<p><b>Project: </b>" + vA[i][3] + "</p>" + "<p><b>Location: </b>" + vA[i][4] + "</p>" + "<p><b>Site Contact: </b>" + vA[i][5] + "</p>" + "<p><b>Starting Point: </b>" + vA[i][6] + "</p>" + "<p><b>Start Time: </b>" + vA[i][7] + "</p>" + "<p><b>Truck Size: </b>" + vA[i][8] + "</p><br><br>"; 
    var SendTo="[email protected]" 
    var Subject="#6 Test - 2 - Selected Rows"; 
    if(vA[i][11]!='Yes'){ 
     MailApp.sendEmail({to: SendTo,cc: "",subject: Subject,htmlBody: message,}); 
     sh.getRange(i+1,12).setValue('Yes'); 
    } 
    } 
} 
関連する問題