Google Apps Script中Array的includes方法失效问题咨询
为什么Google Apps Script里数组的includes方法失效?
这个问题我之前踩过坑!其实根源出在Google Apps Script的运行时引擎上,咱们一步步拆解:
问题原因
你当前的脚本大概率在使用旧版的Rhino引擎(Mozilla开发的JavaScript引擎),它仅支持到ES5标准。而Array.prototype.includes是ES6(ES2015)才新增的数组方法,Rhino根本不认识这个函数——哪怕Array.isArray(array1)能正确返回true(因为数组类型判断是ES5支持的),也没法调用它没有实现的方法,这就是你看到报错的原因。
而indexOf是ES3就存在的老方法,Rhino完全兼容,所以能正常工作。
解决办法
方法1:切换到V8运行时(推荐)
Google Apps Script现在支持Chrome V8引擎,它完全兼容ES6及之后的语法,启用后就能直接用includes了:
- 打开你的脚本编辑器
- 点击右上角的⚙️设置图标
- 在设置页面勾选启用Chrome V8运行时
- 保存设置,回到编辑器重新运行脚本
启用后,你的测试代码里array1.includes("A")会正常返回false,完全符合预期。
方法2:手动添加polyfill(兼容旧引擎)
如果因为某些原因没法切换到V8(比如旧脚本有兼容性问题),可以自己给数组对象补全includes方法,把这段代码放在脚本最顶部:
if (!Array.prototype.includes) { Array.prototype.includes = function(searchElement) { return this.indexOf(searchElement) !== -1; }; }
这样Rhino引擎就能识别includes方法了,功能和原生实现一致。
内容的提问来源于stack exchange,提问作者Ricardo Coto Oviedo
相关产品推荐
相关产品推荐

