Вызов функции Javascript из внешнего файла с помощью Applescript

Можно ли вызвать функцию файла javascript в applecript? Я могу заставить его работать, когда написано 100% в файле applecript, или я могу использовать "сделать файл javascript каким-либо файлом". Есть ли способ смешать два? Что-то вроде этого:

tell application id "com.adobe.Photoshop"
    tell current document
        do javascript "function(Variable1,Variable1)" in file PathtoJSX
    end tell
end tell

Функция находится во внешнем файле, но я хочу передать ей переменные из applecript.

Обновить:

Я отправил это, когда кто-то еще спрашивает, но PathtoJSX - это "Путь к файлу Javascript (.jsx)", поэтому PathtoJSX = file "desktop:yourFile.jsx"

3 ответа

Решение

Я думаю, что вы хотите сделать, иметь функциональную часть кода в файле и отправить аргументы через AppleScript в виде списка (Array), что довольно легко сделать:

Содержимое файла jsx может быть:

testFunc(arguments);

function testFunc(t) {
 alert('argument one: ' + t[0] + '\r' + 'argument two: ' + t[1]);
}

и AppleScript может быть:

tell application id "com.adobe.Photoshop"
  activate
  do javascript PathtoJSX with arguments {"foo", "bar"}
      --I tested using:-- do javascript (choose file) with arguments {"foo", "bar")
end tell

Что бы вы ни использовали для кода JS (текст или файл), вы просто должны использовать ссылку на массив аргументов в этом коде. Обратите внимание, что если вы протестируете это (как я сделал), используя текстовую переменную вместо псевдонима (ссылка на файл), возвращаемому символу потребуется двойной экранирование.

Изменилось ли это с тех пор, как оно было впервые решено? У меня сработало следующее:

JavaScript

      function testFunc(t) {
 alert('argument one: ' + t[0] + '\r' + 'argument two: ' + t[1]);
}

testFunc(arguments);

AppleScript

      tell application id "com.adobe.Photoshop"
    activate
    do javascript of file "pathToFile" with arguments {"foo", "bar"}
end tell

Смотрите также:

Applescript + Javascript и scriptListener

AppleScript хочет, чтобы вы избегали двойных кавычек во встроенном JavaScript.

Попробуй это:

 tell application "Adobe Photoshop CS4"
 activate
 do javascript (file "/Users/Michael/Desktop/somescript.jsx") with arguments {"foo", "bar"}
end tell

С уважением.

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