InDesign脚本错误:“预期的图层,但接收到的图层”

问题描述 投票:3回答:2

我有一个(非常大的)脚本在InDesign中运行,它一度将Library资源放到页面上,然后将其移动到某个层。此脚本在此处的所有计算机上运行正常,但仅当InDesign中没有其他文档打开时。

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

JavaScript错误!

错误号码:54错误字符串:未捕获的JavaScript异常:行号2651处的错误设置属性“itemLayer”的值无效。预期的图层,但接收图层。

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

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

而且,为了记录,curAsset[0]是从图书馆取得的资产对象,已经放在文件上。 document是一个已经分配给当前打开文档的变量。

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

javascript runtime-error layer adobe-indesign extendscript
2个回答
0
投票

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

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

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


0
投票

TLDR;确保“document”对象与用于构建“curAsset”对象数组的对象相同。

我希望你从那以后找到了解决方案,但如果你没有,我可能会找到一个解决方案。我已经处理过这种类型的错误“Expected X,但是收到了X”。

如果没有看到其余的代码,很难知道,但我怀疑对“文档”对象的引用并没有引用“curAsset”对象所引用的相同文档。

在我遇到这种情况的情况下,我试图将一个段落从一个文档复制到另一个,然后分配一个段落样式,但是当我试图将它应用于段落时,我错误地使用了第一个文档中段落样式的引用在第二份文件上。虽然两个文档都具有相同的模板和段落样式,但对段落样式对象的引用对于文档是唯一的。

© www.soinside.com 2019 - 2024. All rights reserved.