我无法在脚本中调用菜单项。例如:
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是否有效且操作名称是唯一的(至少对于“覆盖所有母版页面项目”):
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来引用菜单项,但我会在此阶段解决任何问题。)
我在Windows 10上运行InDesign CC 2014,我正在使用Notepad ++来编辑脚本,而不是Adobe ExtendScript环境,以防万一。提前谢谢!
答案 0 :(得分:2)
您需要将()
添加到.invoke
,因为这是一种方法。
所以它应该是:
app.menuActions.item("$ID/Override All Master Page Items").invoke()
希望有所帮助
约翰
答案 1 :(得分:0)
不幸的是,无论如何它有时都会出错。即使您在 invoke
方法等之后刹车。
这是一个例子:
app.menuActions.item("$ID/High Quality Display").invoke();
这样我就会收到错误消息:
但无论如何它都可以工作:在“高质量”预览模式下切换显示。所以我只是将命令放入 try
+ catch(e)
容器中:
try { app.menuActions.item("$ID/High Quality Display").invoke() } catch(e) {}
我们开始吧。它没有显示任何错误消息并且工作正常。
或者我可以使用 itemByID
代替:
app.menuActions.itemByID(78348).invoke();
它做同样的事情,没有错误。
某些操作仅在相应面板可见时才起作用。例如,如果“链接”面板处于隐藏状态,您将无法调用 Edit Original
操作。