我在ExtendScript中使用bridge来将标签附加到excel文档中的文档。我正在使用js-xlsx库解析excel文档。我正在运行一个for循环来解析单个单元格并获取值,这在我从命令行运行时非常有效。但是,当我在ExtendScript中运行它时,我得到一个异常,即keys()。forEach不是一个函数。出于某种原因,ExtendScript是否以不同方式读取for循环?我无法搞清楚这一点。这是给我带来麻烦的一条线:
var range = {s:{c:0, r:0}, e:{c:1,r:30}};
for (var R = range.s.r; R <= range.e.r; ++R) {
for (var C = range.s.c; C <= range.e.c; ++C) {
var cell_address = xls.utils.encode_cell({c:C, r:R});
答案 0 :(得分:2)
作为一种语言,Extendscript停留在ECMAScript 3上 - 所以它本身并不了解Object.keys()
,也不知道Array.forEach()
。甚至不是JSON
。
官方提到这一点可以在After Effects scripting guide第3页中找到,其中包含:
After Effects脚本使用Adobe ExtendScript语言,这是一种 多个Adobe应用程序使用的扩展形式的JavaScript, 包括Photoshop,Illustrator和InDesign。 ExtendScript 根据ECMA-262实现JavaScript语言 规格。 After Effects脚本引擎支持第3个 ECMA-262标准版,包括其符号和词汇 约定,类型,对象,表达式和语句。 ExtendScript 还实现了E4X ECMA-357规范,该规范定义了访问权限 以XML格式的数据。
以上内容未在PS脚本指南中找到,也未在参考文献中找到。
如果您想使用ES5功能,请添加填充程序,或尝试extendscriptr。 Extendscriptr是一个脚本社区项目(没有Adobe参与),它可以让你编写ES5 / ES6代码然后转换为ES3。
答案 1 :(得分:1)
我想出来了。错误在文件中进一步下降。 ExtendScript或我的版本不支持每个循环,所以我必须写出forEach函数的文件并导入它。