2010-04-09 28 views
20

Gibt es eine Möglichkeit, definierte AppleScript-Methoden in anderen AppleScripts zu verwenden, die auf das ursprüngliche AppleScript mit etwas ähnlichem zu verweisen (zB in PHP)?AppleScript-Methoden in ein anderes AppleScript importieren?

schrieb ich eine Methode Skype-Status und Stimmung Text zu setzen:

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 

jetzt so etwas wie Import skype_methods.scpt Ich suche. Gibt es eine solche Funktionalität? Ich kann nichts mit Google in Verbindung bringen.

Antwort

22

Eine Möglichkeit zeigt ein anderes Skript als libra zu importieren ry soll eine Eigenschaft definieren, die durch Laden der Bibliothek als Skriptobjekt initialisiert wird. Sie können dann den Befehl tell verwenden, um die Bibliotheksfunktionen aufzurufen.

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

tell pSkypeLibrary 
    setSkypeStatus("status", "mood") 
end tell 
3

Script Foo.scpt

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

Script Bar.scpt

display dialog "Bar" 

Ergebnis: Ein Fenster, das "Bar"

1

Es gibt eine elegantere Art, dies zu tun. Sie können Ihre skype_methods.scpt-Datei in einem Skriptbibliotheksordner auf Ihrem Computer speichern.

Je nachdem, wie Sie die Verfügbarkeit dieser Bibliothek definieren möchten, verwenden Sie einen anderen Ordner.

  • Legen Sie die skype_methods.scpt Datei im /Library/Script Libraries Ordner, um es für alle Benutzer auf dem Computer zur Verfügung zu stellen.
  • Legen Sie es in den Ordner ~/Library/Script Libraries, um es nur für einen bestimmten Benutzer verfügbar zu machen.

Sie können dann alle Handler in dieser Bibliothek verwenden, wie folgt:

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

Dies verhindert die Notwendigkeit zahlreicher Blöcke tell wenn Handler aus verschiedenen Bibliotheken.

0

Sie dieses Repo folgen können https://github.com/abbeycode/AppleScripts die ihre Skripte in Bibliotheken organisiert

Hier ist ein Beispiel 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") 
Verwandte Themen