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".
Le Script : setdossier_prefto(path to preferences)as string try setpath_to_file_preftodossier_pref& "AAAAA"as alias
open for access path_to_file_prefwith write permission setle_dossier_memoriseto 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:""} setpath_to_file_pref to dossier_pref & "AAAAA" as alias setle_dossier_a_memoriserto(choose folder with prompt "Choisissez un dossier :")as string
open for access path_to_file_prefwith write permission
write le_dossier_a_memoriser starting at 0topath_to_file_pref set eof path_to_file_prefto(length ofle_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.
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.
Le Script : setma_liste_d_amito{"Wendolene", "Mouton 1", "Mouton 2"} setma_liste_de_mailsto{"wendolene@ailleurs.fr", "mouton1@ailleurs.fr", "mouton2@ailleurs.fr"} setmon_sujetto"Anniversaire de Gromit" setmon_corps_de_message_partie1to"Bonjour " setmon_corps_de_message_partie2to",
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 withi from 1 to length of ma_liste_d_ami setnouveau_messageto(make new outgoing message with properties {visible:true, content:(mon_corps_de_message_partie1& item iofma_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 iofma_liste_d_ami, address:item iofma_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 "setnouveau_messageto(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.
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.
Le Script 1: setun_fichierto choose file tell application "DropZip"
zip un_fichier compression level better with delete originals
end tell
Le Script 2: setun_fichierto choose file tell application "Finder"tosetle_nomto name of(un_fichieras alias) setun_fichierto text 1thru((length of(un_fichieras string)) - (length of(le_nomas string)))of(un_fichieras string) setun_fichierto POSIX path ofun_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: setun_fichierto choose file setun_fichierto POSIX path ofun_fichier
do shell script ("gzip " & (un_fichieras 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.