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

Apps Script中filter()报错:Uncaught TypeError: Cannot read properties of null (reading 'filter')

解决空列导致的filter报错问题

错误原因分析

报错Uncaught TypeError: Cannot read properties of null (reading 'filter')本质是dados变量为null或undefined时调用了filter方法。虽然你示例里硬编码了dados数组,但实际从Google Sheets读取数据时,如果指定范围无数据,getValues()会返回null;另外行内空单元格会被解析为undefined,若回调函数未处理这类值也可能引发问题。

解决方案

1. 先校验dados的有效性

在调用filter前,先确保dados是有效数组,避免在null/undefined上调用方法:

function procurar(){
  // 实际场景中通常是从Sheets读取数据,示例:
  // var dados = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1").getDataRange().getValues();
  dados = [[1.0, "LEROY MERLIN - PRODUTO BOLORES E SANYTOL", "COMPRAS HIGIENIZAÇÃO", 8.08, "Banco", , , , , "Expense", , "C", , "FR443", 0.0, 0.0, 0.0, 1.51, 0.0, 6.57], [2.0, "JARDIM GARVE - 3 SACOS SIRO ROYAL", "COMPRAS JARDIM", 49.51, "Banco", , , , , "Expense", , "C", , "HT525", 2.8, 0.0, 0.0, 0.0, 0.0, 46.71]];
  var searchInput = "LEROY";
  var searchWords = searchInput.split(/\s+/);
  var searchColumns = [1,2,3];
  
  // 校验dados是否为有效数组
  let resultadosProcura = [];
  if (Array.isArray(dados)) {
    resultadosProcura = searchInput === "" ? [] : dados.filter(function(r){
      return searchWords.every(word => {
        return searchColumns.some(col => {
          // 兜底处理空单元格,转为空字符串后再匹配
          const cellValue = r[col] ? String(r[col]).toLowerCase() : "";
          return cellValue.includes(word.toLowerCase());
        });
      });
    });
  }
  // 后续处理resultadosProcura
}

2. 处理行内空单元格值

在回调函数中对要检查的单元格值做兜底:将null/undefined转为空字符串,避免调用toLowerCase()或includes()时出错。

额外优化点

  • 示例中未加引号的字符串(如LEROY MERLIN - PRODUTO BOLORES E SANYTOL)要补加双/单引号,否则会触发语法错误。
  • 若从Sheets读取数据,推荐用getDisplayValues()替代getValues(),它直接返回字符串格式内容,空单元格返回空字符串,减少类型处理成本:
    var dados = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1").getDataRange().getDisplayValues();
    

内容的提问来源于stack exchange,提问作者Octávio Teixeira

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 19:03:27