La boîte à Tutoriels de Christopher PECAUD

Top

I Introduction

Au cours de cet article, je vais tenter de vous présenter les éléments fondamentaux qui vont vous permettre de réaliser vos premiers scripts AppleScript. Ces scripts vous permettront d'automatiser certaines tâches qui peuvent être répétitives. Nous verrons ce que sont les applications pilotables, ainsi que les applications mémorisables qui vous permettront de vous initier à la conception de scripts AppleScript. Nous verrons ensuite les éléments fondamentaux de ce langage de Script conçu pour l'environnement MAc OS X. Vous verrez qu'il est très aisé de mettre au point des petits scripts qui vous faciliteront la vie dans votre quotidien.

II petit tour d'horizon de l'interface de l'application AppleScript Editor

L'application est très simple à utiliser. Le plupart des commandes que vous utiliserez se trouvent sur la fenêtre de l'application elles se retrouvent sur la barre d'outils principale. Voici les différentes commandes accessibles :
Stacks Image 308
  • les boutons "Enregistrer" et "Arrêter" vous serviront à mémoriser ou enregistrer des actions à partir d'applications mémorisables. Nous y reviendront dans les parties suivantes;
  • le bouton "Exécuter" qui permet de lancer en script ou une application autonome.
  • Le bouton "Compiler" qui sert à vérifier le code avant de l'exécuter pour vérifier s'il n'y a pas d'erreurs de syntaxe.
  • Le bouton "Contenu du paquet n'est actif que si vous voulez que votre script fonctionne comme une application autonome.
Dans la partie basse de l'application vous trouverez les onglets suivants :
  • Les onglets "Evénements" et "Réponses" qui vous permet d'en apprendre plus sur le déroulement de l'exécution du script l'état des variables et les erreurs qui peuvent se produire.
Stacks Image 312
  • L'onglet "Résultat" affiche le résultat d'une action effectuée par l'utilisateur ou l'application. Ici l'utilisateur a appuyé sur la touche "OK" de la boîte de dialogue
  • Stacks Image 318

    III Les applications pilotables

    Pour pouvoir utiliser un script ApplsScript afin d'interagir avec une application il faut que celle-ci soit pilotable. C'est-à-dire qu'il faut que l'application ait son propre dictionnaire implémenté. Pour avoir la liste des applications pilotables il faut aller dans le menu "Fichier" de l'application AppleScript. Ensuite il faut sélectionner la commande "Ouvrir un dictionnaire". Une fenêtre s'affiche alors avec la liste de toutes les applications pilotables.

    Stacks Image 296

    Cela veut dire que vous allez pouvoir programmer des actions pour toutes les applications incluses dans cette liste. Si vous cliquer sur une application et que vous cliquer ensuite sur le bouton "Choisir", le dictionnaire de l'application s'ouvre. Par exemple si on choisit l'application "Contacts", on va voir apparaître le dictinnaire suivant :

    Stacks Image 300

    Le dictionnaire d'applications liste toutes les commandes (actions), objets rattachés qui peuvent être utilisées dans vos scripts. Ceux-ci sont organisés par catégorie, de sorte que vous puissiez vous y retrouver facilement. Nous reviendrons plus tard sur quelques commandes et objets que vous pouvez utilser pour écrire de simple scripts. Voyons maintenant ce qu'est une application mémorisable.

    IV Les applications mémorisables

    Apprendre Applescript au premier abord peut être déroutant, même si vous allez voir la syntaxe est assez simple à appréhender, pour peu que vous soyez à l'aise avec l'anglais. Apple fournit quelques applications mémorisables qui vont vous permettre d'enregistrer des actions dans l'éditeur de script. parmi ces applications on peut noter Applescript Editor et le Finder. Cette manière de procéder vous permet d'apprendre les notions de base du langage ainsi que les actions les plus couramment utilisées pour automatiser ces applications, comme créer un dossier, le renommer, le mettre dans la poubellle, vider la poubelle etc… Ce qui est idéale pour une première approche. Cependant cette approche ne permet pas d'en apprendre un peu plus sur les notions de boucle (repeat…) et les conditions (if, else, else if) ainsi que sur la gestion des erreurs. Pour enregistrer des actions pour l'application Finder par exemple il suffit de cliquer sur le bouton "Enregister de la barre d'outils d'AppleScript Editor comme ceci :

    Stacks Image 304

    Une fois cette opération effectuée, reproduisez les actions suivantes sur votre bureau :

    • Créez un nouveau répertoire;
    • Renommez le Dossier1;
    • Ouvrez le;
    • Créez un sous dossier;
    • Renommez le "Sous-Dossier2";

    Une fois ces actions effectuées cliquez sur le bouton "Arrêter" pour stopper l'enregistrement des actions. Si vous retournez maintenant dans l'éditeur de scripts vous vous aprecevez alors que les commandes suivantes ont été ajoutés, voici grosso modo ce que vous devriez obtenir (enfin sous Mac OS X Mountain lion) :

    
    tell application "Finder"
      activate
      make new folder at folder "Desktop" of folder "pecaudc" of folder "Users" of startup disk 
                        with properties {name:"dossier sans titre"}
      set name of folder "dossier sans titre" of folder "Desktop" of folder "pecaudc" 
                       of folder "Users" of startup disk to "Dossier1"
      empty trash
      close Finder window 1
    end tell
    

    Ce script vous en apprend un peu plus sur la structure d'un script. Vous pouvez voir que les actions sont encadré dans un bloc tell …end tell qui permet de dire à une application d'effectuer des actions, ici il s'agit du Finder. Par contre vous aurez remarqué que certaines actions effectuées manuellement dans le Finder n'apparaissent pas dans le script. Surtout le déplacement du dossier dans la corbeille. Ce type d'usage permet d'en apprendre un peu plus sur la syntaxe du langage mais n'est pas la méthode la plus idéale, car vous n'aurez pas accès aux conditions et aux boucles par exemple. D'autre part l'écriture des actions peut être un peu troip verbeuse, on peut grandement l'améliorer. Nous verrons prochainement comment réaliser ce script à l'aide d'AppleScript

    V Les éléments fondamentaux du langage

    Nous venons de voir précédemment un exemple de scripts générés par AppleScript lui-même lorsque l'on a effectué quelques actions sur le Finder. Celui-ci nous donne quelques pistes qui vont nous être utiles pour comprendre un script.

    1. Création de variables et assignation

    Voyons maintenant la notion de variable et les différents types de données que l'on peut utiliser dans AppleScript. Une variable permet de stocker une valeur qui pourra être réutilisée dans le script. Une variable peut avoir une portée locale ou globale. Pour créer et assigner une valeur à une variable il faut utiliser le mot clé set :

    
    set aNum to1
    

    Voyons maintenant les différents types de données. En effet dans les variables nous pouvons stocker tous types d'informations. On peut par exemple stocker une valeur booléenne (true ou false) :

    
    set bCreation to false
    

    On peut aussi stocker des valeurs numériques de types entiers :

    
    set iNumRow to 1
    

    On peut stocker des valeurs flottantes :

    
    set fPi to 3.1415
    

    On peut très bien stocker des chaînes de caractéres entre guillemet :

    
    set sFirstName="Christopher"
    

    On peut très bien créer des listes comme ceci :

    
    set listeNombre to {1,2,3,4,5,6,7,8,9,10}
    

    On peut très bien créer des enregistrements comme ceci :

    
    set theDays to {monday:1,tuesday:2,wednesday:3, thursday:4, friday:5, saturday:6, sunday:7}
    

    Mais on peut très bien attribuer à une variable le résultat d'une action, comme par exemple assigner le choix d'un dossier à une variable :

    
    tell application "Finder"
      set theFolder to (choose folder)
      set theFolderName to name of theFolder
      display dialog theFolderName
    end tell
    

    si vous exécutez ce script la fenêtre de dialogue "Choisir un dossier" apparaît à l'écran vous demandant de choisir un dossier. Le nom du dossier apparaît ensuite dans une boîte dialogue. Nous verrons plus tard dans cette partie le rôle du bloc tell ..end tell.

    2. Récupération de la valeur d'une variable

    Pour obtenir une valeur dans cet enregistrement il suffit d'écrire la ligne suivante :

    
    get monday of theDays
    

    donc on vient de voir deux mots clés du langage qui seront très utilisés dans vos futurs scripts qui sont set pour assigner une valeur à une variable et get pour en récupérer la valeur.

    3. Les différents types d'opérateurs

    Comme tous les langages nous pouvons interagir avec les différentes variables créées et les résultats des différentes actions exécutées. Il existe un grand nombre d'opérateurs parmi lesquels on retrouve bien entendu les opérateurs mathématiques. par exemple pour effectuer une addition on utilise l'opérateur "+" :

    
    set x to 1
    set y to 2
    set theCalcul to x + y
    
    De la même façon nous pouvons effectuer une soustraction avec l'opérateur "-" :
    
    set x to 1
    set y to 2
    set theCalcul to y - x
    
    De la même façon nous pouvons effectuer une multiplication avec l'opérateur "*" :
    
    set x to 1
    set y to 2
    set theCalcul to y * x
    
    De la même façon nous pouvons effectuer une division avec l'opérateur "/" :
    
    set x to 1
    set y to 2
    set theCalcul to x / y
    
    De la même façon nous pouvons appliquer l'opérateur "div" pour récupérer le résultat entier d'une division :
    
    set x to 1
    set y to 2
    set theCalcul to y div x
    
    De la même façon nous pouvons appliquer l'opérateur "mod" pour récupérer le reste d'une division :
    
    set x to 1
    set y to 2
    set theCalcul to y mod x
    

    Nous avons ensuite les opérateurs de comparaison type "<", "<=", ">", ">=", "=", "and", "or", "not" qui seront utilisés principalement dans les traitement de conditions et de boucles. Nous verrons ces notions plus tard dans cette partie.

    Pour finir nous allons parler de l'opérateur de concaténation qui est très utilisé dans les scripts. Il permet de créer une seule chaîne à partir de deux ou plusieurs chaînes de caractères, voici un exemple :

    
    set sFirstName to "Christopher"
    set sLastName to "PECAUD"
    set sName to sFirstName & " " & sLastName
    

    4. Les conditions

    Le traitement des conditions est un élément incontournable de vos scrips. Cela vous permet d'effectuer des traitements différents en fonction de la valeur contenu dans une variable.

    Voici la forme la plus simple :

    
    if condition 
       traitement condition si vrai
    else 
       traitement condition si faux
    end if
    
    Maintenant voici un exemple :
    
    set x to 1
    set y to 2
    set theCalcul to x / y
    if get class of theCalcul = real then
      display dialog "Le résultat est un nombre à virgule"
    else
      display dialog "Le résultat est un entier"
    end if
    

    Ce petit script effectue une division. Ensuite on demande le type de données du résultat du calcul qui est en l'occurence une valeur à virgule puisque le résultat est 0,5. On teste le type de la variable de résultat et on affiche dans une boîte de dialogue (display dialog) "Le résultat est un nombre à virgule".

    Voici une version plus améliorée du traitement d'une condition :

    
    if condition
      trairement de la condition si vrai
    else if nouvelle condtion then
      premier traitement de la condition si faux  
    else if nouvelle condition then
      nieme traitement si le traitement de la valeur est encore faux
    else
      si les autres traitements n'ont pas abouti
    end if
    
    Voici un petit exemple plutôt sympa !!!
    
    set theDay to weekday of (current date)
    if (theDay = Friday) then
      display dialog "Bientôt le week-end"
    else if (theDay = Saturday) then
      display dialog "C'est le week-end, deux jours de glande!!!"
    else if (theDay = Sunday) then
      display dialog "Demain retour au boulot"
    else
      display dialog "Bon courage la semaine n'est pas terminée"
    	
    end if

    A chaque fois le traitement d'une condition est arrêté dès qu'il détecte une condition vraie.

    5. Les boucles

    Les boucles permettent d'effectuer une action tant qu'une condition est vérifiée. La structure générale d'une boucle repeat est celle-ci :
    
    repeat
      effectuer une action 
    end repeat
    

    Voici un exemple avec des valeur numériques

    
    set x to 10
    repeat until x <1
      set x to x -1
      display dialog x as string
    end repeat  
    

    En exécutant ce script vous allez obtenir l'affichage des nombre 9 à 0 dans des boîtes de dialogue. Attention à bien mettre une condition dans une boucle car vous retrouveriez avec une boucle infinie si vous ne le faisiez pas.

    Nous avons vu un exemple de boucle fort simple mais nous pouvons effectuer une boucle afin d'effectuer une action répété sur un objet d'une application par exemple nous voulons ranger les contacts par groupe dans l'application "Contacts" de Mac OS X. Nous pourrions exécuter la boucle suivante :

     
    set theGroup to make new group with properties {name:"Privé"}
    set theGroupName to the name of theGroup
    repeat with thePerson in thePeople
      add thePerson to group theGroupName
    end repeat
    

    N'exécutez pas le script tel quel il ne fonctionnera pas car il n'est pas inclu dans un énoncé. En effet le script ne sait pas sur quelle application il doit effectuer ces actions. C'est ce que nous allons voir dans le prochain point.

    6. Les instructions tell …end tell

    Ce type d'instructions est un des fondements d'AppleScript. L'instruction tell vous permet d'appeler l'application sur laquelle vous voulez que le script interagisse. L'instruction tell peut être sur une seule ligne auquel cas on parlera d'instruction simple, comme :

    
    tell application "Finder" to empty the trash
    

    Cette ligne vous permet de dire à l'application Finder de vider la corbeille.

    Maintenant voyons comment on peut réaliser plusieurs actions en un seul appel à une application, nous allons écrire une instruction composée. Ce type d'instructions est formé par un bloc tell …end tell

    
    tell the app "Nom de l'application"
    Action à réaliser 1
    Action à réaliser 2
    ….
    Action à réaliser n
    end tell
    

    Vous pourrez noter que l'on peut abréger certains objets comme application que vous pouvez noter app. AppleScript les comprend et au moment de compiler votre script il le rempleacera..

    Par exemple nous allons réécrire le bloc d'instructions que nous avions tenté de mémoriser dans l'exemple de l'application mémorisable jevous rappelle la séquence des actions à réliser :

    • Créez un nouveau répertoire;
    • Renommez le Dossier1;
    • Ouvrez le;
    • Créez un sous dossier;
    • Renommez le "Sous-Dossier2";
    Ce qui se traduit par le bloc d'instructions suivant :
    
    
    tell application "Finder"
      activate
      set theFolder to make new folder at folder "Desktop" 
                                   of folder "pecaudc" of folder "Users" of startup disk 
                                   with properties {name:"dossier sans titre"}
      set name of the result to "Dossier1"
    	
      set therenamedFolder to the result
      open folder therenamedFolder
      set theSubFolder to make new folder at folder therenamedFolder 
                                 with properties {name:"sous-dossier1"}
    	
      move folder therenamedFolder to trash
      empty trash
    	
    end tell
    

    La commande activate permet de mettre l'application au premier plan. make new folder permet de créer un nouveau dossier sur le bureau. "set name" permet de renommer le dossier par défaut et vous pouvez voir que l'on a le résultat d'une action pour initialiser une variable ou une propriété. "open information window" vous permet d'ouvrir la fenêtre des propriétés du dossier que l'on vient de créer. "move folder" vous permet de déplacer un dossier vers un autre endroit ici vers la poubelle. Et on demande de vider la poubelle. On peut donc dire à une application d'effectuer plusieurs actions. Chaque ligne correspond à une action à accomplir…

    Maintenant voyons comment appeler plusieurs applications au sein d'un même script. Imaginons une variante du précédent script. En effet on veut pouvoir par exemple créer un fichier de type Word dans le dossier "'Dossier1" que l'on a créé, par exemple "exemple.docx". Ensuite on veut pouvoir l'éditer dans l'application Word, le script devient le suivant :

    
    
    tell application "Finder"
      activate
      set theFolder to make new folder at folder "Desktop" of folder "pecaudc" 
                                 of folder "Users" of startup disk 
                                 with properties {name:"dossier sans titre"}
      set name of the result to "Dossier1"
      set therenamedFolder to the result
      set theFile to make new file at folder therenamedFolder with properties {name:"exemple.docx"}
      set theFileName to the result
      tell the application "Microsoft Word"
        activate
        open file name theFileName as string
      end tell
    		
    end tell
    

    Nous avons vu comment utiliser deux applications pour effectuer plusieurs actions.

    VI Conclusion

    Je vous ai présenté les éléments fondamentaux du langage AppleScript. Vous en savez assez pour automatiser la plupart des applications et effectuer de simple scripts. Nous verrons dans un prochain tutoriel comment interagir avec l'utilisateur, comment créer des applications autonomes et créer des gestionnaires (fonctions en AppleScript)…
    blog comments powered by Disqus