ExtendScript 中的 For 循环 - keys().forEach 不是函数

For loop in ExtendScript - keys().forEach not a function

我正在使用带桥的 ExtendScript 将标签附加到 excel 文档中的文档。我正在使用 js-xlsx 库解析 excel 文档。我正在 运行 宁一个 for 循环来解析各个单元格并获取值,当我从命令行 运行 它时它完美地工作。但是,当我在 ExtendScript 中 运行 它时,我得到一个异常,即 keys().forEach 不是一个函数。 ExtendScript 是否出于某种原因以不同方式读取循环?我无法弄清楚这一点。这是给我带来麻烦的行:

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

我想通了。该错误在文件中更进一步。 ExtendScript 或我的版本不支持 forEach 循环,因此我必须为 forEach 函数写出文件并将其导入。

Extendscript 作为一种语言,停留在 ECMAScript 3 – 因此它本身不了解 Object.keys(),也不了解 Array.forEach()。甚至 JSON.

可以在 After Effects scripting guide pag.3 中找到对此的官方提及,它说:

After Effects scripts use the Adobe ExtendScript language, which is an extended form of JavaScript used by several Adobe applications, including Photoshop, Illustrator, and InDesign. ExtendScript implements the JavaScript language according to the ECMA-262 specification. The After Effects scripting engine supports the 3rd Edition of the ECMA-262 Standard, including its notational and lexical conventions, types, objects, expressions, and statements. ExtendScript also implements the E4X ECMA-357 specification, which defines access to data in XML format.

以上内容未在 PS 脚本指南中找到,也没有参考。

如果您想使用 ES5 功能,请包含垫片,或尝试 extendscriptr。 Extendscriptr 是一个脚本社区项目(没有 Adob​​e 参与),它可以让您编写 ES5/ES6 代码,然后将其转换为 ES3。