- Applescript
-
AppleScript
AppleScript Dernière version 2.0 (le 26 octobre 2007) [+/−] Environnement Mac OS Type Langage de script Licence propriétaire, Apple EULA (Certaines partis sous licence APSL) Site Web www.apple.com AppleScript est un langage de script créé par Apple, et intégré à Mac OS. Il est connu pour posséder une syntaxe riche et élaborée, la plus proche que possible d'un pseudo-anglais limité. Plus largement, "AppleScript" est le mot qui désigne l'interface de script de Mac OS, qui est prévu pour fonctionner en parallèle de l'environnement graphique.
Sommaire
Histoire
Le projet AppleScript est issu du projet HyperCard. HyperCard disposait lui aussi d'un langage de script basé sur un pseudo-anglais limité, HyperTalk qui permettait de manipuler les données des piles HyperCard. Les ingénieurs d'Apple ont reconnus qu'un langage similaire de script pouvait être utilisé avec toute application, et le projet AppleScript est né comme un sous-ensemble du Système 7.
La première version fut publié en octobre 1993 avec le Système 7.1.1 (ou Système 7 Pro, première mise à jour majeure du Système 7). QuarkXPress dans sa version 3.2, fut l'une des première application importante à supporter AppleScript, avec comme conséquence qu'AppleScript fut largement adopté par la fraction publication de la clientèle d'Apple. On peut raisonnablement admettre que si Apple a gardé une place importante dans le monde de la PAO après le portage de Quark (et d'autres applications) sur la plateforme Microsoft Windows, c'est que les utilisateurs du Mac pouvaient automatiser des tâches complexes ou répétitives.
Le passage vers Mac OS X et son API Cocoa a permis à AppleScript de prendre son indépendance. Le scriptage basique des applications Cocoa demande peu d'effort de la part du développeur. AppleScript Studio, fourni depuis Mac OS X 10.2, permet à l'utilisateur de construire des applications complètes à partir d'AppleScript et les objets Cocoa.
Concept de base
AppleScript a été conçu pour offrir aux utilisateurs un mécanisme intelligent de contrôle d'applications, d'informations et de documents et ainsi mettre en œuvre une gestion automatisée des tâches. AppleScript est conçu comme une interface de script pour contrôler divers programmes. Automatiser des tâches avec AppleScript permet de réduire le temps qu'il faut pour accomplir ces tâches ainsi que de réduire les possibilités d'erreurs humaines.
Par exemple, un script pourrait ouvrir une photo dans une application d'édition photo, réduire sa résolution, ajouter une bordure, un titre, puis exporter la photo sur Internet et copier l'adresse de la photo dans un éditeur de texte, et enfin passer à la photo suivante de la série, et ainsi de suite à travers des centaines ou des milliers de photos, permettant la création d'une galerie photo sur Internet, le script pouvant utiliser un client FTP pour transférer les photos sur le site Web. Pour l'utilisateur, des centaines de mesures dans de multiples applications, utilisant des milliers de documents, ont été réduites à une seule : exécuter un script. Même si l'utilisateur ne devait utiliser un tel script qu'une seule fois, le temps de développement AppleScript peut être totalement exploité : dans la pratique, les scripts sont utilisés encore et encore, permettant un gain de temps considérable qui compense le temps de développement.
Un concept majeur de l'AppleScript est que les scripts manipulent les applications d'une manière fondamentalement différente de la façon dont les utilisateurs interagissent avec elles. L'utilisateur utilise l'application grâce à l'interface graphique, en choisissant des options dans les menus et en cliquant sur des boutons, alors que les scripts demandent et définissent les valeurs et les actions invoquées par l'application en mode interne. Ainsi, par exemple, plutôt que de simuler des frappes au clavier pour entrer du texte dans les champs d'une application, le script AppleScript utilise des commandes fixant directement les valeurs des champs souhaités de l'enregistrement, sans même que l'application n'affiche le dossier en cours d'actualisation. AppleScript a également la capacité de contrôler les applications non-scriptable grâce à l'interface graphique utilisateur (GUI) de scripts, ce qui permet au script de sélectionner des éléments du menu, cliquer sur les boutons, entrer du texte dans les champs de texte, et en général contrôler la plupart des interfaces de Mac OS X.
Étant donné que les applications sont toutes différentes les unes des autres, le nombre de commandes standards soutenues par toutes les applications est assez restreint. Chaque application scriptable publie les termes qu'elle comprend, sous la forme d'un dictionnaire d'évènements Apple (Apple Event), utilisé par AppleScript pour déterminer la validité des commandes qui peuvent être utilisées dans le contexte de chaque application.
AppleScript dans Mac OS X
De nombreuses applications Mac OS X sont scriptables, tant des applications fournies par Apple que celles de tiers. Le Finder, Safari, iPhoto et iTunes d'Apple ; Illustrator, Photoshop et InDesign d'Adobe ; Word et Excel de Microsoft ; QuarkXPress, pour ne citer que quelques exemples parmi les plus connus.
Avant le Système 7, le moteur d'exécution d'application Mac OS avait une programmation événementielle rudimentaire ne pouvant produire qu'un nombre limité d'évènements de bas niveau tel que "touche enfoncée" ou "souris cliquée". Chaque application était responsable du décodage des ces évènements de bas niveau en actions utilisateur significative de haut niveau tel que "sélectionner l'article Couper du menu Édition". Dans de nombreux cas, le code gérant la lecture de l'évènement et celui gérant son décodage ont été fusionnés. Par exemple, le code gérant le "clic souris" pouvait lui-même le décoder comme "sélectionner l'article Quitter du menu "Fichier", puis quitter l'application immédiatement.
L'auteur qui veut rendre scriptable son application par AppleScript doit séparer le décodage et l'exécution des commandes, une tâche qu'Apple référence comme refactorisation (… de l'application). Les développeurs furent encouragés à écrire à deux "piles" complètes de gestion d'évènement. L'une pour gérer les évènements de bas niveau (clics, etc.) l'autre pour les évènements de haut niveau (AppleEvents). […]
Dans Mac OS X, AppleScript est plus simple à mettre en œuvre par les développeurs, particulièrement pour les applications développée en Cocoa. Contrairement à Mac OS où les évènements sont traités par les applications, dans Cocoa, les évènements sont décodés en commande de haut niveau par l'objet
NSApplication
, et les messages adressés directement au bon objet. Chaque application Cocoa est "refactorisée" par défaut, le développeur n'ayant (normalement) plus à écrire le code de gestion des évènements mais seulement les "méthodes" qui seront appelées par ces évènements.Un autre grand avantage est que les objets Cocoa se présentent aux autres applications et même machines, sous un format standardisé que chacun peut étudier directement. Sous Cocoa, AppleScript est plus "mince". Le moteur de script décode le script, traduit les noms d'objet depuis leur forme compréhensible pour l'humain vers leur format interne, puis appelle directement les méthodes de l'application ciblé.
La métaphore du langage naturel
Considérant que les "Apple Events" sont une méthode d'envoi de messages aux applications, AppleScript est un langage conçu pour envoyer des "Apple Events". Fidèle à sa tradition qui veut que Mac OS soit facile d'utilisation, AppleScript est conçu comme une métaphore de langue naturelle, tout comme l'environnement graphique utilisateur est conçu comme une métaphore du bureau. Le langage AppleScript est généralement lisible par tous ceux qui maîtrisent un minimum l'anglais[1] et modifiable par la plupart de ceux-ci. Le langage est largement basé sur HyperTalk, la langage d'HyperCard, étendu pour ne plus se limiter au monde des cartes et piles d'HyperCard, mais pouvant s'adresser à théoriquement n'importe quel document. Pour atteindre cet objectif, l'équipe de développement a présenté l'"AppleScript AppleEvent Object Model" (AEOM), qui spécifie les commandes que chaque application est censée comprendre.
Le cœur d'AppleScript est formé de termes qui se présentent comme des noms et verbes qui peuvent être combinés. Par exemple, plutôt que d'avoir un terme pour imprimer une page, un pour imprimer un document ou imprimer une série de pages (imprimerPage, imprimerDocument, imprimerSerie), AppleScript utilise un seul verbe "print" qui pourra être combiné avec un objet, à savoir une page, un document ou une série de pages.
print page 1 print document 2 print pages 1 thru 5 of document 2
De manière générale, AEOM défini un certain nombre d'objets, tels que "document" ou "paragraphe", et les actions que l'on peut faire à leur égard, tels que "fermer" et "couper". Ce système permet également de se référer aux propriétés des objets. Par exemple, le "troisième paragraphe du document Bonjour", ou la "couleur du dernier mot de la fenêtre courante". AEOM utilise le dictionnaire des applications pour associer les Apple Events au langage AppleScript humainement compréhensible, permettant la traduction réciproque entre AppleScript compréhensible et le bytecode des Apple Events. Pour découvrir quels éléments sont scriptables pour une application donnée, il faut consulter son dictionnaire, accessible via l'article de menu "Ouvrir un dictionnaire" du menu "Fichier" de l'application "Éditeur de scripts".
Pour désigner quelle application est visée par le message, AppleScript utilise le verbe "tell" (dit à) :
tell application "Microsoft Word" quit end tell
Cette même demande peut s'écrire en une seule ligne en utilisant le verbe à l'infinitif :
tell application "Microsoft Word" to quit
Pour les évènements de la "Core suite" (activer, ouvrir, rouvrir, fermer, imprimer et quitter), l'application pour être l'objet indirecte de la demande :
quit application "Microsoft Word"
Le concept d'une hiérarchie d'objets est visible dans ces blocs imbriqués :
tell application "QuarkXPress" tell document 1 tell page 2 tell text box 1 set word 5 to "Apple" end tell end tell end tell end tell
Le concept de hiérarchie d'objets peut également être exprimé à l'aide de prépositions imbriquées :
pixel 7 of row 3 of TIFF image "my bitmap"
Hiérarchie qui dans un autre langage de programmation peut s'exprimer par l'appel séquentiel de fonctions :
getTIFF("my bitmap").getRow(3).getPixel(7);
AppleScript comprend les nombres ordinaux "le premier paragraphe", ainsi que les cardinaux "paragraphe 5". De même, les chiffres peuvent être mentionnés comme texte ou en nombres, les "cinq", "cinquième" et "5" sont compris. Ils sont appelé synonymes". Le mot anglais "the" peut également être utilisé dans un script afin d'améliorer la lisibilité sans avoir un impact sur la fonctionnalité du script.
Notes et références
- ↑ Pendant un certains temps, AppleScript supporta plusieurs langues (appelés "dialectes"). Outre l'anglais, il y avait le français et le japonais. À partir de Mac OS 8.5, seul l'anglais fut maintenu.
- Portail Apple
- Portail de l’informatique
- Portail de la programmation informatique
Catégories : Langage de script | Mac OS
Wikimedia Foundation. 2010.