Google Sheet脚本设置筛选公式失败问题求助
问题解决:Google Sheets脚本设置筛选公式失败
错误原因
你的代码核心问题是公式字符串的引号嵌套错误,导致JavaScript语法报错,无法保存运行:
- 外层用双引号包裹公式时,内部的双引号未转义,还多了冗余双引号,造成语法混乱。
- 额外提一句:你定义的
formula变量里用了位运算符|,应该换成逻辑或运算符||,不过这个变量没实际用到,不影响当前功能,但建议修正。
修正后的代码
function myfunction5() { let ss = SpreadsheetApp.getActiveSheet(); let filter = ss.getFilter(); // 修正逻辑或运算符,后续需要用到可保留 const formula = r => r[4] == "Maxime" || r[6] == "Eric"; // 方案1:用单引号包裹公式,内部双引号无需转义 const newCriteria = SpreadsheetApp.newFilterCriteria() .whenFormulaSatisfied('=OR(D3="George"; E3="Eric")') .build(); // 方案2:用双引号包裹,内部双引号转义为\" // const newCriteria = SpreadsheetApp.newFilterCriteria() // .whenFormulaSatisfied("=OR(D3=\"George\"; E3=\"Eric\")") // .build(); filter.setColumnFilterCriteria(3, newCriteria); }
额外注意事项
- 确认
setColumnFilterCriteria(3, newCriteria)里的列索引3(对应C列)是你要应用筛选的列,你的公式基于D、E列值,这个逻辑是成立的。 - 确保当前工作表已存在筛选器(
ss.getFilter()不会返回null),如果没有,需要先调用ss.createFilter()创建筛选器,否则会报错。
内容的提问来源于stack exchange,提问作者Sébastien Chevin
相关产品推荐
相关产品推荐

