Google Apps Script报TypeError: Cannot read property '1' of undefined怎么修复
Google Apps Script 报TypeError: Cannot read property '1' of undefined的修复方案
报错根因
该报错和data数组的初始化写法无关,核心原因是遍历索引超出了data数组的实际长度:访问data[i][1]时,data[i]本身为undefined,所以无法读取它的1属性。
sheet.getDataRange().getValues()返回的二维数组长度,等于Cal-0表中实际包含内容的总行数,数组索引从0开始,对应表格的第一行。- 代码直接从
i=1999开始遍历,要求表格至少有2000行有内容的行才能取到data[1999],如果表格实际有内容的行数不足2000,data[1999]就为undefined,访问它的索引1属性就会触发报错。
修复方案
在遍历前增加长度校验,避免索引越界,修复后代码如下:
function find () { let ss = SpreadsheetApp.getActiveSpreadsheet(); let sheet = ss.getSheetByName("Cal-0"); let data = sheet.getDataRange().getValues(); // 可先打印实际获取到的行数,确认是否符合预期 Logger.log('实际获取到的有内容的行数:' + data.length); // 遍历上限取2005和data.length的较小值,避免越界 for(let i = 1999; i < Math.min(2005, data.length); i++){ // 先判断当前行存在,再访问行内的列属性 if (data[i] && data[i][1] === ""){ break; } Logger.log('W0:' + data[i][0]) }; }
补充说明
如果打印的data.length确实小于2000,说明当前Cal-0表没有足够多的有内容的行,可确认是否表名填写错误,或是需要调整遍历的起始索引。
内容的提问来源于stack exchange,提问作者Hector Eduardo Garcia Sanchez
相关产品推荐
相关产品推荐

