我有一個代碼,它為滿足列CQ =“SI”條件的每一行發送一封電子郵件,目前有3行滿足條件,但是當我運行代碼時,第一行符合條件的電子郵件是發送,然后我收到錯誤 mail.getRange is not a function。我正在嘗試提取一個包含電子郵件串列的單元格,但我不明白為什么它適用于發送的第一封電子郵件然后停止作業。錯誤在第 58 行: var mail= mail.getRange(1,1).getValues(); 代碼如下:
function maildrops(){
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheetByName("REFERENCIAS");
var mail = spreadsheet.getSheetByName("emails");
var lista_refes = SpreadsheetApp.getActive().getSheetByName("REFERENCIAS").getRange("D2:D").getValues(); //event list
var lista_refes_ok1 = lista_refes.reduce(function(ar, e) {
if (e[0]) ar.push(e[0])
return ar;
}, []);
var nombre = SpreadsheetApp.getActive().getSheetByName("REFERENCIAS").getRange("F2:F").getValues(); //event list
var nombre1 = nombre.reduce(function(ar, e) {
if (e[0]) ar.push(e[0])
return ar;
}, []);
var drop = SpreadsheetApp.getActive().getSheetByName("REFERENCIAS").getRange("BB2:BB").getValues(); //event list
var dropv = SpreadsheetApp.getActive().getSheetByName("REFERENCIAS").getRange("CP2:CP").getValues(); //event list
var tickn = SpreadsheetApp.getActive().getSheetByName("REFERENCIAS").getRange("CQ2:CQ").getValues(); //event list
for (var i = 0; i < lista_refes_ok1.length; i ) {
var responses = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("REFERENCIAS");
var nom = nombre1[i];
var dropa = drop[i];
var dropvv = dropv[i];
var refe = lista_refes_ok1[i];
var tick = tickn[i];
if (tick == "SI" ){
var subject = "SS23 cambios drop: " refe ".";
var body = "Hola chicos, el modelo " refe " " nom " ha cambiado del drop " dropvv " al drop " dropa ". \n\nCualquier cosa, podéis contestar a este mail :)";
var mail= mail.getRange(1,1).getValues()
GmailApp.sendEmail(mail, subject, body);
}
}
sheet.getRange('CP3:CP').activate();
sheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: false});
}
代碼的最后幾行試圖在發送電子郵件后清空 CP 列的內容,我無法檢查這部分代碼是否正確,因為在到達這些行之前我得到了錯誤。有人知道如何修復錯誤嗎?任何幫助表示贊賞:)
uj5u.com熱心網友回復:
在您的腳本中, fromvar mail = spreadsheet.getSheetByName("emails");是mailSheet 物件。但是, at var mail = mail.getRange(1, 1).getValues(),mail在第一個回圈中宣告。這樣,在第二次回圈之后,mail就變成了一個二維陣列。在這種情況下,當var mail = mail.getRange(1, 1).getValues()運行時,就會出現這樣的錯誤。我認為這可能是您的問題的原因。為了消除這個問題,下面的修改如何?
從:
for (var i = 0; i < lista_refes_ok1.length; i ) {
var responses = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("REFERENCIAS");
var nom = nombre1[i];
var dropa = drop[i];
var dropvv = dropv[i];
var refe = lista_refes_ok1[i];
var tick = tickn[i];
if (tick == "SI") {
var subject = "SS23 cambios drop: " refe ".";
var body = "Hola chicos, el modelo " refe " " nom " ha cambiado del drop " dropvv " al drop " dropa ". \n\nCualquier cosa, podéis contestar a este mail :)";
var mail = mail.getRange(1, 1).getValues()
GmailApp.sendEmail(mail, subject, body);
}
}
至:
var emailAddress = mail.getRange(1, 1).getValue();
for (var i = 0; i < lista_refes_ok1.length; i ) {
// var responses = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("REFERENCIAS"); // It seems that this is not used.
var nom = nombre1[i];
var dropa = drop[i];
var dropvv = dropv[i];
var refe = lista_refes_ok1[i];
var tick = tickn[i];
if (tick == "SI") {
var subject = "SS23 cambios drop: " refe ".";
var body = "Hola chicos, el modelo " refe " " nom " ha cambiado del drop " dropvv " al drop " dropa ". \n\nCualquier cosa, podéis contestar a este mail :)";
GmailApp.sendEmail(emailAddress, subject, body);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/505235.html
上一篇:模擬資料時回圈增量小于1的問題
