Apps Script获取Google Sheet指定列范围 解决VLOOKUP导致的N/A报错
问题核心原因
你调用的范围获取方法确实存在错误:
getDataRange()是无参数方法,它会自动识别并返回工作表内所有包含内容的连续单元格范围,你传入的"A:EM"参数会被直接忽略,因此脚本依然会读取到后面带#N/A错误的VLOOKUP列,导致运行异常。
正确修改方案
替换范围获取逻辑,使用带A1范围参数的getRange()方法明确指定读取A到EM列的有效数据即可,修改后的代码如下:
var sheet = SpreadsheetApp.getActive().getSheetByName("Form responses 1"); // 先获取当前工作表的最后一行有效数据行号 var lastRow = sheet.getLastRow(); // 明确指定读取A1到EM列最后一行的范围 var range = sheet.getRange("A1:EM" + lastRow); var values = range.getValues(); var lastRowValues = values[lastRow - 1]; Logger.log(lastRowValues);
额外优化建议(可选)
如果你的脚本是绑定表单提交触发器运行的,完全不需要手动读取范围,可以直接通过触发器的事件对象获取最新提交的行数据,效率更高也不会读取到多余列:
// 表单提交触发函数示例 function onFormSubmit(e) { // 直接获取最新提交的所有表单字段值,天然不包含后续新增的VLOOKUP列 var lastRowValues = e.values; Logger.log(lastRowValues); // 后续邮件发送逻辑直接复用lastRowValues即可 }
内容的提问来源于stack exchange,提问作者Parr
相关产品推荐
相关产品推荐

