有人能够确定发生了什么事吗?这似乎是某种类型的循环错误,但我自己也不确定。
我收到的“异常:未找到范围”错误消息引用了以下行:
rows.forEach(function(row)
和
var eventEmail = eventsData.getRange(row[5]).getValue();
。
我的列设置为: 复选框列 标题 开始日期 结束日期 描述 电子邮件 联系人
function SendEmails ()
{
// Extract events data
var eventsData = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("SHEET_NAME");
var rows = eventsData.getDataRange().getValues();
var templateText = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("SHEET_NAME_2").getRange(1, 1).getValue();
// Discount header row
var headers = rows.shift();
// Identify only rows that are checked to apply function and run log
rows.forEach(function(row)
{
if(row[0])
{
Logger.log(JSON.stringify(row));
// Extract reminder template and send reminder emails for selection
var eventEmail = eventsData.getRange(row[5]).getValue();
var eventTitle = eventsData.getRange(row[1]).getValue();
var eventPOC = eventsData.getRange(row[6]).getValue();
var eventDesc = eventsData.getRange(rows[4]).getValue();
var messageBody = templateText.replace("{name}",eventPOC).replace("{title}",eventTitle).replace("{description}",eventDesc);
var subjectLine = "Reminder: " + eventTitle + " Upcoming Event";
MailApp.sendEmail(eventEmail, subjectLine, messageBody);
}
});
}
在我进行一些编辑之前,此函数一直有效,以便它仅针对选中复选框的行运行。
它似乎成功地识别了已选中复选框的行。它似乎也贯穿了第一个循环,但之后发生了一些我无法识别的事情。
我尝试更改范围引用以确保引用正确的列。
我很感激任何指导!
看起来问题出在这一行和类似的行上:
eventsData.getRange(row[5]).getValue()
。getRange(row[5])
抛出错误,因为坐标/名称等于 的值的范围row[5]
不存在。您已经从电子表格中提取了值,因此您可以直接使用该
row
数组,如下所示:var eventEmail = row[5]
。这是更新后的代码: