对于ExtendScript中的循环 - keys()。forEach不是函数

时间:2016-07-21 15:22:48

标签: javascript arrays loops xlsx extendscript

我在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});

2 个答案:

答案 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函数的文件并导入它。