2017-03-12 44 views
0

我正在尋找一種方法來使用Google腳本(基本上與JavaScript相同)遍歷電子表格中的響應。它工作正常,但問題是此代碼不斷髮送已發送的電子郵件中的數據。我知道JavaScript很少,但我認爲刪除前一行並且只遍歷一行是有意義的。以下是目前爲止的代碼:如何通過Google電子表格上的行來運行?

function autoEmail() { 
var sheet = SpreadsheetApp.getActiveSheet(); 
var startRow = 2; 
var numRows = 2; 
var dataRange = sheet.getRange(startRow, 1, numRows, 7) 
var data = dataRange.getValues(); 
for (i in data) { 
var column = data[i]; 
var emailAddress = "OMITTED FOR PRIVACY"; 
var message = column[3] + ", who is a " + column[4] + " Scout, wants to have a " + column[6] + " on " + column[5] + ". You can contact him at " + column[1] + ". This is an automated email sent by OMITTED FOR PRIVACY."; 
var subject = column[3] + " Wants To Rank Up!"; 
MailApp.sendEmail(emailAddress, subject, message); 
} 
} 

有什麼建議嗎?

回答

0

所以你說的處理當前行,然後刪除它,所以你不會意外重新處理它?看起來合理,但如果出現問題,不要刪除數據。也許你可以在每行末尾的空欄中填寫「完成」,然後在發送新電子郵件之前檢查它是否存在?

現在有些問題,所以我可以幫助更多 -

你幹嗎打兩行(numRows = 2)?看起來好像你只想獲取一行或N(條目數)行。

而且,我一直聽說,在Javascript中,最好使用一個正常的循環......

for (var colNum = 0; colNum < data.length; colNum++) { 
    var column = data[colNum]; 

...而不是一個for-in循環...

for (i in data) { 
    var column = data[i]; 

對類似數組的對象,因爲「繼承的屬性也被枚舉」(more info here)。

編輯:說到這,當你做到這一點

for (i in data) { 
    var column = data[i]; 

嘗試在循環Logger.log(i);登錄i因爲我認爲i可能是一個數據塊,而不是二維數組中的索引。

編輯完

聲明:我知道堆棧溢出不建議要求澄清在回答中,但我沒有足夠的聲譽還沒有添加「註釋」。 :-)

相關問題