Exemples
La programmation AppleScript en exemples.

Finder
Créer un fichier de préférence.
Imaginons qu'on veuille créer un script qui sera utilisé par une ou plusieurs autres personnes que vous et qu'il faille mémoriser un chemin d'accès. Il sera intéressant de demander le chemin d'accès à la première utilisation, de le mémoriser, puis au prochain lancement, le script ira chercher lui-même l'information. Le meilleur endroit pour stocker un tel fichier est le dossier "Préférences".

Exemple 8 : récupérez ici le script.

Le Script :

set dossier_pref to (path to preferences) as string
try
set path_to_file_pref to dossier_pref & "AAAAA" as alias
open for access
path_to_file_pref with write permission
set le_dossier_memorise to read path_to_file_pref
close access
path_to_file_pref
display dialog
le_dossier_memorise
on error
tell
application "Finder" to make new file at alias dossier_pref with properties {name:"AAAAA", creator type:"????", file type:"pref", locked:false, busy status:false, short version:"", long version:""}
set path_to_file_pref to dossier_pref & "AAAAA" as alias
set le_dossier_a_memoriser to (choose folder with prompt "Choisissez un dossier :") as string
open for access
path_to_file_pref with write permission
write
le_dossier_a_memoriser starting at 0 to path_to_file_pref
set eof path_to_file_pref to (length of le_dossier_a_memoriser)
close access
path_to_file_pref
end try

Explications :
Grâce à "path to preferences" on définit de manière dynamique le chemin d'accès vers le dossier "Préférence" du dossier "Bibliothèque" du dossier "Départ" et ce quelque soit la langue utilisée par l'OS. Ici le script essaie de créer un alias vers un fichier "AAAAA" se trouvant dans le dossier "Préférence", s'il y parvient, il le lit et affiche son contenu. Sinon, il en crée un, demande à l'utilisateur de sélectionner un dossier et enregistre le chemin d'accès de ce dossier dans le fichier "AAAAA".

Astuce :
• si on veut obtenir le chemin d'accès du dossier "Départ" sans connaitre le nom du volume de démarrage ni le nom de l'utilisateur, il suffit d'utiliser ceci :
set dossier_depart to path to desktop as string
set dossier_depart to (text 1 thru ((length of dossier_depart) - 8) of dossier_depart)
Toutefois, on attend la limite lorsqu'on veut atteindre le dossier "Musique" par exemple puisqu'il faudra connaitre la langue préférée de l'utilisateur au moment de l'installation de Mac OS. En effet, si la langue préférée était "Anglais", le dossier s'appelera "Music" même si l'utilisateur décide d'utiliser son OS en français.


Mail
Créer un message avec un sujet, un destinataire et un corps de message.
Imaginons que Wallace veuille écrire à plusieurs personnes pour les inviter à la fête d'anniversaire de Gromit. Son script créera autant d'emails que de noms.

Exemple 2 : récupérez ici le script.

Le Script :

set ma_liste_d_ami to {"Wendolene", "Mouton 1", "Mouton 2"}
set ma_liste_de_mails to {"wendolene@ailleurs.fr", "mouton1@ailleurs.fr", "mouton2@ailleurs.fr"}
set mon_sujet to "Anniversaire de Gromit"
set mon_corps_de_message_partie1 to "Bonjour "
set mon_corps_de_message_partie2 to ",

j'organise une fete d'anniversaire pour Gromit mardi vers 18:00. Nous comptons sur toi.

Bises et caresses, Wallace."

tell application "Mail"
activate
repeat with i from 1 to length of ma_liste_d_ami
set nouveau_message to (make new outgoing message with properties {visible:true, content:(mon_corps_de_message_partie1 & item i of ma_liste_d_ami & mon_corps_de_message_partie2), subject:mon_sujet})
tell
nouveau_message
set destinataire to (make new to recipient at beginning with properties {name:item i of ma_liste_d_ami, address:item i of ma_liste_de_mails})
end tell
--send nouveau_message
end repeat
end tell

Explications :
Grâce à "make new outgoing message" on crée un nouveau message sortant, c'est-à-dire on fait l'équivalent d'un clic sur l'icône "Compose" de Mail. Grâce à "new to recipient" on crée un nouveau destinataire.

Astuces :
• on utilise "
set nouveau_message to (make..." de telle sorte qu'on puisse savoir quel message on va adressé ultérieurement au moment d'utiliser la fonction "tell nouveau_message
".
• la commande "
--send nouveau_message" a été mise en remarque car si vous l'activez, les messages seront envoyés immédiatement.



Coquillage
Exécuter une commande shell.
Imaginons qu'on veuille compresser un fichier au format .zip afin de l'envoyer à un PCiste peu informé de l'existence de StuffIt pour Windows. Nous avons plusieurs façons de procéder, en voici deux : on utilise DropZip de Aladdin (ou StuffIt Deluxe) qu'on aura téléchargé au préalable ou alors on va dans le Terminal et on utilise la commande "gzip" d'UNIX. Dans cet exemple, vous trouverez les deux méthodes.

Exemple 10 : récupérez ici les scripts 1, 2 et 3.

Le Script 1:

set un_fichier to choose file
tell application "DropZip"
zip
un_fichier compression level better with delete originals
end tell


Le Script 2:

set un_fichier to choose file
tell application "Finder" to set le_nom to name of (un_fichier as alias)
set un_fichier to text 1 thru ((length of (un_fichier as string)) - (length of (le_nom as string))) of (un_fichier as string)
set un_fichier to POSIX path of un_fichier

do shell script
("cd " & un_fichier & ";gzip " & le_nom)


Explications :
Script 1 :
Grâce à "choose file" on récupère un alias vers le fichier à compresser et on le compresse grâce à DropZip avec l'option "delete originals".

Script 2 : De la même façon on a un alias vers le fichier à compresser, on récupère le nom du fichier et on le retire de la chaîne de caractère représentant l'alias. Ensuite on transforme le chemin d'accès du format Mac OS vers le format UNIX grâce à "POSIX path of". Ensuite, on lance une commande "do shell script" afin de compresser le fichier désigné.


Astuces :
• La commande "do shell script" prend en argument une chaîne de caractères et les commandes Shell (commandes UNIX) s'écrivent séparées par des points-virgules. On aurait pu gagner 2 lignes en écrivant le script ainsi :

Le Script 3:
set un_fichier to choose file
set un_fichier to POSIX path of un_fichier
do shell script
("gzip " & (un_fichier as string))

mais c'eut été moins pédagogique.


• Le Terminal permet d'exécuter une commande sans l'interface graphique (mode texte) et la commande "
do shell script" permet d'exécuter une commande Shell sans lancer le Terminal (sans interface). Si on veut "voir" le résultat de la commande, il faut récupérer le résultat dans une variable :
set une_variable to do shell script ("ls ~/Desktop/")
display dialog une_variable

Ce petit script exécute la commande UNIX "ls" qui liste les fichiers présents dans le dossier "Desktop" de l'utilisateur actuel (car "~" désigne le "home directory" de l'utilisateur) et ensuite il affiche le résultat de la commande. Pour bien se rendre compte de l'intérêt, il suffit de lancer le Terminal et d'exécuter la commande "ls ~/Desktop/" et de comparer les résultats.