You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:Google Sheets Apps Script报TypeError: Cannot read properties of undefined (reading 'length')

解决Google Sheets Apps Script中的"TypeError: Cannot read properties of undefined (reading 'length')"错误

错误根源分析

  • toLowerCase调用错误:代码中input.getResponseText().tolowercase缺少括号,toLowerCase是字符串方法,必须通过()调用才能返回转换后的小写字符串。未加括号时userSelectedRep是函数对象,导致filter后newData为空数组,此时newData[0]为undefined,访问newData[0].length触发错误。
  • 未处理空数组场景:如果过滤后没有匹配数据,newData是空数组,直接访问newData[0].length必然报错。

修复后的完整代码

function showInputBox(){
  var ui = SpreadsheetApp.getUi();
  var input = ui.prompt("Please enter your Name.", ui.ButtonSet.OK_CANCEL);

  if(input.getSelectedButton() == ui.Button.OK){
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var ws = ss.getSheetByName("original");
    
    // 检查目标工作表是否存在
    if(!ws){
      ui.alert("名为'original'的工作表不存在,请确认!");
      return;
    }
    
    var lastRow = ws.getLastRow();
    // 检查是否有可处理的数据行
    if(lastRow < 2){
      ui.alert("'original'工作表中没有可筛选的数据!");
      return;
    }
    
    var data = ws.getRange("A2:G" + lastRow).getValues();
    // 修正toLowerCase调用,转换为小写字符串
    var userSelectedRep = input.getResponseText().toLowerCase();
    var newData = data.filter(function(r){ 
      // 统一转为小写再比较,避免大小写不匹配
      return String(r[2]).toLowerCase() === userSelectedRep; 
    });
    
    // 检查筛选结果是否为空
    if(newData.length === 0){
      ui.alert("未找到与'" + userSelectedRep + "'匹配的数据!");
      return;
    }
    
    var newWs = ss.insertSheet(userSelectedRep);
    // 写入筛选后的数据
    newWs.getRange(2, 1, newData.length, newData[0].length).setValues(newData);
    // 复制原表表头到新表
    ws.getRange(1, 1, 1, 7).copyTo(newWs.getRange(1, 1));
  }
}

额外优化点

  1. 增加工作表存在性校验,避免因工作表不存在导致后续报错
  2. 检查数据行是否存在,防止获取空数据范围
  3. 筛选时统一转换为小写再比较,避免大小写差异导致的匹配失败
  4. 空结果时弹出提示,提升用户体验
  5. 自动复制原表表头到新表,让新表结构更完整

内容的提问来源于stack exchange,提问作者Unknown Users

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 16:39:53