Javascript InDesign脚本错误:";预期层,但收到层“;

Javascript InDesign脚本错误:";预期层,但收到层“;,javascript,runtime-error,layer,adobe-indesign,extendscript,Javascript,Runtime Error,Layer,Adobe Indesign,Extendscript,我在InDesign中运行了一个(非常大的)脚本,它在某一点上将一个库资源放置到页面上,然后将其移动到某一层。此脚本在我们这里的所有计算机上都可以正常运行,但只有在InDesign中没有打开其他文档时才能运行 如果另一个文档处于打开状态,则脚本尝试将放置的资源移动到另一层时会显示错误: JavaScript错误 错误号码:54 错误字符串:未捕获JavaScript异常:第2651行出错 集合属性“itemLayer”的值无效预期层,但收到层。 请注意粗体部分。它收到了它所期待的,所以它发脾气?

我在InDesign中运行了一个(非常大的)脚本,它在某一点上将一个库资源放置到页面上,然后将其移动到某一层。此脚本在我们这里的所有计算机上都可以正常运行,但只有在InDesign中没有打开其他文档时才能运行

如果另一个文档处于打开状态,则脚本尝试将放置的资源移动到另一层时会显示错误:

JavaScript错误

错误号码:54 错误字符串:未捕获JavaScript异常:第2651行出错 集合属性“itemLayer”的值无效预期层,但收到层。

请注意粗体部分。它收到了它所期待的,所以它发脾气?这对我来说毫无意义。作为记录,这里是它引用的代码行:

curAsset[0].itemLayer = document.layers.item("Art Work (max imprint)");
而且,作为记录,
curAsset[0]
是从库中提取并已放置在文档中的资产对象。而
文档
是已分配给当前打开文档的变量


我的工作原理是,在InDesign中打开的其他文档导致了这个错误,因为这是我迄今为止能够进行的唯一关联,但我不知道如何进行关联。脚本已经有变量
document
,该变量只引用一个打开的文档。除了这一行(到目前为止),脚本中的其他所有内容都运行良好

这是一个非常有趣/令人愤怒的错误消息。您可以随时尝试
getElements()
。它有时像魔术一样奏效

curAsset[0].itemLayer = document.layers.item("Art Work (max imprint)").getElements()[0];

还有一件事需要考虑。InDesign中的Extendscript有时不区分特定类型的对象和所述类型的对象数组。因此,您可能需要确保您的查询只返回单个项目。

TLDR确保您的“文档”对象与用于构建“curAsset”对象数组的对象相同

我希望从那时起你已经找到了一个解决方案,但如果你还没有找到,我可能会为你找到一个解决方案的线索。我自己也处理过这种类型的错误“预期X,但收到X”

如果看不到代码的其余部分,就很难知道,但是我怀疑对“document”对象的引用并不是对“curAsset”对象引用的同一个文档的引用


在我的例子中,当我发生这种情况时,我试图将一个段落从一个文档复制到另一个文档,然后指定一个段落样式,但在尝试将其应用到第二个文档的段落时,我错误地使用了第一个文档中段落样式的引用。虽然这两个文档都有相同的模板和段落样式,但对段落样式对象的引用对于文档来说是唯一的。

当其他文档以某种方式打开时,是否会从不同的文档中获取
对象?这几乎是我的工作原理,但我不知道如何,或者为什么它只对引用
文档
变量的几十行代码中的这一行执行此操作。我告诉这里的每个人,在运行脚本之前,确保InDesign中没有打开任何文档,但这显然不理想。对于错误消息,+1。