Google Apps Script报TypeError: Cannot read property 'getLastRow' of null如何解决
报错原因与解决方案
你遇到的TypeError: Cannot read property 'getLastRow' of null报错,核心原因是代码尝试调用getLastRow()的Sheet对象实际为null,也就是代码没有成功获取到你指定的工作表,结合代码存在的其他问题,具体修复步骤如下:
问题1:未成功获取工作表对象
触发该报错的常见原因分两种:
- 如果你的脚本是直接在script.google.com新建的独立脚本,
SpreadsheetApp.getActive()无法定位到目标谷歌表格,自然获取不到对应工作表。可以替换为按表格ID获取:
谷歌表格的ID可以从表格URL中提取,是URL中d/和/edit之间的字符串,替换到以下代码的对应位置即可:// 把引号内的内容替换为你自己的表格ID var Sheet = SpreadsheetApp.openById("你的表格ID").getSheetByName("IPP1"); - 如果你的脚本是绑定到目标表格的容器脚本,请再次确认工作表名称和代码中填写的
"IPP1"完全一致,没有多余的首尾空格、大小写差异,确认工作表没有被删除或隐藏。
问题2:变量名大小写不统一
JavaScript是大小写敏感的语言,你代码中定义的工作表变量是大写S开头的Sheet,但后续getRange调用时用的是小写s开头的sheet,修复完第一个问题后运行到此处也会触发未定义报错,需要统一变量名。
修正后完整代码
function myFunction() { // 独立脚本请把getActive替换为openById("你的表格ID"),绑定脚本可以保留当前写法 var sheet = SpreadsheetApp.getActive().getSheetByName("IPP1"); var lastRow = sheet.getLastRow(); var emailAddress = sheet.getRange(lastRow, 4).getValue() ; var subject = 'XX'; var bcc = "XX@gmail.com"; //Create the message body var name= sheet.getRange(lastRow, 2).getValue(); var message = 'XXX'; MailApp.sendEmail(emailAddress, subject, message, {bcc:bcc}); }
内容的提问来源于stack exchange,提问作者Tarida Dalai
相关产品推荐
相关产品推荐

