我在带有桥的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作为一种语言,停留在ECMAScript 3中-因此它本身并不了解Object.keys()Array.forEach()。甚至没有JSON

可以在After Effects scripting guide第3页中找到对此的官方提及:


  After Effects脚本使用Adobe ExtendScript语言,这是一种
  一些Adobe应用程序使用的JavaScript扩展形式,
  包括Photoshop,Illustrator和InDesign。扩展脚本
  根据ECMA-262实现JavaScript语言
  规格。 After Effects脚本引擎支持第三个
  ECMA-262标准的版本,包括其符号和词汇
  约定,类型,对象,表达式和语句。扩展脚本
  还实现了E4X ECMA-357规范,该规范定义了访问权限
  转换为XML格式的数据。


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

如果要使用ES5功能,请包括垫片或尝试extendscriptr。 Extendscriptr是一个脚本社区项目(无需Adobe参与),该项目应允许您编写ES5 / ES6代码,然后将其转换为ES3。

关于javascript - ExtendScript中的For循环-keys()。forEach不是函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38508213/

10-12 06:45