无法调用 InDesign CC 脚本中的菜单项

Can't invoke menu items in InDesign CC script

我无法在脚本中调用菜单项。例如:

app.menuActions.item("$ID/Override All Master Page Items").invoke;
app.menuActions.item("$Override All Master Page Items").invoke;
app.menuActions.itemByID(6164).invoke;

app.menuActions.item("$ID/Select All").invoke;
app.menuActions.item("Select All").invoke;
app.menuActions.itemByID(276).invoke; 

alert("Done");

除了最后显示警报外什么都不做。

我已检查 ID 是否有效且操作名称是唯一的(至少对于 "Override All Master Page Items"):

myMenuActions = app.menuActions.itemByName("Override All Master Page Items").getElements();  
for (var i = 0; i < myMenuActions.length; i++) {  
          alert(myMenuActions[i].area + " " + myMenuActions[i].id);  
}

我也在 InDesign 中通读了 Kaysan's guide to scripting menu items,但都无济于事。

知道出了什么问题吗? (我更喜欢通过独立于语言环境的名称而不是 ID 来引用菜单项,但在这个阶段我愿意接受任何东西。)

我 运行 InDesign CC 2014 Windows 10,我正在使用 Notepad++ 编辑脚本,而不是 Adob​​e ExtendScript 环境,以防万一。提前致谢!

您需要将 () 添加到 .invoke,因为它是一种方法。

所以应该是:

app.menuActions.item("$ID/Override All Master Page Items").invoke()

希望对您有所帮助

约翰

不幸的是,有时它无论如何都会报错。即使你在 invoke 方法等之后放置括号

这是一个例子:

app.menuActions.item("$ID/High Quality Display").invoke();

这样我收到了错误消息:

但无论如何它都会起作用:在 'High Quality' 预览模式下切换显示。所以我只是将命令放入 try + catch(e) 容器中:

try { app.menuActions.item("$ID/High Quality Display").invoke() } catch(e) {}

我们开始吧。它没有显示任何错误消息并且工作正常。

或者我可以使用 itemByID 代替:

app.menuActions.itemByID(78348).invoke();

它做同样的事情没有错误。

并且某些操作仅在相应面板可见时才有效。例如,如果面板“链接”被隐藏,您将无法调用 Edit Original 操作。