Adobe InDesign CS6 "undefined is not an object"

4

虽然我有JavaScript的经验,但我对InDesign脚本编写还是新手。

在下面的脚本中,我创建了一个新的菜单项,计划通过单击调用另一个脚本。但是我遇到了一些问题,所以决定删除该菜单项并重新开始。

但是在第10行,我收到了“未定义对象”的消息,我无法确定为什么会出现此问题。

如果您能提供任何帮助,将不胜感激。

//#targetengine "ImportFolder"

//var myMainMenu = app.menus.item("Main");
//var myCustomMenu = myMainMenu.submenus.item("Import Folder");
//var myCustomMenu = myMainMenu.submenus.add("Import Folder");
//var mySampleScriptAction = app.scriptMenuActions.add("onInvoke", function() {
//app.doScript(new File ("/C/Program Files (x86)/Adobe/Adobe InDesign CS6/Scripts/Scripts Panel/importFiles.jsx" ));});

//delete the menu
var myMainMenu = app.menus.item("Main");
try{
var myCustomMenu = myMainMenu.submenus.item("Import Folder");
myCustomMenu.remove();
}catch(myError){}

第10行是哪一行?var myMainMenu = app.menus.item("Main"); - Kevin B
@KevinB:应该是这样的,因为这个小脚本的其余部分都使用了 try..catch 结构来防止运行时错误。然而……从纯理论上讲,那一行不应该失败;alert(myMainMenu.submenus.everyItem().name); 对我来说是可以工作的。 - Jongware
这不是唯一出现这种情况的脚本。在第二个脚本中,我收到了完全相同的消息(未定义的对象),在第一行(var myDocument = app.documents.add();)上。 - Ria S.
1个回答

7
尝试重新安装Indesign。如果脚本库dll失去了注册,它可能会导致所有脚本失败。
等一下 - 你是在尝试从Extendscript Toolkit使用此脚本吗?如果是的话,你需要更改引擎。
此外,如果你的系统上有多个版本的CS,请确保使用与你的InDesign版本匹配的Extendscript Toolkit - 换句话说,对于IND CS6,使用EXTK CS6。
还有一件事要尝试,就是从doscript命令中删除new。我喜欢将我的命令包装在这样的函数中:
//run a script from the CS6 Script Panel Directory (be sure to add the file extension
function RunMyScript(whatscriptname){
    app.doScript(File("/C/Program Files (x86)/Adobe/Adobe InDesign CS6/Scripts/Scripts Panel/" + whatscriptname));
}

2
看起来是引擎需要更换。我不知道这一点。非常感谢你的帮助! - Ria S.
很高兴能帮忙;我花了一些时间才意识到问题所在。如果你在问题中提到了ExtendScript Toolkit,那么其他人就会想出来的。 - bgmCoder
1
引擎部分似乎更有可能。我们昨天遇到了同样的问题。感谢您的答复,解决起来很容易。 - Wolf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接