Google Apps Script中data.forEach函数括号与冒号语法错误求助
错误原因与修正方案
核心错误点:
- 语法结构错误:
forEach的回调函数写法错误,多写了一个括号,且未用大括号{}包裹函数体,正确的回调函数格式应为function(row) { ... }。 - 变量作用域问题:
emailTemp定义在myFunction函数内部,函数外部的forEach代码无法访问该变量;同时ws、data的定义放在了函数外部,在Google Apps Script中这类操作应放在函数内部执行。 - 变量拼写不一致:定义的变量是
AffilliateID(两个l),但后续引用时写成了AffiliateID(一个l),会导致引用未定义变量的错误。 - 代码闭合不完整:
forEach的回调函数缺少闭合的},同时forEach方法本身也缺少闭合的)。
修正后的完整代码:
function myFunction() { var Name = 1; var Surname = 2; // 统一变量拼写,避免引用错误 var AffiliateID = 24; var ws = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Affiliate Responses"); // 修正范围获取方式:getDataRange无需参数,指定范围用getRange var data = ws.getRange("A4:Y" + ws.getLastRow()).getDisplayValues(); var emailTemp = HtmlService.createHtmlOutputFromFile("Affiliate email"); data.forEach(function(row) { emailTemp.Name = row[Name]; emailTemp.Surname = row[Surname]; emailTemp.AffiliateID = row[AffiliateID]; // 可在此添加邮件发送等后续逻辑,比如MailApp.sendEmail(...) }); }
额外说明:
getDataRange()方法无需传入参数,它会返回工作表的全部已用数据范围;若要指定A4:Y这类自定义范围,需使用getRange()方法。- 确保你的
Affiliate email模板文件存在,且模板内的对应变量能正确接收赋值。 - 变量名建议遵循小驼峰命名法(如
affiliateId),既避免与内置对象/属性重名,也更符合JavaScript编码规范。
内容的提问来源于stack exchange,提问作者Glenn Morris
相关产品推荐
相关产品推荐

