AppleScript не может получить значение аргумента через терминал - PullRequest
0 голосов
/ 10 октября 2018

Я работаю над Java GUI и пытаюсь создать кнопку, которая может начать вызов FaceTime с заданным номером телефона.Вот упрощенная версия java-кода.

String cellNum = "18001234567";
try {
    Runtime.getRuntime().exec("open /Users/faris/Desktop/call.app --args " + cellNum);
} catch (IOException e) {
    e.printStackTrace();
}

Изучив, как это сделать, я скопировал часть найденного в Интернете приложения AppleScript, которое назвал call.app, и изменил его так, что он принимаетвведите аргумент телефонного номера, а не вводите его вручную в скрипт.Я запустил программу с введенным реальным номером телефона вместо входной переменной, и он работает нормально, поэтому я знаю, что проблема заключается в передаче аргумента.

call.app

on run args
    set input to first item of args
    open location "tel://" & input & "?audio=yes"
    delay 1
    tell application "System Events"
        key code 36
    end tell
end run

Это ошибка, которую я получаю каждый раз от AppleScript.

Can’t get item 1. (-1728)

Я никогда раньше не использовал AppleScript, поэтому сейчас я полностью потерян.Ничего подобного нигде не было на SO.Любой совет будет очень признателен.

1 Ответ

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

Причина:

Error -1728 в AppleScript равно "Can't get «script»", что указывает на то, что first item of args является ссылкой на объект сценария.Это означает, что аргумент командной строки не передается в обработчик AppleScript * 1006. *.

Решение:

Вместо сохранения AppleScript как апплета сохраните его (экспортируйте) каклибо .scpt, либо .applescript файл.Затем замените вашу exec(...) команду Java следующим:

exec("osascript /path/to/applescript " + cellNum);
...