Импортировать методы AppleScript в другой AppleScript?
Есть ли способ использовать определенные методы AppleScript в других AppleScripts, которые ссылаются на исходный AppleScript с чем-то похожим на импорт (например, на PHP)?
Я написал метод, чтобы установить статус Skype и текст настроения:
on setSkypeStatus(status, mood_text)
tell application "System Events"
set skypeRunning to count (every process whose name is "Skype")
if skypeRunning > 0 then --only set status if skype is running
tell application "Skype"
set myStatus to "SET USERSTATUS " & status
set myMood to "SET PROFILE MOOD_TEXT " & mood_text
send command myStatus script name "AppleScript"
send command myMood script name "AppleScript"
return skypeRunning
end tell
else
return skypeRunning
end if
end tell
end setSkypeStatus
теперь я ищу что-то вроде import skype_methods.scpt. Есть ли такая функциональность. Я не могу что-то связать с Google.
Ответы
Ответ 1
Один из способов импорта другого script в качестве библиотеки - это определение свойства, которое инициализируется путем загрузки библиотеки в качестве объекта script. Затем вы можете использовать команду tell
для вызова функций библиотеки.
property pSkypeLibrary : load script POSIX file "/Users/sakra/Desktop/skype_methods.scpt"
tell pSkypeLibrary
setSkypeStatus("status", "mood")
end tell
Ответ 2
Script Foo.scpt
set theBar to "path:to:Bar.scpt" as alias
run script (theBar)
Script Bar.scpt
display dialog "Bar"
Результат: окно с надписью "Бар"
Ответ 3
Существует более элегантный способ сделать это. Вы можете сохранить файл skype_methods.scpt в папке Script Libraries на вашем компьютере.
В зависимости от того, как вы хотите определить доступность этой библиотеки, вы используете другую папку.
- Поместите файл skype_methods.scpt в папку
/Library/Script Libraries
, чтобы сделать его доступным для всех пользователей на компьютере.
- Поместите его в папку
~/Library/Script Libraries
, чтобы сделать его доступным только для определенного пользователя.
Затем вы можете использовать все обработчики в этой библиотеке следующим образом:
property Skype : script "skype_methods"
Skype setSkypeStatus("status","mood")
Это предотвращает необходимость многочисленных блоков блокировки при использовании обработчиков из разных библиотек.
Ответ 4
Вы можете следить за этим репо https://github.com/abbeycode/AppleScripts, который организует свои скрипты в библиотеках
Вот пример https://github.com/abbeycode/AppleScripts/blob/master/Scripts/Download%20Chase%20Activity.applescript
property LibLoader : load script file ((path to scripts folder from user domain as text) & "Libraries:Library Loader.scpt")
property TransmissionLib : LibLoader loadScript("Libraries:Transmission.applescript")
property GrowlLib : LibLoader loadScript("Libraries:Growl.applescript")
property SafariLib : LibLoader loadScript("Libraries:Safari.applescript")
property DatesLib : LibLoader loadScript("Libraries:Dates.applescript")