Как выполнить расширенный скрипт InDesign из командной строки?
Мне нужно выполнить скрипт.jsx для InDesign из командной строки (Windows).
Для Illustrator это легко работает с помощью следующей команды:
"C:\Program Files\Adobe\Adobe Illustrator CS6 (64 Bit)\Support Files\Contents\Windows\Illustrator.exe" "...\myscript.jsx"
Открываются оба приложения Illustrator и ExtendScript Toolkit CS6, после чего скрипт запускается автоматически.
Когда я пытаюсь сделать то же самое для InDesign, это не работает (InDesign говорит: "Невозможно открыть myscript.jsx...").
Я также попытался запустить ExtendScript Toolkit из командной строки, как показано ниже:
"C:\Program Files (x86)\Adobe\Adobe Utilities - CS6\ExtendScript Toolkit CS6\ExtendScript Toolkit.exe" "...\myscript.jsx"
В результате приложение ExtendScript Toolkit открывается с загруженным сценарием, но ничего не выполняется.
Кто-нибудь знает, как запустить скрипт? Есть ли -run
или же -cmd
аргумент добавить?
4 ответа
Ваше решение может заключаться в том, чтобы вызвать Visual Basic-скрипт из командной строки. Затем этот VB будет вызывать файл jsx indesign, основываясь на ссылке на само приложение indesign. Довольно сложно, но, безусловно, должно работать.
Для меня на Osx это работает так:
/Applications/Adobe\ ExtendScript\ Toolkit\ CC/ExtendScript\ Toolkit.app/Contents/MacOS/ExtendScript\ Toolkit -run test.jsx
На Windows это должно быть:
"\path\to\ExtendScript Toolkit.exe" -run test.jsx
содержание test.jsx:
//@target indesign
alert(app.name);
Это нужно -run
флаг. Когда используешь -cmd
он все еще выполняет скрипт, но из ESTK. //@target indesign
игнорируется С -run
скрипт передается в InDesign. К сожалению, ESTK вызывает диалог, который предупреждает о необходимости выполнения скриптов из ненадежных источников.
Если вы пытаетесь выполнить с использованием узла, это два лучших способа, которые я нашел для выполнения сценариев Indesign.
- Версия Агностик
Кредит рендером внутри его плагинов vscode/atom.
const outputFilePath = path.resolve(os.homedir(), 'Documents', 'Adobe Scripts', 'myscript.js');
const hostCommand = {
darwin: {
command: 'osascript',
args: [
'-e',
`tell application id "com.adobe.indesign" to do script "${outputFilePath}" language javascript`
],
options: {}
},
win32: {
command: 'powershell',
args: [
'-command',
`"$app = new-object -comobject InDesign.Application; $app.DoScript('${outputFilePath}', 1246973031)"`
],
options: {shell: true} // Windows requires a shell
}
};
if (typeof hostCommand[process.platform] == 'undefined') {
throw new Error('This platform is not supported');
}
const {command, args, options} = hostCommand[process.platform];
const p = spawn(command, args, options);
Без ExtendScript Toolkit и на Mac вы можете использовать AppleScript или JavaScript для автоматизации (JXA).
Вот как это делается в библиотеке jasminejsx для выполнения спецификаций jasmine в ExtendScript.
osascript -l "JavaScript" -e "var app = new Application('com.adobe.indesign'); app.doScript('$EXTENDSCRIPT', {language: 'javascript'});" &
У меня нет Windows под рукой, чтобы на самом деле протестировать ее, но я бы начал с просмотра этих ссылок: Запустите VBS в командной строке: http://ss64.com/vb/cscript.html
Посмотрите на метод DoScript для вызова скрипта JSX. myInDesign.DoScript myJavaScript,