无法调用 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++ 编辑脚本,而不是 Adobe 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
操作。
我无法在脚本中调用菜单项。例如:
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++ 编辑脚本,而不是 Adobe 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
操作。