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

时间:2016-10-22 09:30:01

标签: javascript adobe-indesign extendscript

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

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环境,以防万一。提前谢谢!

2 个答案:

答案 0 :(得分:2)

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

所以它应该是:

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

希望有所帮助

约翰

答案 1 :(得分:0)

不幸的是,无论如何它有时都会出错。即使您在 invoke 方法等之后刹车。

这是一个例子:

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

这样我就会收到错误消息:

enter image description here

但无论如何它都可以工作:在“高质量”预览模式下切换显示。所以我只是将命令放入 try + catch(e) 容器中:

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

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

或者我可以使用 itemByID 代替:

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

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

某些操作仅在相应面板可见时才起作用。例如,如果“链接”面板处于隐藏状态,您将无法调用 Edit Original 操作。