2010-04-09 8 views
20

Existe-t-il un moyen d'utiliser des méthodes AppleScript définies dans d'autres AppleScripts qui font référence à l'AppleScript original avec quelque chose de similaire à l'importation (par exemple en PHP)?Importez les méthodes AppleScript dans un autre AppleScript?

J'ai écrit un Methode pour définir le statut Skype et de l'humeur texte:

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 

maintenant je cherche quelque chose comme importation skype_methods.scpt. Y at-il une telle fonctionnalité. Je ne peux pas quelque chose en rapport avec Google.

Répondre

22

Une façon d'importer un autre script comme libra ry est de définir une propriété qui est initialisée en chargeant la bibliothèque en tant qu'objet script. Vous pouvez ensuite utiliser la commande tell pour appeler les fonctions de la bibliothèque.

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" 

Résultat: Une fenêtre qui affiche "Bar"

1

Il existe une manière plus élégante de le faire. Vous pouvez enregistrer votre fichier skype_methods.scpt dans un dossier Script Libraries sur votre ordinateur. En fonction de la manière dont vous souhaitez définir la disponibilité de cette bibliothèque, vous utilisez un autre dossier.

  • Placez le fichier skype_methods.scpt dans le dossier /Library/Script Libraries pour le rendre disponible pour tous les utilisateurs sur l'ordinateur.
  • Placez-le dans le dossier ~/Library/Script Libraries pour le rendre disponible uniquement pour un utilisateur spécifique.

Vous pouvez alors utiliser tous les gestionnaires dans cette bibliothèque comme suit:

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

Cela évite la nécessité de nombreux blocs tell lors de l'utilisation des gestionnaires de différentes bibliothèques.

0

Vous pouvez suivre cette mise en pension https://github.com/abbeycode/AppleScripts qui organise ses scripts dans les bibliothèques

Voici un exemple 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")