Introduction

Apple Script est le langage de script fourni avec le système d’exploitation des Mac depuis la version 7 du système (1993). Il permet aux développeurs d’applications de rendre ces dernières « scriptables » (ou « pilotables ») et aux utilisateurs de contrôler par le moyen de scripts leur ordinateur et les applications qu’il exécute. Il peut s’agir de scripts élémentaires de quelques lignes automatisant une manipulation de fi chiers dans le comme de scripts plus ambitieux mettant en œuvre algorithmes, données, interactions avec l’utilisateur et bien sûr applications scrip- tables.

Info AppleScript étant le langage de script natif du système d’exploi- tation, cela lui donne accès à la majorité des applications Mac. Si votre application cible n’est pas scriptable via Apple Script, il vous reste une alternative : • utiliser les fonctions de scriptage GUI (voir Annexe B) ; • utiliser Automator , en espérant qu’il prenne bien en compte votre application ; • trouver une application équivalente et scriptable…

Book_AppleScript.indb 1 3/09/09 14:23:44 2 AppleScript

Apple Script 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 permet d’étendre les fonctionnalités d’une application ou d’en adapter le comportement aux besoins propres de l’utilisateur. Même si les applications modernes sui- vent une pente naturelle conduisant à les enrichir en fonctionnalités, il est impossible de leur faire couvrir la totalité des besoins et situations de leurs utilisateurs – et ce serait au détriment de leur facilité d’apprentissage et de leur taille… De ce fait, un langage de script sera toujours utile à certaines catégories d’utilisateurs. • 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, étendant le concept du pipe issu du monde Unix, lequel permet d’enchaîner plusieurs scripts, les données produites par un script alimentant l’entrée du suivant. • Il peut agir en l’absence de l’utilisateur, selon un planning préétabli ou à la survenue d’événements particuliers.

Book_AppleScript.indb 2 3/09/09 14:23:45 Introduction 3

Info Ces différents cas d’emploi d’AppleScript peuvent également être classés selon une autre typologie : • On parle d’automatisation lorsque le besoin est de contrôler une ou plusieurs applications en vue de la réalisation auto- matique d’une séquence d’actions. Dans ce cas, le script est le chef d’orchestre qui dirige la ou les applications. Tous les scripts visant à appliquer un traitement particulier sur un ensemble de données appartiennent à cette catégorie (tels par exemple les scripts de traitement de fi chiers image). • La personnalisation (ou customisation en bon franglais) permet au comportement d’une application d’être modifi é, généralement en mieux, en lui adjoignant des scripts appe- lés depuis l’application elle-même. C’est alors l’application qui déclenche l’exécution des scripts à la survenue de certains événements spécifi ques (par exemple le Finder, via le concept d’action de dossier), ou l’utilisateur lui-même, via un menu intégré dans l’application (tel celui d’iTunes).

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… Mais cette évidente caractéristique a aussi un avantage majeur : une fois AppleScript connu et maîtrisé, il permet de scrip- ter la quasi-totalité des applications disponibles, ce qui n’est pas le cas pour d’autres systèmes, par exemple Windows, où il faudra apprendre un langage particulier (tantôt JavaScript, tantôt VBA), voire un jeu de macros propriétaires, pour pouvoir piloter telle ou telle applica- tion.

Book_AppleScript.indb 3 3/09/09 14:23:46 4 AppleScript

Info Mac OS X Leopard (10.5) inclut AppleScript 2.0, une mise à jour importante du langage proposant notamment le support d’Uni- code, 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 fi able des actions de dossier. La page http://developer.apple.com/releasenotes/Apple Script/RN-Apple- Script/index.html détaille cette nouvelle version d’AppleScript.

Comment Apple Script fonctionne Tout script AppleScript est constitué d’une suite séquen- tielle d’instructions que l’on peut classer schématiquement en deux catégories : • Des instructions semblables à celles des autres langages de programmation impératifs (instructions de calcul, de contrôle de fl ot, etc.). • Des commandes destinées à piloter les applications cibles. Ce sont elles qui le distinguent des autres langa- ges de script et lui donnent toute sa puissance.

Info Historiquement, un langage de script permet de manipuler les fonctionnalités d’un système informatique, tant matérielles que logicielles. Également appelé « langage de commande », il donne accès aux commandes du système d’exploitation, dont il permet d’enchaîner automatiquement l’exécution. Ce gain de temps, comparé à la saisie des commandes par un opérateur humain, est également accru par la nature interprétée des langages de script, qui évite le cycle compilation-édition de lien-exécution. Aujourd’hui, on parle abusivement de langage de script dès lors qu’un langage de programmation est interprété.

Book_AppleScript.indb 4 3/09/09 14:23:46 Comment AppleScript fonctionne 5

Selon cette défi nition (tout langage permettant de manipuler les fonctionnalités d’un système informatique), AppleScript est un véritable langage de script, à la différence de JavaScript ou de VBA (Visual Basic for Applications), par exemple, dont la gamme des applications scriptables est plus limitée (il existe cependant une version de JavaScript permettant de scripter le Mac et ses appli- cations : JavaScript OSA ; voir www.latenightsw.com).

Ce principe permet de fournir à l’utilisateur-programmeur un langage formé d’une base stable constituée d’un noyau d’instructions facile à apprendre et à maîtriser, base qui est enrichie de commandes de pilotage propres à chaque appli- cation. Ainsi, il est garanti qu’Apple Script peut être utilisé pour toutes les applications Mac, existantes et à venir, et que seuls le vocabulaire et les concepts d’une nouvelle applica- tion que l’on souhaite piloter sont à découvrir.

Info Un autre avantage de cette base syntaxique formalisée dans le noyau du langage lui-même est que cela facilite la mise en place d’une terminologie uniforme pour nommer les différentes enti- tés informationnelles manipulées par l’ordinateur, à travers tant son système d’exploitation que ses applications. Qu’il s’agisse d’ouvrir une fenêtre du Finder ou un document Word, de créer un dossier sur le disque dur ou un nouvel album dans iTunes, la commande sera fondée sur la même forme syntaxique. Cette caractéristique d’« orthogonalité » facilite grandement l’utilisa- tion d’Apple Script dans différents contextes, même si l’on verra qu’elle a ses propres limites…

Lorsque Apple Script rencontre dans un script une telle commande de pilotage d’application, il l’envoie à l’applica- tion concernée par le moyen d’un mécanisme de commu- nication nommé « Apple Events » qui permet de coder tant la commande que ses éventuels paramètres. L’application

Book_AppleScript.indb 5 3/09/09 14:23:47 6 AppleScript

exécute la commande et renvoie éventuellement au script un résultat, toujours via Apple Events. Apple Script possède certaines caractéristiques d’un lan- gage orienté objet, puisqu’il utilise les concepts de classe, cible, message, etc. (tous ces concepts sont précisés dans la section « Objets » du Chapitre 2) : • Les commandes (ou « méthodes » dans la terminologie de l’orienté objet) sont les actions à appliquer aux don- nées, lesquelles modélisent tant les entités manipulées par le système lui-même (fi chiers, dossiers, fenêtres du Finder, etc.) que les documents gérés par les applica- tions qu’il héberge (images, textes, web, etc.). • Ces données sont modélisées en tant que classes, sous la forme d’une hiérarchie de classes héritant les unes des autres de caractéristiques propres, défi nies par des pro- priétés et éléments (ou « attributs »). • Les données manipulées par les scripts sont des objets (ou « instances ») des classes applicatives ou des classes système. • La terminologie utilisée par une application (ou par un composant du système lui-même) pour nommer les entités qu’elle gère (classes, propriétés, etc.) et les actions que le programmeur peut leur appliquer (commandes) est stockée dans un dictionnaire de pilotage. Toutes ces caractéristiques sont proposées sous la forme d’un langage de script interprété doté d’une syntaxe de type langage pseudo-naturel. AppleScript est donc particu- lièrement adapté aux programmeurs occasionnels ou débutants, qui pourront agréablement s’initier à la pro- grammation en faisant leurs premières armes dans un envi- ronnement familier, celui constitué des documents et applications utilisés au quotidien.

Book_AppleScript.indb 6 3/09/09 14:23:48 Comment utiliser AppleScript 7

Comment utiliser Apple Script Apple Script, de par sa versatilité, offre un large éventail de cas d’emploi : • Script de pilotage d’applications . Il s’agit de l’utili- sation classique d’un langage de script, qui consiste à piloter une (ou plusieurs) applications en lui faisant exécuter des actions. L’application cible peut être le sys- tème d’exploitation lui-même (à travers ses diverses composantes, dont le Finder) ou une application tierce (d’origine Apple ou non). • Script applicatif interne. Certaines applications permet- tent l’utilisation d’AppleScript comme langage de pro- grammation. Elles autorisent l’appel de scripts AppleScript depuis leur propre environnement. C’est le cas notamment de FileMaker Pro et d’Automator. Par ce moyen, elles s’ouvrent à la totalité des ressources de l’ordinateur. • Appel de scripts au sein d’une application. D’autres applications disposent d’une intégration privi- légiée d’Apple Script. Elles offrent généralement un menu dédié au lancement de scripts AppleScript au sein de leur IHM (par exemple iTunes et BBEdit) ou un mode de lancement par raccourcis clavier (Word). • Flux de travail interapplication (workfl ow). Dans ce cas, il s’agit de faire communiquer entre elles plu- sieurs applications, à travers un enchaînement d’actions appliquées à un ensemble de données. Cet enchaîne- ment peut suivre un processus métier typique (par exemple réception d’images, traitement d’images puis mise en page) ou répondre à un besoin spécifi que. Ces différents modes d’utilisation d’Apple Script permet- tent de répondre à de nombreux besoins fonctionnels. Mais AppleScript offre aussi une grande variété d’usage. Ainsi, tel script pourra être conçu et développé sur mesure – voire être exécuté une seule fois –, en vue de répondre à

Book_AppleScript.indb 7 3/09/09 14:23:48 8 AppleScript

un problème particulier, alors que tel autre sera un outil générique de quelques lignes, utilisable sur tout Mac et par tout utilisateur. Entre ces deux cas extrêmes, tous les usages sont envisageables, parmi lesquels vous trouverez certaine- ment le vôtre !

Astuce Apple Script peut également être utilisé en tant qu’enregistreur de macros . Dans ce mode (déclenché par le bouton Enregistrer de l’Éditeur de scripts), les actions de l’utilisateur sur l’IHM sont enregistrées sous forme d’événements Apple Events et transformées en un code Apple Script équivalent. Malheureuse- ment, seules de rares applications autorisent ce mode, dont le Finder.

Dès lors qu’un script a été développé et testé, il peut être stocké en un emplacement qui facilitera son utilisation ultérieure. Il peut s’agir du menu des scripts (voir section « Utiliser le menu des scripts » du Chapitre 1), de l’appli- cation pour laquelle il a été conçu (par exemple Word, voir section « Modifi er la sélection de texte » du Chapitre 15), d’un dossier particulier (dans le cas des droplets, voir la sec- tion « Enregistrer un script » du Chapitre 1) ou des autres moyens usuels pour lancer une application (icônes, Dock, raccourcis clavier). Comment lire cet ouvrage La première partie est une introduction au langage Apple Script lui-même. Elle débute par une présentation de l’environnement de développement (Chapitre 1) : Édi teur de scripts, menu des scripts, dictionnaire d’appli- cations, etc. Puis les bases du langage sont détaillées (Chapitre 2), à travers ses constituants élémentaires (mots-clés, constantes, expressions, etc.) et ses concepts

Book_AppleScript.indb 8 3/09/09 14:23:49 Comment lire cet ouvrage 9

(classes et objets, commandes applicatives, spécifi eurs d’objets, etc.). Les scripts sont abordés aux Chapitres 3 et 4, qui décrivent leur structure de base (blocs, sous- routines, gestionnaires, instructions) et certaines carac- téristiques avancées d’AppleScript (scripts objet, gestion d’erreur, compléments de pilotage, coercition, etc.). Cette partie consacrée au langage se conclut par une description exhaustive de ses types de données (nom- bres, chaînes de caractères, listes, dates, etc.), des algo- rithmes élémentaires qui leur sont généralement appliqués (création, tri, etc.) mais aussi des commandes d’interaction avec l’utilisateur : boîtes de dialogue ou de saisie et messages d’alerte (Chapitre 5). La deuxième partie est consacrée au pilotage de l’ordi- nateur à proprement parler, c’est-à-dire de son système d’ exploitation, ou du moins de ses composants scripta- bles. Le Chapitre 6 présente le scriptage du Finder et son système de fenêtres. Le Chapitre 7 traite du système de fi chiers : comment utiliser chemins de fi chier, fi chiers et dossiers dans vos scripts. Les Chapitres 8 et 9 exposent les principes du scriptage du système : contrôle des applica- tions, des disques, des Préférences Système, du Terminal. Enfi n, les Chapitres 10 et 11 décrivent deux modules modules annexes mais utiles : Image Events et ses fonc- tions de traitement d’images et Database Events, pour la gestion de petites bases de données. La troisième et dernière partie, la plus volumineuse, offre un catalogue de scripts consacrés aux principales applica- tions Mac, tant celles fournies par Apple, notamment à travers les suites iLife et iWork, que les logiciels disponi- bles auprès d’autres éditeurs : en particulier Adobe, avec sa suite CS, ou Microsoft et son célèbre Offi ce. Ces scripts et portions de scripts visent à donner les bases du scrip- tage de telle ou telle application, à travers ses principales fonctionnalités.

Book_AppleScript.indb 9 3/09/09 14:23:50 10 AppleScript

Ce catalogue n’est bien sûr pas exhaustif : de nombreuses applications en sont absentes et les dictionnaires de pilo- tage des applications qui y fi gurent ne sont pas couverts dans leur totalité (à titre d’exemple, le dictionnaire de Word 2008 contient soixante-dix classes et plusieurs cen- taines de commandes…). Le volume d’une encyclopédie ne suffi rait pas et l’exercice serait vain : une fois familiarisé avec plusieurs types d’applications, le lecteur parviendra aisément à découvrir par lui-même comment en piloter de nouvelles. Par ailleurs, les extraits de code sont donnés tels quels, avec pour seul objectif de démonter le fonction- nement d’une commande ou d’une classe, et sans aucun souci de qualité logicielle : il est donc recommandé au lec- teur de les incorporer à ses scripts en prenant soin de tester les cas limites, de les entourer des gestionnaires d’erreur adéquats, de sécuriser les interactions avec l’utilisateur, etc. Plusieurs niveaux de lecture sont possibles. Un lecteur déjà familier d’Apple Script pourra consulter les Parties I et II à titre de référence et la Partie III pour découvrir ou appro- fondir le pilotage d’une application particulière. Avant de se lancer dans des scripts de pilotage d’applica- tions, le programmeur débutant aura quant à lui tout inté- rêt à lire la Partie I, à essayer les portions de script qu’elle contient, à les modifi er et à les adapter à ses besoins. Puis, pour faire ses premiers pas, il pourra étudier le scriptage d’iTunes, application qui est utilisée comme fi l rouge de la majorité des exemples de la Partie I. Suppléments téléchargeables Scripts Tous les scripts décrits sont disponibles sur la page web de l’ouvrage, sur le site de l’éditeur (www.pearson.fr), dans la rubrique « Compléments ». Dans la présentation de ces scripts au sein de l’ouvrage, les mots-clés du langage sont composés en gras et les variables en italiques.

Book_AppleScript.indb 10 3/09/09 14:23:50 Ressources 11

Annexes Deux annexes en ligne, disponibles sur la page web de l’ouvrage (www.pearson.fr), traitent de deux aspects com- plémentaires à AppleScript : la programmation d’applica- tions avec AppleScript Studio (Annexe A) et le scriptage d’IHM avec GUI Scripting (Annexe B). Ressources Le site http://developer.apple.com/Apple Script est un bon point de départ pour explorer les possibilités d’Apple Script. La documentation du langage (guide, tuto- rial) se trouve sur la page http://developer.apple.com/ documentation/ScriptingAutomation/AppleScript- date.html. Une adaptation française de la documentation Apple Script est disponible sur la page http://trad.Apple- Script.free.fr/Apple Script.html. Des scripts et des routines élémentaires peuvent être trouvés sur les pages : http://www.macosxautomation.com/ Apple Script, http://www.iscript.fr. Le site http://www.applescriptsourcebook.com contient de nombreux tutoriaux et des exemples de scripts. Il est asso- cié à 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 (http://scriptbuilders.net), classés par catégo- rie (utilitaires, multimédia, réseau, etc.) et par applications (Entourage, iTunes, iCal, etc.). La page http://macscripter .net/links.php regroupe de nombreux liens utiles. Le site http://www.scriptweb.org, qui recense les nom- breuses possibilités de scriptage sur Macintosh sous forme de liens, s’intéresse bien sûr à Apple Script. La page http://developer.apple.com/cocoa/applescriptfor- apps.html expose comment un développeur doit procéder pour permettre à Apple Script d’accéder à ses applications.

Book_AppleScript.indb 11 3/09/09 14:23:51 12 AppleScript

Un exposé historique de la conception et de l’évolution d’Apple Script est disponible ici : http://www.cs.utexas .edu/~wcook/Drafts/2006/ashopl.pdf. Quelques livres en français traitent de la programmation Apple Script : • Automatisez vos tâches sous Mac OS X, Bernard Desgraupes et Jean-Philippe Moreux (Pearson Éduca tion France, 2008). • Mac OS X programmation – Version 10.5 Leopard – WebKit, Cocoa, Apple Script, Dashboard, Core-Animation, Étienne Vautherin (Dunod, 2007). • AppleScript – Maîtrise complète, Adam Goldstein (O’Reilly, 2005). Un ouvrage de référence est disponible en anglais : • Apple Script 1-2-3, Sal Soghoian, Bill Cheeseman (Peachpit Press, 2008).

Book_AppleScript.indb 12 3/09/09 14:23:52