Импортировать методы AppleScript в другой AppleScript? - PullRequest
21 голосов
/ 09 апреля 2010

Есть ли способ использовать определенные методы 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.

Ответы [ 4 ]

22 голосов
/ 11 апреля 2010

Один из способов импортировать другой скрипт в качестве библиотеки - это определить свойство, которое инициализируется загрузкой библиотеки как объекта скрипта. Затем вы можете использовать команду tell для вызова функций библиотеки.

property pSkypeLibrary : load script POSIX file "/Users/sakra/Desktop/skype_methods.scpt"

tell pSkypeLibrary
    setSkypeStatus("status", "mood")
end tell
3 голосов
/ 09 апреля 2010

Сценарий Foo.scpt

set theBar to "path:to:Bar.scpt" as alias
run script (theBar)

Сценарий Bar.scpt

display dialog "Bar"

Результат: Окно с надписью "Bar"

2 голосов
/ 07 мая 2015

Есть более элегантный способ сделать это. Вы можете сохранить файл skype_methods.scpt в папке Script Libraries на вашем компьютере.

В зависимости от того, как вы хотите определить доступность этой библиотеки, вы используете другую папку.

  • Поместите файл skype_methods.scpt в папку /Library/Script Libraries, чтобы сделать его доступным для всех пользователей на компьютере.
  • Поместите его в папку ~/Library/Script Libraries, чтобы сделать его доступным только для конкретного пользователя.

Затем вы можете использовать все обработчики в этой библиотеке следующим образом:

property Skype : script "skype_methods"
Skype's setSkypeStatus("status","mood")

Это предотвращает необходимость использования множества блоков Tell при использовании обработчиков из разных библиотек.

0 голосов
/ 18 октября 2017

Вы можете следовать этому репо 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's loadScript("Libraries:Transmission.applescript")
property GrowlLib : LibLoader's loadScript("Libraries:Growl.applescript")
property SafariLib : LibLoader's loadScript("Libraries:Safari.applescript")
property DatesLib : LibLoader's loadScript("Libraries:Dates.applescript")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...