Adobe InDesign CS6 undefined не является объектом

Я новичок в написании сценариев InDesign, хотя у меня есть опыт работы с Javascript. Я создал новый пункт меню, как вы увидите в приведенном ниже скрипте, который я планировал использовать для вызова другого скрипта по клику. Однако у меня возникли некоторые проблемы, поэтому я решил удалить пункт меню и начать все сначала. Но в строке 10 я получаю сообщение «undefined не является объектом», и я не могу понять, почему это вызывает проблему.

Любая помощь будет оценена.

//#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){}

person Ria S.    schedule 03.04.2014    source источник
comment
Какая строка является строкой 10? var myMainMenu = app.menus.item("Main");?   -  person Kevin B    schedule 03.04.2014
comment
@KevinB: так и должно быть, потому что остальная часть этого мини-скрипта защищена от ошибок во время выполнения с помощью конструкции try..catch. Однако... чисто теоретически эта линия не должна была выйти из строя; alert (myMainMenu.submenus.everyItem().name); у меня работает.   -  person Jongware    schedule 03.04.2014
comment
Это не единственный сценарий, в котором это происходит. Во втором скрипте я получаю точно такое же сообщение (undefined не является объектом) в самой первой строке (var myDocument = app.documents.add();).   -  person Ria S.    schedule 03.04.2014


Ответы (1)


Попробуйте переустановить Индизайн. Если dll библиотеки сценариев потеряет свою регистрацию, это может привести к сбою всех сценариев.

... подождите, вы пытаетесь использовать этот скрипт из набора инструментов Extendscript? Если да, то вам придется менять двигатели.

Кроме того, если в вашей системе установлено более одной версии CS, вам необходимо убедиться, что вы используете набор инструментов Extendscript, который соответствует версии вашего InDesign — другими словами, EXTK CS6 для IND CS6.

введите здесь описание изображения

Еще можно попробовать удалить new из команды doscript. Мне нравится обертывать мою функцию следующим образом:

//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));
}
person bgmCoder    schedule 04.04.2014
comment
Оказывается, это был двигатель, который я должен был изменить. Я этого не знал. Большое спасибо за вашу помощь! - person Ria S.; 04.04.2014
comment
Рад помочь; Мне потребовалось некоторое время, чтобы понять, в чем проблема. Если бы вы упомянули ExtendScript Toolkit в своем вопросе, то кто-то другой понял бы это. - person bgmCoder; 04.04.2014
comment
Деталь двигателя кажется более вероятной. У нас была такая же проблема вчера. Благодаря вашему ответу это было легко исправить. - person Wolf; 01.02.2016