Как выполнить расширенный скрипт 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

Запустите InDesign в VB: https://www.google.fr/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0ahUKEwjj9_3JoPXMAhVI1BoKHUKMBT8QFggfMAA&url=https%3A%2F%2Fwww.adobe.com%2Fcontent%2Fdam%2FAdobe%2Fen%2Fdevnet%2Findesign%2Fsdk%2Fcs6%2Fscripting%2FInDesign_ScriptingGuide_VB.pdf&usg=AFQjCNFP8M8i3xrOqLp0zw3BGcNpnyhEXQ&sig2=pfFYnsgxXDpCf1A573JTDQ&bvm=bv.122676328,d.d2s

Посмотрите на метод DoScript для вызова скрипта JSX. myInDesign.DoScript myJavaScript,

Другие вопросы по тегам