IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

À la découverte d'AppleScript


précédentsommairesuivant

I. Introduction à AppleScript

I-A. Introduction

AppleScript est le langage de script fourni avec Mac OS depuis la version 7 (1992). Issu du projet HyperCard, il permet aux développeurs d'applications de rendre ces dernières scriptables et aux utilisateurs de contrôler par le moyen de scripts leur ordinateur et les applications qu'il exécute.

AppleScript permet de réaliser tout ce qu'un utilisateur peut accomplir avec un clavier et une souris. Mais comme tout langage de script, il offre de nombreux avantages comparé à un opérateur humain :

  • Il accomplit tout travail répétitif, qu'il soit simple ou complexe, sans rechigner
  • Il automatise des enchaînements de tâches complexes, nécessitant des interactions entre différentes applications. À ce titre, il sert de " glue " logicielle entre applications et/ou système d'exploitation.
  • Il peut agir en l'absence de l'utilisateur, selon un planning préétabli ou à la survenue d'événements particuliers.

Par ailleurs, il offre aussi l'avantage d'être le langage de script natif du système d'exploitation Mac OS, ce qui le rend compatible avec la majorité des applications Mac.

Au chapitre de ses faiblesses, notons sa lenteur, le fait que certaines applications ne sont pas scriptables et, bien sûr, qu'il ne fonctionne que sur les ordinateurs Apple...

Mac OS X Leopard (10.5) inclut AppleScript 2.0, une mise à jour importante du langage proposant notamment le support d'Unicode, une évolution des bibliothèques de pilotage, la possibilité de scripter de nouveaux panneaux des Préférences Système et une implémentation plus fiable des actions de dossier. La page https://developer.apple.com/library/mac/releasenotes/AppleScript/RN-AppleScript/index.html détaille cette nouvelle version d'AppleScript.

I-B. Les concepts d'AppleScript

AppleScript repose sur le concept de dictionnaire de pilotage d'applications. Toute application scriptable publie un dictionnaire des actions et des objets qu'elle manipule et sur lesquels AppleScript pourra agir. AppleScript ne se fonde donc pas sur l'enregistrement des actions de l'utilisateur sur l'interface graphique des applications (bien qu'un bouton Enregistrer un script soit apparu avec les versions récentes de l'éditeur de scripts, ces enregistrements ne fonctionnent qu'avec un nombre limité d'applications).

AppleScript a été conçu pour des utilisateurs non-programmeurs, en adoptant une méthode " langage naturel ". Sa syntaxe est donc très proche de l'anglais, ce qui est à la fois un avantage, puisque programmer un script revient quasiment à décrire ce que l'on veut lui faire accomplir :

 
Sélectionnez
	tell application "iTunes"
	set duree to (duration of playlist 1) / 60 / 60
	-- calcul de la durée de la bibliothèque en heures
	end tell

et un inconvénient (les scripts sont parfois verbeux) :

 
Sélectionnez
	if the nom begins with the texte then

I-B-1. La programmation de base

AppleScript offre :

  • Plusieurs types de base, sans contrôle de type strict : entier, réel, chaîne de caractères, booléen, liste, enregistrement (liste de paires de valeurs).
  • Les notions de variables locales et globales.
  • Des structures de contrôle et de répétition classiques : if/else, repeat, try, exit.
  • Des structures de bloc : tell/end tell, on/end, to/end.
  • Des fonctions (ou sous-routines), dotées d'un nom et de paramètres, permettant d'écrire du code selon un style de programmation structurée.
  • Des gestionnaires : run, quit, open, idle (un gestionnaire est une fonction déclenchée par AppleScript à la survenue d'événements particuliers : exécution d'un scrip, survenue d'une erreur, etc.).

Il fonctionne selon une syntaxe verbe ou verbe+nom (ou méthode/objet, commande/cible) :

 
Sélectionnez
	beep
	print document

Pour désigner l'application cible d'une commande, AppleScript utilise un bloc tell :

 
Sélectionnez
	tell application "iTunes" to quit

Le concept de hiérarchie d'objets est exprimé à l'aide de prépositions (of, first, last, etc.) :

 
Sélectionnez
	pages 1 of document 2
	track 1 thru 5 of first library playlist

I-C. Programmer avec AppleScript

I-C-1. Configuration d'AppleScript et menu des scripts

AppleScript est livré avec tous les Mac OS X. Il est situé dans le dossier Applications/AppleScript, qui contient les éléments suivants :

  • Config. actions de dossier. Permet d'activer la fonctionnalité d'actions de dossier.
  • Éditeur de scripts. L'éditeur AppleScript par défaut. Il est possible d'utiliser un autre éditeur en le spécifiant à l'aide de l'Utilitaire AppleScript.
  • Example Scripts. Alias vers le dossier Bibliothèque/Scripts, qui contient une compilation de scripts AppleScript classés par thèmes.
  • Utilitaire AppleScript. Règle les préférences AppleScript : éditeur utilisé, activation des fonctions GUI Scripting et actions de dossier, paramétrage du menu des scripts.
Image non disponible

Le menu des scripts regroupe les scripts d'exemples du dossier Bibliothèque/Scripts, qui concernent diverses thématiques : Finder, Internet, Mail, navigation, impression, etc. Il peut être étendu par vos propres scripts et réorganisé (ordre des sous-menus, emplacement des scripts, etc.). Pour y avoir accès, il faut au préalable avoir cliqué sur " Afficher le menu des scripts dans la barre de menus " dans l'Utilitaire AppleScript.

Le menu des scripts présente certaines astuces de fonctionnement intéressantes, quoique cachées :

  • Cliquer sur un sous-menu ouvre le sous-dossier correspondant dans le Finder.
  • Majuscule+clic sur un script du menu ouvre le sous-dossier qui le contient dans le Finder et présélectionne le script.
  • Option+clic ouvre le script dans l'éditeur de scripts.

Par ailleurs, le dossier des scripts de l'utilisateur courant (~Bibliothèque/Scripts) peut être utilisé pour stocker, outre des scripts, des raccourcis, des applications, etc. La figure suivante montre un menu de scripts personnalisé et le dossier ~Bibliothèque/Scripts correspondant.

Image non disponible

I-C-2. L'éditeur de scripts

L'éditeur de scripts est l'outil privilégié pour visualiser et écrire des scripts. Ses menus offrent l'accès aux commandes de base. On remarquera en particulier :

  • Fichier > Enregistrer permet d'enregistrer le script sous forme texte.
  • Fichier > Enregistrer sous permet d'enregistrer le script sous forme de script compilé ou d'application (également appelée applet). Attention, si la case Exécutable uniquement est cochée, le script ne sera plus éditable.
  • Le menu Script permet d'exécuter (Pomme+R), d'arrêter et de compiler (vérification de la syntaxe) un script. Des boutons situés sur la fenêtre d'édition du script reprennent ces commandes.

Le meilleur moyen de débuter avec AppleScript est d'ouvrir dans l'éditeur les scripts d'exemple du menu des scripts, de les exécuter et de les analyser. Des scripts élémentaires peuvent également être trouvés sur ces pages : http://www.apple.com/osx/apps/#automator.

Image non disponible

I-C-3. L'édition de scripts

La fenêtre d'édition offre une aide à la programmation par le moyen de codes couleur distinguant mots clés, variables, valeurs, etc. Dès lors qu'un script a été compilé, il est automatiquement indenté et sa syntaxe est mise en couleurs.

Image non disponible

Une autre aide à la programmation existe par le biais d'un menu contextuel (clic droit ou Ctrl+clic). Celui-ci permet d'insérer des routines prédéfinies dans le code (contrôle de flot, itération, gestionnaire d'erreurs, etc.). Ces routines sont contenues dans le dossier Bibliothèque/Scripts/Script Editor Scripts, dont le contenu est modifiable. Il est donc possible d'y ajouter des portions de code que vous prévoyez de régulièrement réutiliser.

Enfin, une fonction de saisie semi-automatique (Assistant Script) peut être activée dans l'onglet Modification des Préférences de l'éditeur. Elle suggère les termes complétant ce que le programmeur est en train de saisir. La touche Escape permet d'accepter la suggestion ; une suggestion multiple est indiquée par des points de suspension, la touche F5 affichant la liste et la touche Retour validant un choix effectué dans cette liste à l'aide des flèches haut et bas.

I-C-4. Les fenêtres

L'onglet Résultat affiche le résultat de la dernière commande.
Dans notre cas, la durée de la playlist n° 1 d'iTunes, exprimées en heures.

Image non disponible

Remarque. Lors de la première exécution d'un script appelant une application (ici iTunes), celle-ci se lance automatiquement. Le temps d'exécution du script peut donc être relativement long...

Pour suivre l'enchaînement des événements et de leur résultat, il convient d'afficher la fenêtre Historique des événements (menu Fenêtre ou Alt+Pomme+L).

Image non disponible

La fenêtre Bibliothèque (menu Fenêtre ou Maj+Pomme+L) donne accès aux principales applications ainsi qu'à leur dictionnaire de pilotage). Cliquer sur une application la lance et ouvre son dictionnaire. Les boutons + et - permettent d'ajouter et de supprimer des bibliothèques d'applications.

Image non disponible

I-C-5. Les dictionnaires de pilotage

Les dictionnaires de pilotage détaillent la syntaxe d'une application scriptable. Ils sont accessibles à partir de la fenêtre Bibliothèque (Maj+Pomme+L) ou du menu Fichier > Ouvrir un dictionnaire. Dans ce dernier cas, la liste de toutes les applications disponibles sur votre Mac et possédant un dictionnaire est présentée. La figure suivante présente le dictionnaire d'iTunes.

Image non disponible

Les dictionnaires de pilotage détaillent la syntaxe d'une application scriptable, c'est-à-dire la liste des commandes et des classes d'objets que l'application propose. Ils sont organisés en " suites ", énumérées dans la colonne de gauche de la fenêtre (et précédées d'une icône S). La suite Standard contient les termes communs à toutes les applications scriptables avec AppleScript. Les autres suites sont conçues et créées par les concepteurs d'applications, en fonction des objectifs et besoins de ces dernières.

La colonne centrale de la fenêtre énumère les commandes (icône C sur fond bleu) et les classes (icône C sur fond violet) d'une suite donnée. Enfin, cliquer sur une classe affiche dans la colonne de droite la liste de ses propriétés (icône P) et éléments (icône E). Ici, cliquer sur la classe track (morceau) permet de lister ses nombreuses propriétés (album, artist, etc.).

Image non disponible

Cliquer sur une suite, une commande, une classe, etc., affiche sa description dans la zone de texte inférieure. Cette zone contient des liens hypertextes permettant de naviguer dans la structure hiérarchique des objets.

Le champ de recherche en haut à droite de la fenêtre est très utile pour retrouver un élément de programmation par son nom.

I-C-6. Déboguer des scripts

Les fenêtres Historique des événements et Historique des résultats de l'éditeur de scripts permettent de suivre pas à pas le déroulement d'un script. Mais il n'est pas possible de poser des points d'arrêt.

Smile et Script Debugger sont une alternative intéressante à l'Éditeur de scripts. Ils offrent de bonnes fonctionnalités de débogage :

I-C-7. Scripting Additions

Les compléments de pilotage (scripting additions, ou encore osax, pour Open Scripting Architecture eXtension) sont des modules fournis par des développeurs tiers et qui permettent d'étendre les fonctionnalités d'AppleScript. Ces modules, stockés dans le dossier Bibliothèque/ScriptingAdditions, ne sont pas propres à une application particulière mais disponibles globalement. Mac OS X inclut un complément nommé Standard Additions. Son contenu peut être consulté avec le menu Fichier > Ouvrir un dictionnaire. Il propose des commandes d'interaction avec l'utilisateur, de gestion de fichiers, des routines mathématiques, etc.

I-D. Références

Le site http://www.apple.com/osx/apps/ est un bon point de départ pour explorer les possibilités d'AppleScript. Des scripts et des routines élémentaires peuvent être trouvés sur ces pages : http://www.apple.com/osx/apps/#automator.

La documentation du langage (guide, tutorial) se trouve ici : https://developer.apple.com/search/index.php?q=applescript et là : http://macscripter.net/.

Le site http://www.macscripter.net/ contient de nombreux tutoriaux et des exemples de scripts. Il est associé à http://macscripter.net, qui regroupe différents sites, forums, FAQ, etc., liste des applications scriptables - ainsi que leur dictionnaire -, et une bibliothèque de 1 500 scripts téléchargeables.

Le site http://www.scriptweb.org, qui recense les nombreuses possibilités de scripting sur Macintosh sous forme de liens, s'intéresse bien sûr à AppleScript.

La page https://developer.apple.com/technologies/mac/cocoa.html expose comment un développeur doit procéder pour permettre à AppleScript d'accéder à ses applications.

Quelques livres en français traitent de la programmation AppleScript :


précédentsommairesuivant

Copyright © 2008 Jean-Philippe Moreux. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts. Droits de diffusion permanents accordés à Developpez LLC.