Вставьте весь 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](https://i.stack.imgur.com/RBQL2.png)
Но вы можете видеть магию передачи переменной в javascript в качестве аргументов applecript, которая предотвращает множество проблем, которые могут возникнутьсоздание строк внутри applecript для помещения переменных.
![Illustrator alert box](https://i.stack.imgur.com/yDXQo.png)
Хотя вам не нужно использовать аргументы AppleScript для помещения данных в jsx, так какВы можете использовать построение строк, упомянутое выше (которое я не рекомендую, когда способ аргументов доступен для использования), огромной отдачей является получение возвращенных данных jsx обратно в appleScript.Действительно аккуратные вещи.
![AppleScript alert box](https://i.stack.imgur.com/vm23w.png)
Итак, вот оно, вся энчилада!Мне было бы любопытно посмотреть, есть ли аналогичный способ сделать аналогичную настройку с 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!Работает точно так же!Разве это не что-то?