Accueil > Les langages de scripting > Introduction à AppleScript sur Mac OS X

Introduction à AppleScript sur Mac OS X

Par Brad Dominy, le 11/12/2001

Traduit par Thierry, le 21/09/2002

Regardez tout le monde — AppleScript revient en force !

AppleScript a été l’une des technologies “cool”, gisant dans Mac OS depuis la version 7.1, la plus suivie, mais elle est en général cachée dans votre dossier Apple Extras attendant là d’être découverte. Maintenant, avec Mac OS X, elle a un nouveau domicile dans le dossier Applications, témoignage qu’Apple ne la considère plus qu’en tant qu’extra. AppleScript a un bel avenir, et il n’y a pas de meilleure période que maintenant de tirer profit de cette étonnante technologie.

“Pourquoi”, vous demandez-vous, “devrions-nous voir une fois de plus ce qu’AppleScript a à offrir ?”. Je peux vous donner trois raisons : Cocoa, Unix, et AppleScript en tant que telle.

L’avantage de Cocoa

La création d’une application scriptable n’a jamais été aussi facile, et Cocoa est à l’origine de cette réalité. Cocoa est un framework orienté objet qui gère les informations et les méthodes d’accès à ces informations sous forme d’objets. Les applications Cocoa ne sont en fait qu’une collection de ces objets qui coopèrent pour accomplir une tache.

Chacun de ces objets Cocoa et leurs méthodes peuvent potentiellement être accédés au travers d’AppleScript, et l’on peut profiter librement de la plupart des commandes de scripting du noyau. Prévoir la scriptabilité avec Cocoa mène naturellement à une bonne conception de programme. Encore mieux, si vous possédez un programme écrit avec Cocoa, l’ajout du support d’AppleScript est probablement plus facile que vous ne l’imaginez.

La manière Unix

Unix est en général considéré comme un OS, mais une des forces d’Unix tient dans sa faculté à combiner plein de petits programmes pour générer un programme plus important qui fera tout ce que vous voudrez, tout ça à partir de l’interprêteur de commande.

Ainsi, vous pouvez avoir un programme qui lit le contenu d’un fichier, l’envoi à un gestionnaire de flux pour y remplacer une chaîne par une autre, puis le scinde en plusieurs champs et stocke ces champs reformattés dans un autre fichier. En général, Unix accomplit tout ça par le bais de petits programmes dont l’objectif est très spécifique (par exemple : la lecture du contenu d’un fichier); par contre, la plupart des programmes Mac ou Windows sont plus monolithiques, incorporant plein de fonctions qui sont en général liées entre elles (consultation, envoi de mail, traitement de texte, transfert de fichier, etc).

Maintenant que Cocoa propose des objets pour chacune de ces fonctions basiques, le scriptage permettra l’accès à ces objets, leus méthodes et leurs données individuellement. Maintenant, un utilisateur peut les combiner aux fonctions d’autres applications, de l’OS et d’AppleScript lui-même, les faisant plus oeuvrer selon le modèle Unix et leur prodiguant plus de flexibilité et de puissance.

AppleScript X

AppleScript a muri en même temps que Mac OS et, AppleScript 1.7, résidant dans Mac OS X 10.1, inaugure de nouvelles manières de faire les choses qui sont incroyablement commodes.

Beaucoup d’applications embarquées dans Mac OS X sont déjà scriptables, notamment le Finder, iMovie, Internet Connect, iTunes, Mail, Print Center, QuickTime, Sherlock, et le Terminal. De plus, Mac OS X a rendu l’exécution des scripts incroyablement facile en ajoutant des scripts de barre d’outils et un Menu Script optionnel qui vous permet de lancer des AppleScripts, des scripts Perl et shell de n’importe où. Grace à ces ajouts, démarrer un work flow est aussi facile que de naviguer dans vos fichiers, de cliquer sur un bouton ou de sélectionner une commande de menu.

De plus, AppleScript peut maintenant accéder à des Web Services. Ces derniers sont des services reposant sur XML qui utilisent SOAP ou XML-RPC pour transmettre les informations à vos scripts au travers d’Internet. Cela vous donne accès à des informations mises à jour ou à des sources de données temps réel telles que les cotations de titres, les données météo et les taux de conversion de devises, parmi tant d’autres.

Si cela ne suffit pas à réaffirmer votre croyance en l’engagement d’Apple envers AppleScript, Apple vient juste de publier AppleScript Studio, qui fait d’AppleScript et d’Objective-C ou de Java le couple de langage idéal pour créer des applications Cocoa, applications dotées de front-ends batis avec Interface Builder. Clairement, AppleScript n’a jamais été aussi bon. Si vous souhaitez vous en rendre compte par vous même, allez sur le Site Web d’AppleScript et jetez un oeil à la démo AppleScript effectuée lors du Seybold 2001. Très sympa.

AppleScript pour tout le monde

Si vous n’avez jamais utilisé AppleScript auparavant, vous serez ravi d’entendre qu’il tient la comparaison avec d’autres langages de script disponibles sur d’autres plate-formes. Windows utilise Visual Basic (VBScript) en tant que base de support du scripting, alors que Linux ou d’autres Unix utilisent en général des scripts shell ou Perl. Bien que ces derniers ne soient pas les seuls disponibles sur ces OS, ils sont les plus courants. Chaque système de scripting a ses propres avantages et désavantages, mais à mon opinion, aucun n’est aussi accessible aux non-programeurs qu’AppleScript.

AppleScript est basé sur une syntaxe agréable, humaine et proche de langage, qui est conviviale et facile à lire et à comprendre. Il supporte même les dialectes locaux ce qui implique que vous pouvez écrire des scripts en anglais, français ou allemand par exemple, adoptant ainsi la syntaxe et le style de cette langue.

Voici à quoi ressemble un script (d’Apple) pour cacher toutes les fenêtres du Finder :

tell application "Finder"
if the (count of windows) is not 0 then
   set collapsed of every window to true
end if
end tell

AppleScript supporte l’enregistrement de commandes, quand une action utilisateur peut être capturée automatiquement. AppleScript peut fonctionner entre des applications Native et Classic sous Mac OS X 10.1 et entre différentes machines sur Internet. Il permet un apprentissage progressif, mais il peut très bien s’étendre pour accomplir des traitements avancés. En somme, cela signifie qu’AppleScript a le potentiel pour être utilisé pas seulement par des programmeurs Mac chevronnés, mais par tout utilisateur aussi. Ajoutez cette facilité d’utilisation à la faculté de Cocoa à accéder à des fonctions individuelles à l’intérieur de programmes, et vous obtiendrez quelque chose de grand.

Votre première application Cocoa scriptable

Avec plein d’espoirs, vous êtes maintenant un fervent croyant du scripting et ne pouvez plus attendre de l’inclure dans vos applications. Juste pour vous montrer combien cela est facile, je vais vous montrer comment créer une application scriptable en quatre étapes.

  1. Ouvrez Project Builder et créez une nouvelle application Cocoa intitulée “ScriptableApp“.
  2. Construisez le projet sans modifier quoique ce soit en cliquant sur le bouton Build Active Target (marteau).
  3. Ouvrez le fichier Info.plist, disponible en ouvrant le dossier Products puis le ScriptableApp.app, et ajoutez les lignes suivantes à la fin de la liste courante de clés :
    <key>NSAppleScriptEnabled</key>  <string>YES</string>

    Assurez-vous qu’elles soient formattées comme les autres clés et qu’elles apparaissent avant la balise de fin </dict>.


Figure 1. Ajout de la clé NSAppleScriptEnabled à l’info.plist de ScriptableApp

  1. Sauvegardez et reconstruisez votre application. C’est tout !

Vous avez maintenant ajouté le support de la Core Suite des commandes AppleScripts à votre application.

Vous pouvez le vérifier en lançant l’Editeur de Scripts situé à l’intérieur de votre dossier AppleScript dans votre dossier Applications et en sélectionnant “Ouvrir un Dictionnaire…” dans le menu Fichier.

L’application ScriptableApp n’ayant pas été installée, elle est toujours située dans le dossier build de votre projet. Cliquez sur le bouton “Parcourir…” et allez jusqu’au dossier du projet de ScriptableApp et cherchez y un dossier build. A l’intérieur de ce dossier vous devriez voir ScriptableApp.app. Sélectionnez la et vous devriez voir ScriptableApp se lancer et une fenêtre Dictionnaire ScriptableApp apparaître avec la Standard Suite et la Text Suite sur la partie gauche de la fenêtre. Un clic sur un éléments de la partie gauche fera apparaître la syntaxe de cet élément et une brieve description de la manière dont cet élément est utilisé.


Figure 2. Ouverture du dictionnaire de ScriptableApp

Maintenant, nous n’avons ajouté aucun objet texte à notre application, donc la Text Suite ne fait pas vraiment grand chose dans cette application. De la même façon, certaines commandes de la Standard Suite, telles que enregistrer, imprimer, déplacer, supprimer, duppliquer, ont besoin d’un peu plus de code avant qu’elles ne “do the right thing” (fassent ce qu’elles doivent faire) mais nous pouvons quand même accéder à pas mal de commandes, régler et récupérer les valeurs de différents éléments.

J’ai écrit un script qui fait la démonstration de quelques-unes de ces commandes et de quelques trucs que l’on peut faire librement. Téléchargez ScriptableApp.sit et ouvrez le dans l’Editeur de Script. Lancez le et revoyez quelques commandes par vous même. Vous pouvez aussi observez le dictionnaire d’autres applications et étudier les scripts d’exemple installés avec AppleScript et qui sont aussi disponibles sur Le site web AppleScript d’Apple.

But de cette série

Dans le reste de cette série, je vais me focaliser sur l’ajout du caractère scriptable aux applications Cocoa écrite en Objective-C d’abord. J’aborderai aussi les aspects traitant de localisation, de création d’applications sans interface utilisateur et du support natif du scripting.

Si vous n’avez pas une bonne connaissance de l’Objective-C ou de Cocoa, je vous conseille l’excellente série de Mike Beam sur la programmation Cocoa. Je n’utiliserai pas d’exemple compliqué au début mais une connaissance basique des deux sera utile.

Les applications Cocoa peuvent aussi être écrite en Java et nous verrons ajouter le support du scripting dans ces applications. Je jéterai aussi un oeil à AppleScript Studio, disponible dans la toute dernière version des outils de développement de Mac OS X, et vous montrerai ce qu’il apporte.

La prochaine fois

Dans le prochain article, nous parlerons de la manière dont Cocoa supporte le scripting au niveau objet et irons plus en détail dans la Core Suite et la Text Suite que nous avons vues dans notre exemple ScriptableApp. Nous verrons aussi comment mieux concevoir des programmes pour rendre l’ajout du scripting plus facile. A bientôt.

Textes originaux en anglais sur O’Reilly : http://www.macdevcenter.com/pub/au/780

Thierry Les langages de scripting ,

  1. Pas encore de commentaire
  1. Pas encore de trackbacks
S'abonner aux commentaires de cet article