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

Google Apps Script自定义查找函数返回值全部异常问题求助

问题原因及修复方案

核心问题

你的脚本所有结果都返回it is false,根源在这行判断逻辑:

row[0].toString().toLowerCase().indexOf(searchTerm) > 1
  • 当单元格是布尔值TRUE时,row[0].toString().toLowerCase()会得到"true",调用indexOf("true")返回0(匹配起始索引),0不大于1,条件不成立。
  • 当单元格是FALSE时,indexOf("true")返回**-1**,同样不满足>1的条件。
    所以无论数据是TRUE还是FALSE,都会进入false分支。

修复方案

方案1:直接判断布尔值(推荐,更高效)

因为你的数据本身就是布尔类型(TRUE/FALSE),不需要转字符串处理,直接判断即可:

function findCompliant() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sh = ss.getSheetByName('Sheet23');
  var rg = sh.getRange(2,1,sh.getLastRow() - 1,1);
  var v = rg.getValues();
  const result = v.map(row => row[0] ? ["It is true"] : ["it is false"])
  sh.getRange(2,3,result.length,1).setValues(result);
}

方案2:修正字符串匹配逻辑

如果坚持用字符串匹配,把判断条件改成存在匹配而非索引大于1,或者直接做全等匹配(更严谨):

// 方式A:判断是否存在匹配
const result = v.map(row => row[0].toString().toLowerCase().indexOf("true") !== -1 ? ["It is true"] : ["it is false"])

// 方式B:完全匹配(推荐,避免部分匹配误判)
const result = v.map(row => row[0].toString().toLowerCase() === "true" ? ["It is true"] : ["it is false"])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 13:36:32