Запустите иллюстратор extendscript через автоматор appleScript или bash? - PullRequest
0 голосов
/ 25 сентября 2018

Следующая команда запустит SCRIPT_ABC.jsx, который находится на моем рабочем столе.Есть ли способ взять содержимое SCRIPT_ABC.jsx и поместить javascript extendscript исключительно в automator, чтобы, когда я сохраняю его как приложение, оно было включено в программу?

 on run {input, parameters}

        tell application "Adobe Illustrator" to open file "Macintosh HD:Users:NAME:Desktop:SCRIPT_ABC.jsx"

        return input
    end run

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Вставьте весь jsx в ваш appleScript в виде текстового тела, затем используйте команду do javascript для его запуска.У Applescript есть большое преимущество, поскольку он может передавать аргументы в jsx (do javascript myScript with arguments { textVariableHere, anotherOneHere }) и получать возвращаемый результат тоже!

Разработанное редактирование:

set myJavascript to "
#target illustrator
function test(args){
    var docName = app.activeDocument.name;
    alert(\"Hello from Adobe JSX. Current document name is: '\" + docName + \"'\\n\" + args[0]);
    return docName;
};
test(arguments);
"
set myInputVar to "The input string here."
tell application "Adobe Illustrator"
    set myResult to do javascript myJavascript with arguments {myInputVar}
end tell
display alert ("Returned Document Name is: '" & myResult & "'")

Итак, что вы видите здесьпример javascript, встроенного в appleScript в виде строки.К счастью для меня, у меня есть приложение AppleScript Debugger, которое я давно оплатил и оно того стоит, и у него есть функция «Вставить как строковый литерал», которая автоматически экранирует кавычки и прочее.Очень полезно.

Paste as String Literal

Но вы можете видеть магию передачи переменной в javascript в качестве аргументов applecript, которая предотвращает множество проблем, которые могут возникнутьсоздание строк внутри applecript для помещения переменных.

Illustrator alert box

Хотя вам не нужно использовать аргументы AppleScript для помещения данных в jsx, так какВы можете использовать построение строк, упомянутое выше (которое я не рекомендую, когда способ аргументов доступен для использования), огромной отдачей является получение возвращенных данных jsx обратно в appleScript.Действительно аккуратные вещи.

AppleScript alert box

Итак, вот оно, вся энчилада!Мне было бы любопытно посмотреть, есть ли аналогичный способ сделать аналогичную настройку с Windows и VBS + JSX, если кто-нибудь знает что-то подобное, пожалуйста, дайте мне знать в комментариях ниже.Спасибо!

PS: слово arguments, используемое в вызове функции основной функции jsx script , на самом деле является ключевым словом, используемым AppleScript и это должно быть прописано так, иначе это не будет работать.

Подробнее Редактировать:

Хорошо, так что, может быть, вы не хотите вставлять огромный JSX втвой яблочный скрипт и убери все цитаты и т.д.

Я понял.Не волнуйтесь!Вы можете сделать следующее:

Убедитесь, что ваш jsx где-то установлен вместе с вашим приложением (оно может быть двоичным), поэтому сохраните следующий код, который представляет ваше тело jsx в виде файла jsx везде:

var docName = app.activeDocument.name;
    alert("Hello from Adobe JSX. Current document name is: '" + docName + "'\n" + args[0]);
    return docName;

А в вашем AppleScript вы просто меняете часть jsx на следующую:

set myJavascript to "
#target illustrator
function test(args){
    #include '/Users/YourName/Wherever/myAppleScriptJsxTest.jsx'
};
test(arguments);
"

BOOM!Работает точно так же!Разве это не что-то?

0 голосов
/ 27 сентября 2018

Вы можете скопировать файл .jsx в папку Contents/Resources вашего пакета приложений Automator и использовать действие Запуск AppleScript , чтобы получить ресурс

on run {input, parameters}     
    try 
        set thePath to path for resource "SCRIPT_ABC" extension "jsx" 
        tell application "Adobe Illustrator" to open (thePath as POSIX file) 
    on error errmess 
        display dialog errmess 
    end try 

    return input 
end run

Примечание.при повторном создании пакета приложения потребуется скопировать соответствующий файл в папку bundle /Contents/Resource, поскольку Automator создает новый пакет каждый раз, когда вы сохраняете его.

Также может потребоваться закрыть Automator /Редактор сценариев после добавления файла.Наконец, протестируйте полученное приложение и посмотрите, запустит ли оно файл в запрошенном приложении.

...