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
相关产品推荐
相关产品推荐

