开发者问题收集

未捕获的类型错误:无法读取 null 的属性(读取“slice”) ------ 未捕获的类型错误:无法读取未定义的属性(读取“filter”)

2021-09-15
14397

我非常感谢有关此代码的帮助。它在Google表中工作了,但突然开始出现错误消息。

完整的代码如下:

457540079 849133400 代码> 230383815
3个回答

看起来 dataundefineddataReturned 返回 null 。您可以采取变通方法,例如

var data = []; // define globally

google.script.run.withSuccessHandler(function (dataReturned) {
    if (dataReturned.length) { // check if dataReturned is not null in setDataForSearch function
        data = dataReturned.slice();
    }
}).getDataForSearch();

// then check if data is defined & not empty in search function
var resultsArray = !data.length || searchInput == "" ? [] : data.filter(function (r) {

});

编辑

!data.length || searchInput == "" ?

替换为

data === null || searchInput == "" ?
M. Haseeb Akhtar
2021-09-15

创建如下 if 条件

google.script.run.withSuccessHandler(function(dataReturned){
      if(dataReturned && typeof dataReturned !== 'undefined'){
          data = dataReturned.slice();
      }else {
          data = "null or undefined" 
                 //or do whatever you want in else
     }
    }).getDataForSearch();

它将检查 dataReturned 是否不为 null 或 undefined。如果为 null/undefined/false,它将不会执行 if 条件中提供的任何内容。

为什么会发生错误?
您正尝试从 null/undefined 中获取某些内容。它类似于 您执行的 null.slice()

smilyface
2021-09-17

您还可以尝试类似的方法:

google.script.run.withSuccessHandler(function(dataReturned){
      data = dataReturned?.slice();
    }).getDataForSearch();
Lucas Souza
2021-10-21