【发布时间】:2021-01-06 05:14:19
【问题描述】:
我正在尝试通过参考我的谷歌表格数据让我的代码发送电子邮件。我正在使用 Apps 脚本,这是代码。然而,当我运行我的函数“sendEmail()”时,我得到了“typeError:”cannot read property “1” of undefined(line 17)”。
代码行 17
var currentEmail = rows[i][1];
这是完整的代码。
var ss = "1kuTkOuCd-wKTS2564oHdxALFbFo-IeyjzToYYhB6NrQ";
var SheetName = "FormResp";
function getRows(){
var rangeName = 'FormResp!A2:E';
var rows = Sheets.Spreadsheets.Values.get(ss, rangeName).values;
return rows;
}
function sendEmails() {
var ss_1 = SpreadsheetApp.openById(ss);
var sheet = ss_1.getSheetByName(SheetName);
var lr = sheet.getLastRow();
for (var i = 0;i<=lr;i++){
rows=getRows();
var currentEmail = rows[i][1];
var startingdate = rows[i][3];
var endingdate = rows[i][4];
MailApp.sendEmail(currentEmail,"Thank You for Applying Leave via Leave form: your request leave starting" + startingdate + "until" + endingdate,"Hello");
}
}
function testgetrow(){
var nama = getRows();
var x = "";
}
我确实创建了一个测试函数“testgetrow()”来检查我的数据,并且我确实设法运行该函数而没有任何错误,并且我确实确认我的 getRows() 函数中有值。
我的 getRows() 函数正常工作,数组中有一个值,如下图所示。
【问题讨论】:
-
这个
for (var i = 0;i<=lr;i++)应该是for (var i = 0;i<lr;i++) -
使用像
A2:E这样的范围是个问题,因为你最终会在底部有很多空行,必须过滤掉。
标签: javascript google-apps-script