Vous êtes sur la page 1sur 368

Guide AppleScript

version franaise

Prambule

Ce guide nest absolument pas une traduction officielle de la Socit Apple. Ce guide se base sur le guide AppleScript Language Guide for AppleScript 1.3.7 uniquement disponible en version anglaise depuis Mai 1999. ce jour, aucune localisation de ce texte na t faite, que ce soit en franais ou dans une autre langue. Le guide AppleScript Language Guide est la rfrence pour toute personne dsirant approfondir la technologie AppleScript. Lunique version anglaise pnalisant et limitant laccs cette technologie pour les non-anglophones, un essai de dclinaison en franais a vu le jour. Ce guide nest pas exempt derreurs de frappe ou dincohrences et je vous prie de men excuser. En esprant que cette version franaise comblera lattente de tous les utilisateurs francophones, je vous souhaite une bonne lecture de ce premier tome sur les possibilits du langage AppleScript.

Un utilisateur Mac

Merci Daniel, Jean-Marie et Raymond pour leur aide indispensable.

Marques dposes Apple, le logo Apple, AppleScript, AppleTalk, AppleWorks, Finder, LaserWriter, Mac, Macintosh et PowerBook sont des marques dposes de Apple Computer ; Inc. Toutes les autres marques sont la proprit de leurs dtenteurs respectifs.

Sommaire

AppleScript est un langage de pilotage, dautomatisation de tches, que ce soit pour le systme ou pour des applications. Au lieu dutiliser la souris ou le clavier pour manipuler les menus ou les boutons, vous pouvez crire un jeu dinstructions - appel script - pour automatiser les tches rptitives ou pour personnaliser les applications. Tous les caractres de couleur bleue sont des liens qui afficheront la page indique.

Tome 1

Gnralits Les valeurs et les constantes


Gnralits . . . . . T1 - 6 Quest ce quAppleScript ? . . . . . T1 - 6 AppleScript et les applications . . . . . T1 - 6 Comment AppleScript fonctionne ? . . . . . T1 - 7 Les instructions . . . . . T1 - 8 Les commandes . . . . . T1 - 9 Les objets . . . . . T1 - 10 Les dictionnaires . . . . . T1 - 11 Les valeurs et les constantes . . . . . T1 - 12 Les expressions . . . . . T1 - 13 Les complments de pilotage . . . . . T1 - 14 Les coercitions . . . . . T1 - 15 Les caractres spciaux . . . . . T1 - 15 Les commentaires . . . . . T1 - 17 Les identificateurs . . . . . T1 - 18 Les abrviations . . . . . T1 - 20 Linstruction Log . . . . . T1 - 21

Chapitre 1

Chapitre 2

Les valeurs . . . . .T1 - 24 Utilisation des classes de valeur . . . . . T1 - 24 Boolean . . . . . T1 - 31 Class . . . . . T1 - 32

Sommaire

Constant . . . . . T1 - 33 Data . . . . . T1 - 35 Date . . . . . T1 - 36 Integer . . . . . T1 - 41 List . . . . . T1 - 43 Number . . . . . T1 - 47 Real . . . . . T1 - 48 Record . . . . . T1 - 50 Reference . . . . . T1 - 53 String . . . . . T1 - 57 Styled Text . . . . . T1 - 62 Text . . . . . T1 - 64 Les classes de valeur dunits de mesure . . . . . T1 - 64 Les classes de valeur dunits de mesure par catgories . . . . . T1 - 65 Travailler avec les valeurs dunits de mesure . . . . . T1 - 67 Autres classes de valeur . . . . . T1 - 68 Unicode Text et International Text . . . . . T1 - 68 File Specification . . . . . T1 - 71 RGB Color . . . . . T1 - 72 Styled Clipboard Text . . . . . T1 - 73

Chapitre 3

Les coercitions . . . . . T1 - 74

Chapitre 4

Les constantes . . . . . T1 - 78 Constantes arithmtiques . . . . . T1 - 78 Constantes boolennes . . . . . T1 - 79 Attributs des instructions Considering et Ignoring . . . . . T1 - 79 Constantes de date et dheure . . . . . T1 - 80 Diverses constantes de script . . . . . T1 - 81 Constantes des options denregistrement . . . . . T1 - 83 Constantes des chanes de caractres . . . . . T1 - 84 Constantes des styles de texte . . . . . T1 - 84 Constante Version . . . . . T1 - 85

II

Sommaire

Tome 2

Les commandes

Chapitre 1

Introduction . . . . . T2 - 6

Chapitre 2

Les types de commandes . . . . . T2 - 7 Les Commandes dapplication . . . . . T2 - 7 Les Commandes AppleScript . . . . . T2 - 9 Les Commandes des complments de pilotage . . . . . T2 - 9 Les Commandes dfinies par lutilisateur . . . . . T2 - 12

Chapitre 3

Utilisation des dfinitions de commandes . . . . . T2 - 13 Syntaxe . . . . . T2 - 13 Paramtres . . . . . T2 - 14 Rsultat . . . . . T2 - 15 Exemples . . . . . T2 - 15 Erreurs . . . . . T2 - 15

Chapitre 4

Utilisation des paramtres . . . . . T2 - 17 Les coercitions de paramtres . . . . . T2 - 17 Les paramtres qui spcifient des emplacements . . . . . T2 - 18 Les donnes brutes (raw data) dans les paramtres . . . . .T2 - 19

Chapitre 5

Utilisation des rsultats . . . . . T2 - 20 Visualiser un rsultat dans la fentre rsultat de lditeur de scripts . . . . . . . . . . . . . . . . .T2 - 20 Utiliser la variable prdfinie result . . . . . T2 - 21

Chapitre 6

Les Chevrons dans les rsultats et les scripts . . . . . T2 - 23 Quand un dictionnaire nest pas disponible . . . . . T2 - 23 Quand AppleScript affiche les donnes en format brut (raw) . . . . . T2 - 25 Saisir les informations dun script en format brut (raw) . . . . . T2 - 26 Envoi dApple Events Bruts partir dun script . . . . . T2 - 28

Sommaire

III

Chapitre 7

Les dfinitions de commandes . . . . . T2 - 29 Close . . . . . T2 - 32 Copy . . . . . T2 - 34 Count . . . . . T2 - 36 Delete . . . . . T2 - 40 Duplicate . . . . . T2 - 41 Exists . . . . . T2 - 42 Get . . . . . T2 - 43 Launch . . . . . T2 - 45 Make . . . . . T2 - 48 Move . . . . . T2 - 50 Open . . . . . T2 - 51 Print . . . . . T2 - 52 Quit . . . . . T2 - 53 Reopen . . . . . T2 - 54 Run . . . . . T2 - 56 Save . . . . . T2 - 58 Set . . . . . T2 - 59

Tome 3

Les objets et les rfrences

Chapitre 1

Introduction . . . . . T3 - 6

Chapitre 2

Les dfinitions des classes dobjet . . . . . T3 - 8 Les proprits . . . . . T3 - 10 Les classes dlment . . . . . T3 - 10 Les classes de valeur retournes par dfaut . . . . . T3 - 11

Chapitre 3

Les rfrences . . . . . T3 - 12 Les containers . . . . . T3 - 13 Les rfrences compltes ou partielles . . . . . T3 - 14

Chapitre 4

Les formes de rfrence . . . . . T3 - 16 Arbitrary Element . . . . . T3 - 17 Every Element . . . . . T3 - 18


Sommaire

IV

Filter . . . . . T3 - 20 ID . . . . . T3 - 21 Index . . . . . T3 - 24 Middle Element . . . . . T3 - 26 Name . . . . . T3 - 27 Property . . . . . T3 - 29 Range . . . . . T3 - 30 Relative . . . . . T3 - 32

Chapitre 5

Utilisation de la forme de rfrence Filter . . . . . T3 - 36

Chapitre 6

Les rfrences aux fichiers . . . . . T3 - 39 Spcifier un fichier par son nom ou par son chemin daccs . . . . . T3 - 39 Spcifier un fichier par une rfrence . . . . . T3 - 40 Spcifier un fichier par un alias . . . . . T3 - 41 Diffrence entre File et Alias . . . . . T3 - 42 Spcifier un fichier par File Specification . . . . . T3 - 42

Chapitre 7

Les rfrences aux applications . . . . . T3 - 43 Les rfrences aux applications locales . . . . . T3 - 44 Les rfrences aux applications distantes . . . . . T3 - 45

Tome 4

Les expressions

Chapitre 1

Introduction . . . . . T4 - 6

Chapitre 2

Le rsultat des expressions . . . . . T4 - 8

Chapitre 3

Les variables . . . . . T4 - 9 La cration des variables . . . . . T4 - 9 Lutilisation des variables . . . . . T4 - 11 Loprateur A Reference To . . . . . T4 - 12 Le partage de donnes . . . . . T4 - 15
Sommaire V

La porte des variables . . . . . T4 - 16 Les variables prdfinies . . . . . T4 - 16

Chapitre 4

Les proprits de script . . . . . T4 - 17 Dfinir les proprits de script . . . . . T4 - 17 Utiliser les proprits de script . . . . . T4 - 18 Porte des proprits de script . . . . . T4 - 18

Chapitre 5

Les proprits dAppleScript . . . . . T4 - 20

Chapitre 6

Les expressions rfrence . . . . . T4 - 22

Chapitre 7

Les oprations . . . . . T4 - 23 Les oprateurs dAppleScript . . . . . T4 - 24

Chapitre 8

Les oprateurs qui grent les oprandes de diverses classes . . . . . T4 - 33 Equal, Is Not Equal To . . . . . T4 - 33 Greater Than, Less Than . . . . . T4 - 37 Starts With, Ends With . . . . . T4 - 39 Contains, Is Contained By . . . . . T4 - 40 Concatnation . . . . . T4 - 41

Chapitre 9

La priorit des oprateurs . . . . . T4 - 44

Chapitre 10

La gestion des dates et des heures . . . . . T4 - 47 Arithmtique avec les dates et les heures . . . . . T4 - 47 La gestion des dates de fin de sicle . . . . . T4 - 49

Tome 5

Les instructions de contrle

Chapitre 1
VI

Introduction . . . . . T5 - 6
Sommaire

Chapitre 2

Caractristiques des instructions de contrle . . . . . T5 - 8

Chapitre 3

Dboguer les instructions de contrle . . . . . T5 - 10

Chapitre 4

Les instructions Tell . . . . . T5 - 11 Les instructions Tell imbriques . . . . . T5 - 11 Utiliser it, me, et my dans les instructions Tell . . . . . T5 - 12 Tell (instruction simple) . . . . . T5 - 14 Tell (instruction compose) . . . . . T5 - 15

Chapitre 5

Les instructions If . . . . . T5 - 17 If (instruction simple) . . . . . T5 - 19 If (instruction compose) . . . . . T5 - 20

Chapitre 6

Les instructions Repeat . . . . . T5 - 21 Repeat (forever) . . . . . T5 - 22 Repeat (number) times . . . . . T5 - 23 Repeat While . . . . . T5 - 24 Repeat Until . . . . . T5 - 25 Repeat With (loopVariable) From (startValue) To (StopValue) . . . . . T5 - 26 Repeat With (loopVariable) In (list) . . . . . T5 - 27 Exit . . . . . T5 - 30

Chapitre 7

Les instructions Try . . . . . T5 - 31 Les types derreurs . . . . . T5 - 32 Comment les erreurs sont gres . . . . . T5 - 38 crire une instruction Try . . . . . T5 - 38 Signaler les erreurs dans les scripts . . . . . T5 - 41

Chapitre 8

Les instructions Considering et Ignoring . . . . . T5 - 46 Syntaxe . . . . . T5 - 47 Attributs . . . . . T5 - 47 Exemples . . . . . T5 - 48 Notes . . . . . T5 - 49


Sommaire VII

Chapitre 9

Les instructions With Timeout . . . . . T5 - 51 Syntaxe . . . . . T5 - 52 Exemples . . . . . T5 - 52

Chapitre 10

Les instructions With Transaction . . . . . T5 - 54 Syntaxe . . . . . T5 - 54 Exemples . . . . . T5 - 54

Tome 6

Les gestionnaires

Chapitre 1

Introduction . . . . . T6 - 6

Chapitre 2

Les scripts-applications . . . . . T6 - 7

Chapitre 3

propos des routines . . . . . T6 - 8 Linstruction Return . . . . . T6 - 8 Un exemple de routine . . . . . T6 - 10 Les types de routines . . . . . T6 - 11 Porte des appels de routine dans les instructions Tell . . . . . T6 - 12 Vrifier la classe des paramtres de routines . . . . . T6 - 13 Les routines rcursives . . . . . T6 - 14 Enregistrer et charger des librairies de routines . . . . . T6 - 15

Chapitre 4

Dfinir et appeler les routines . . . . . T6 - 18 Les routines avec des paramtres tiquets . . . . . T6 - 18 Dfinir une routine avec des paramtres tiquets . . . . . T6 - 19 Appeler une routine avec des paramtres tiquets . . . . . T6 - 20 Exemples de routines avec des paramtres tiquets . . . . . T6 - 22 Les routines avec des paramtres positionns. . . . . T6 - 25 Dfinir une routine avec des paramtres positionns . . . . . T6 - 25 Appeler une routine avec des paramtres positionns . . . . . T6 - 26 Exemples de routines avec des paramtres positionns . . . . . T6 - 28

VIII

Sommaire

Chapitre 5

Les gestionnaires de commande . . . . . T6 - 30 Syntaxe des gestionnaires de commande . . . . . T6 - 30 Les gestionnaires de commande pour les objets dapplication . . . . . T6 - 32 Les gestionnaires de commande pour les scripts-applications . . . . . T6 - 32 Les gestionnaires Run . . . . . T6 - 33 Les gestionnaires Open . . . . . T6 - 35 Les gestionnaires de script-application Stay-open . . . . . T6 - 37 Les gestionnaires Idle . . . . . T6 - 38 Les gestionnaires Quit . . . . . T6 - 39 Interrompre des gestionnaires de script-application . . . . . T6 - 40 Appeler un script-application depuis un script . . . . . T6 - 40

Chapitre 6

Porte des variables et des proprits de script . . . . . T6 - 43 Dclarer des variables et des proprits . . . . . T6 - 44 Porte des variables et des proprits dclares au top niveau dun script . . . . . . . . . . . . . . . . T6 - 45 Porte des proprits et des variables dclares dans un script-objet . . . . . . . . . . . . . . . . . . . . . . . T6 - 49 Porte des variables dclares dans un gestionnaire . . . . . T6 - 53

Tome 7

Les scripts-objets

Chapitre 1

Introduction . . . . . T7 - 6

Chapitre 2

propos des scripts-objets . . . . . T7 - 7

Chapitre 3

Dfinir un script-objet . . . . . T7 - 9

Chapitre 4

Envoyer des commandes aux scripts-objets . . . . . T7 - 11

Chapitre 5

Initialiser les scripts-objets . . . . . T7 - 13

Sommaire

IX

Chapitre 6

Hritage et dlgation . . . . . T7 - 15 Dfinir lhritage . . . . . T7 - 15 Fonctionnement de lhritage . . . . . T7 - 16 Linstruction Continue . . . . . T7 - 20 Utiliser linstruction Continue pour transmettre des commandes aux applications . . . . . . . T7 - 24 La proprit Parent et lapplication courante . . . . . T7 - 25

Chapitre 7

Utiliser les commandes Copy et Set avec les scripts-objets . . . . . T7 - 27

Sommaire

Conventions
Certains termes de ce guide sont mis en gras lorsquils sont dfinis pour la premire fois. Les conventions suivantes sont utilises dans la syntaxe de ce guide :
lment de langage

le texte, reprsent tel que ci-contre, indique un exemple ou morceau de script. Le texte doit tre recopi dans lditeur de scripts dans son intgralit. Si des symboles spciaux (comme & ou +) sont nots, ils devront galement tre saisis. un texte en italique indique un paramtre de substitution que vous remplacerez par une valeur approprie. (Dans dautres langages de programmation, les paramtres de substitution sont appels nonterminals.) les crochets indiquent que les lments inscrits entre crochets sont facultatifs lors de lcriture des scripts. les parenthses groupent ensemble plusieurs lments. Si les parenthses font partie de la syntaxe du langage, elles sont en gras. trois petits points (...) aprs un groupe dfini entre crochets indiquent que vous pouvez rpter le groupe d'lments entre crochets x fois ( 1 ou plus). trois petits points (...) aprs un groupe dfini entre parenthses indiquent que vous pouvez rpter le groupe d'lments entre crochets x fois ( 1 ou plus). les barres verticales sparent les lments dun groupe dans lequel vous devez choisir un seul lment. Les lments spars par des barres verticales sont le plus souvent groups entre crochets ou parenthses.

paramtre de substitution

[optionnel]

(un groupe)

[optionnel]...

(un groupe)...

a|b|c

Conventions

Tome 1

Gnralits Les valeurs et les constantes

Chapitre 1

Tome 1

Gnralits

Quest ce quAppleScript ?
AppleScript est un langage de pilotage vous permettant dautomatiser une srie de tches sur votre ordinateur, de contrler directement des applications. Au lieu dutiliser la souris, le clavier ou un autre dispositif pour manipuler les menus, boutons ou autres, vous pouvez crer un jeu dinstructions appel Scripts pour automatiser les tches rptitives, personnaliser des applications. Sa caractristique cl est sa capacit envoyer des commandes aux objets de diffrentes applications, y compris le Finder ou certains composants du logiciel systme (comme le tableau de bord Apparence).

AppleScript et les applications


Vous pouvez contrler plusieurs applications dans un seul script et les applications peuvent se trouver sur des ordinateurs distants. Un script peut envoyer des instructions une application, recevoir les donnes qui en rsultent, et transfrer alors les donnes une ou plusieurs applications diffrentes de la premire. Par exemple, un script peut collecter des informations dans une base de donnes et les copier dans un tableur. Dans le mme ordre dide, un script peut utiliser une application pour excuter une action sur les donnes dune autre application. Par exemple, supposons quun traitement de texte comporte un correcteur orthographique et supporte aussi une commande AppleScript de vrification dorthographe, une commande Check Spelling. Vous pouvez vrifier lorthographe dun bloc de texte dune autre application, juste en crivant un script qui envoie la commande AppleScript et le texte vrifier au traitement de texte, lequel retourne le rsultat lapplication qui excute le script. Pour information, AppleWorks supporte une telle commande, la commande est Check Spelling. Une application pilotable est une application qui peut rpondre une ou plusieurs commandes AppleScript. Toutes les applications ne sont pas pilotables et certaines ne supportent quun nombre limit de commandes
Gnralits T1 - 6

Chapitre 1

Tome 1

AppleScript, comme Open ou Quit. Pour dterminer si une application est pilotable, vous pouvez essayer de lire son dictionnaire avec lapplication diteur de scripts. Lapplication diteur de scripts est fournie avec le langage AppleScript, elle permet la cration, la compilation, le test et la modification de scripts. Pour ouvrir le dictionnaire dune application, soit vous dposez son icone sur celle de lditeur de script, soit vous louvrez depuis le menu ouvrir un dictionnaire du menu Fichier de lditeur de scripts. Certaines applications pilotables sont aussi mmorisables, cest dire que vous pouvez utiliser lditeur de scripts pour mmoriser les actions que vous excutez dans lapplication. Pour finir, certaines applications sont aussi attachables. Une application attachable est une application qui peut tre personnalise en attachant des scripts des objets spcifiques de lapplication, tels que des boutons ou des menus. Les scripts sont alors dclenchs par une action spcifique de lutilisateur, comme en choisissant le menu ou en cliquant le bouton associ au script. Pour dterminer si une application est attachable, se rfrer la documentation de lapplication.

Comment AppleScript fonctionne ?


AppleScript travaille en envoyant des messages, appels vnements Apple (Apple Events), aux applications. Quand vous crivez un script, vous crivez un ou plusieurs groupes dinstructions. Lorsque vous excutez le script, les instructions sont envoyes lextension AppleScript, laquelle les interprte dans lordre et envoie des Apple Events ou aux applications concernes. Lapplication rpond aux Apple Events en excutant les actions, comme en insrant un texte, en rcuprant une valeur ou en ouvrant un document. Les applications peuvent aussi retourner des Apple Events lextension Applescript pour signaler les rsultats. Lextension AppleScript renvoie alors le rsultat demand au script.

T1 - 7

Gnralits

Chapitre 1

Tome 1

Les instructions
Le fondement des scripts sont les instructions. Quand vous crivez un script, vous composez des instructions qui dcrivent les actions que vous voulez excuter. AppleScript fournit plusieurs types particuliers d'instructions, comme les instructions conditionnelles If, les instructions de rptition Repeat, qui vous permettent de contrler quand et comment les instructions sont excutes. Ces instructions sont appeles des instructions de contrle. Toutes les instructions, y compris les instructions de contrle, appartiennent lune de ces deux catgories: instructions simples ou instructions composes. Les instructions simples sont des instructions crites sur une seule ligne, comme lexemple suivant :
tell application "Finder" to close front window.

Les instructions composes sont des instructions crites sur plusieurs lignes et qui contiennent dautres instructions. Toutes les instructions composes ont deux choses en commun: elles peuvent contenir un nombre illimit d'instructions, et elles finissent par une dernire ligne commenant par le mot end (suivi, facultativement, par le nom de linstruction compose). L'instruction simple montre dans lexemple prcdent est quivalente linstruction compose suivante :
tell application "Finder" close the front window end tell

Linstruction Tell inclut les lignes tell application "Finder" et end tell, et toutes les instructions simples entre ces deux lignes. Par exemple, ci-dessous, une instruction Tell qui contient deux instructions :
tell application "Finder" set windowName to name of front window close front window end tell

Cet exemple illustre lavantage utiliser une instruction compose : vous pouvez ajouter des instructions supplmentaires lintrieur de celle-ci. Notez que lexemple prcdent contient l'instruction close front window au

Gnralits

T1 - 8

Chapitre 1

Tome 1

lieu de close the front window. AppleScript autorise lajout ou la suppression du terme the, nimporte o dans un script, sans modifier le sens du script. Vous pouvez utiliser le terme the pour crire vos instructions en anglais plus courant et par consquent plus facilement lisible. Attention, toutefois, certaines commandes contiennent le mot the et il ne doit pas tre enlev. Par exemple, les commandes The Clipboard, Set The Clipboard To ont le mot the dans leurs orthographes et il est obligatoire. Voici un autre exemple dinstruction compose :
if the name of the front window is "Loulou" then close front window end if

Les instructions contenues dans une instruction compose peuvent elles-mme tre des instructions composes. Voici un exemple :
tell application "Finder" if the name of the front window is "Loulou" then close front window end if end tell

Les commandes
Les commandes sont les termes ou phrases que vous utilisez dans les instructions Applescript pour demander des actions ou des rsultats. Chaque commande est adresse une cible, laquelle est lobjet qui rpond la commande. La cible d'une commande est dhabitude un objet dapplication. Les objets dapplication sont des objets qui appartiennent une application, comme une fentre, ou des objets dans un document, comme les mots et les paragraphes dans un fichier texte. Les commandes peuvent aussi tre adresses des objets systme, lesquels objets spcifiques appartiennent au systme Mac OS, comme un service dimpression ou un thme du tableau de bord Apparence.

T1 - 9

Gnralits

Chapitre 1

Tome 1

Les objets
Un objet est un lment, comme un fichier ou un dossier dans le Finder, un mot ou un paragraphe dans un traitement de texte, ou une range, une colonne ou une cellule dans un tableur, qui peuvent rpondre aux commandes conformment aux actions excutes. AppleScript dtermine dynamiquement cest dire, chaque fois que ncessaire les objets et les commandes reconnus par une application en se basant sur les informations stockes dans chaque application pilotable. Les scripts-objets sont les objets que vous dfinissez et utilisez dans les scripts. Comme les objets dapplication, les scripts-objets rpondent aux commandes et ont des informations spcifiques associes avec eux. A la diffrence des objets dapplication, les scripts-objets sont dfinis dans les scripts. Les scripts-objets sont une caractristique avance dAppleScript. Ils vous permettent dutiliser les techniques de programmation oriente-objet pour dfinir de nouveaux objets et commandes. Les informations contenues dans les scripts-objets peuvent tre sauvegardes et utilises par dautres scripts. Chaque objet a des informations spcifiques associes avec lui et il peut rpondre des commandes spcifiques. Par exemple, dans le Finder, un objet fentre comprend la commande Close. Lexemple suivant montre comment utiliser la commande Close pour demander ce que le Finder ferme la fentre en avant-plan :
tell application "Finder" close the front window end tell

La commande Close est insre dans une instruction Tell. Les instructions Tell prcisent des cibles par dfaut pour les commandes quelles contiennent. La cible par dfaut est lobjet qui reoit les commandes si aucun autre objet nest spcifi ou si lobjet est spcifi incompltement dans la commande. Dans ce cas, la structure contenant l'instruction Close ne contient pas assez dinformations pour identifier uniquement lobjet fentre, aussi AppleScript utilise le nom de lapplication indique dans linstruction Tell pour dterminer quel objet reoit la commande Close.

Gnralits

T1 - 10

Chapitre 1

Tome 1

Dans AppleScript, vous utiliserez des rfrences pour spcifier les objets. Une rfrence est un nom compos, similaire un nom de rue ou une adresse, qui spcifie un objet. Par exemple, la phrase suivante est une rfrence :
front window of application "Finder" --rsultat la fentre en avant-plan du Finder

Cette phrase indique un objet fentre qui appartient lapplication Finder. Lapplication elle-mme est aussi un objet. AppleScript a diffrents types de rfrence qui vous permettent de spcifier des objets de plusieurs faons. Les objets peuvent contenir dautres objets, appels lments. Dans lexemple prcdent, la fentre en avant-plan est un lment de lobjet application Finder. De mme, dans le prochain exemple, un lment fichier est contenu dans un lment dossier, lequel est contenu dans un disque.
file 1 of folder 1 of startup disk

Chaque objet appartient une classe dobjet, laquelle est simplement une tiquette pour des objets ayant des caractristiques identiques. Parmi les caractristiques, qui sont les mmes pour les objets dune classe, se trouvent les commandes qui peuvent agir sur les objets et les lments quils peuvent contenir.

Les dictionnaires
Pour examiner une dfinition de classe dobjet, de commande, ou certains autres termes supports par une application, vous pouvez ouvrir le dictionnaire de lapplication avec lditeur de scripts. Pour utiliser, dans un script, les termes du dictionnaire dune application, vous devez la nommer. Vous pouvez le faire avec une instruction Tell qui indique le nom de lapplication en question :
tell application "Finder" clean up the front window end tell

Quand il rencontre une instruction Tell application, AppleScript lit les termes du dictionnaire de lapplication spcifie et les utilise pour interprter les instructions de linstruction Tell. Par exemple, AppleScript utilise les termes du dictionnaire du Finder pour interprter la commande Clean Up dans

T1 - 11

Gnralits

Chapitre 1

Tome 1

lexemple prcdent. Quand vous utilisez une instruction Tell ou spcifiez un nom dapplication dans un bloc Tell, lextension AppleScript obtient la ressource dictionnaire de lapplication et lit ses commandes, objets et autres termes. Chaque application pilotable a une ressource dictionnaire (de type aete) qui dfinit les commandes, objets et autres termes que vous pouvez utiliser dans vos scripts pour contrler lapplication. En plus des termes dfinis dans les dictionnaires des applications, AppleScript comporte ses propres termes standards. A la diffrence des termes contenus dans les dictionnaires des applications, les termes standards AppleScript sont toujours disponibles. Vous pouvez utiliser ces termes (comme If, Tell, etc...) nimporte o dans un script. Les termes contenus dans les dictionnaires sont appels des mots rservs. Quand vous dfinissez des mots nouveaux pour votre script comme des identificateurs pour les variables vous ne pouvez pas utiliser les mots rservs.

Les valeurs et les constantes


En plus de manipuler les objets dautres applications, AppleScript peut stocker et manipuler ses propres donnes, appeles valeurs. Une valeur est une simple donne structure qui peut tre reprsente, stocke et manipule dans AppleScript. Une valeur peut tre stocke soit dans une proprit, soit dans une variable. AppleScript reconnait plusieurs types de valeurs, comme les chanes de caractres, les nombres entiers, les listes et les dates. Les valeurs sont fondamentalement diffrentes des objets dapplication, lesquels peuvent tre manipuls dans AppleScript, mais sont contenus dans les applications ou leurs documents. Les valeurs peuvent tre cres dans les scripts ou retournes comme rsultats des commandes envoyes aux applications. Les valeurs sont un moyen important pour changer des donnes dans AppleScript. Quand vous demandez des informations ou proprits sur un objet dapplication, elles sont en gnral retournes sous forme de valeurs. Un nombre dfini de types de valeurs spcifiques sont reconnus par

Gnralits

T1 - 12

Chapitre 1

Tome 1

AppleScript. Vous ne pouvez pas dfinir un ou des types de valeurs supplmentaires, ni modifier la manire de reprsenter les valeurs. Les diffrents types de valeurs AppleScript sont appels classes de valeur. Une constante est un mot rserv avec une valeur prdfinie. AppleScript fournit des constantes pour aider vos scripts excuter certaines tches, comme excuter des comparaisons et des oprations arithmtiques.

Les expressions
Une expression est une srie de termes AppleScript qui correspond une valeur. Les expressions sont utilises dans les scripts pour identifier ou donner des valeurs. Quand vous excutez un script, AppleScript convertit ses expressions en valeurs. Ce procd est appel valuation. Les oprations et les variables sont deux types courants dexpressions. Une opration est une expression qui donne une nouvelle valeur partir dune ou deux autres valeurs. Une variable est un contenant nominatif dans lequel une valeur est stocke. Vous trouverez ci-dessous des exemples doprations AppleScript et leurs valeurs respectives. La valeur de chaque opration est indique aprs les caractres de commentaires (--).
3 + 4 (12 > 4) (12 > 4) and (12 = 4) --valeur : 7 --valeur : true --valeur : false

Chaque opration contient un oprateur. Le signe plus (+) dans la premire expression, ainsi que le symbole suprieur (>), le symbole gal (=) et le mot and dans la troisime expression sont des oprateurs. Les oprateurs transforment des valeurs ou des paires de valeurs en dautres valeurs. Les oprateurs qui agissent sur deux valeur sont appels des oprateurs binaires. Les oprateurs qui agissent sur une seule valeur sont appels des oprateurs unitaires.Vous pouvez utiliser les oprations lintrieur des instructions Applescript, comme :
tell app "Finder" open folder (3 + 2) of startup disk end tell

T1 - 13

Gnralits

Chapitre 1

Tome 1

Quand vous excutez ce script, AppleScript value lexpression (3 + 2) et utilise le rsultat pour indiquer au Finder quel dossier doit tre ouvert. Quand AppleScript rencontre une variable dans un script, il value la variable en obtenant sa valeur. Pour crer une variable, assignez lui simplement une valeur :
copy "Mark" to myName

La commande Copy prend la valeur la chane de caractres "Mark" et la met dans la variable myName. Vous pouvez accomplir la mme chose avec la commande Set :
set myName to "Mark"

Les instructions qui assignent des valeurs aux variables sont appeles des instructions dassignation. Vous pouvez obtenir la valeur d'une variable avec la commande Get.
set myName to "Mark" get myName --rsultat : "Mark"

Vous pouvez modifier la valeur dune variable en lui assignant une nouvelle valeur. Une variable peut contenir seulement une valeur la fois. Quand vous assignez une nouvelle valeur une variable existante, vous crasez lancienne valeur contenue dans cette variable.
set myName to "Mark" set myName to "Robin" get myName --rsultat : "Robin"

Les complments de pilotage


Vous avez aussi la possibilit dajouter des commandes et des coercitions supplmentaires au langage AppleScript par lintermdiaire des complments de pilotage. Les complments de pilotage sont des fichiers qui fournissent des commandes ou des coercitions supplmentaires que vous pouvez utiliser dans les scripts. Un complment de pilotage doit tre mis dans le dossier Complments de pilotage du dossier systme pour quAppleScript

Gnralits

T1 - 14

Chapitre 1

Tome 1

reconnaisse les commandes supplmentaires quil fournit. Un simple complment de pilotage peut contenir de multiples commandes. Le complment standard distribu avec AppleScript, comporte, par exemple, des commandes pour utiliser le presse-papier, obtenir le chemin dun fichier et rsumer des textes. A la diffrence des autres commandes utilises dans AppleScript, les complments de pilotage travaillent de la mme faon quelle que soit la cible que vous indiquiez. Par exemple, la commande Beep, qui fait partie des complments standards, dclenche une alerte sonore quelle que soit lapplication qui vous avez envoy cette commande. Sur le site web <htpp://www.osaxen.com>, vous trouverez des centaines de complments de pilotage librement tlchargeables. La plupart sont en freeware.

Les coercitions
Une coercition est un programme qui contraint une valeur dune certaine classe dans une autre classe, comme un nombre entier convertit en nombre rel. Beaucoup de coercitions standards sont incorpores AppleScript.

Les caractres spciaux


Les paragraphes suivants traiteront des rgles de syntaxe lors de lcriture des scripts. Une instruction simple doit normalement tre crite sur une seule ligne. Si une instruction est trop longue pour tenir sur une seule ligne, vous pouvez la prolonger en insrant un caractre de continuation () la fin de la premire ligne, et continuer l'instruction sur la ligne suivante. Vous pouvez taper ce caractre dans la plupart des traitements de texte en appuyant simultanment sur les touches Option + L. Dans lditeur de scripts, vous devez appuyer simultanment sur les touches Option + Entre, lequel insert le caractre de continuation et dplace le point dinsertion sur la ligne suivante. Plusieurs lignes spares par le caractre de continuation seront considres comme une seule ligne lors de lexcution du script.

T1 - 15

Gnralits

Chapitre 1

Tome 1

L'instruction suivante :
open the second file of the first folder of the startup disk

peut tre crite sur deux lignes :


open the second file of the first folder of the startup disk

Le caractre de continuation nest pas une obligation de syntaxe. Cest plutt un mcanisme permettant dinclure plusieurs lignes dans une seule instruction. Le seul endroit o un caractre de continuation ne fonctionne pas de cette manire est lintrieur dune chane de caractres (string). Il est alors simplement considr comme du texte.
-- le "" est considr comme du texte "caractre de continuation" -- rsultat : "caractre de continuation"

Les deux tirets (--) indique que la premire ligne est un commentaire. Un commentaire est un texte qui est ignor par AppleScript quand un script est excut. Pour utiliser une trs longue chane de caractres, vous pouvez soit tout faire tenir sur une seule ligne en ne mettant un retour chariot qu la fin, soit vous pouvez rpartir sur plusieurs lignes la chane de caractres en utilisant loprateur de concatnation (&) pour les joindre, comme dans lexemple suivant :
open the second file of the first folder of disk "Disque " & "Dur"

Gnralits

T1 - 16

Chapitre 1

Tome 1

Les commentaires
Vous ajouterez des commentaires un script pour expliquer ce quil fait. Un commentaire est un texte qui reste dans un script aprs la compilation mais qui est ignor par AppleScript lors de lexcution. Il y a deux sortes de commentaires, le commentaire de fin de ligne et les blocs de commentaires : Un bloc de commentaires commence avec les caractres (* et se termine avec les caractres *). Un bloc de commentaires doit tre plac entre des instructions. Il ne peut pas tre insr dans une instruction simple. Un commentaire de fin de ligne commence avec deux tirets (--), la fin du commentaire ne requiert aucun caractre particulier. Vous pouvez imbriquer des commentaires, cest dire que les commentaires peuvent contenir dautres commentaires. Voici quelques exemples :
--un commentaire de fin de ligne

(*utiliser les blocs de commentaires pour les commentaires qui tiennent sur plusieurs lignes*)

copy result to Res --stocker le rsultat dans la variable Res

(*la routine suivante, findString, cherche une chane de caractres dans une liste de documents AppleWorks*)

(*voici un exemple de --commentaire imbriqu (*un autre commentaire lintrieur dun commentaire*) *)

Lexemple suivant de bloc de commentaires provoque une erreur car le commentaire est insr dans une instruction.
--le bloc de commentaires suivant est invalide tell application "Finder" get (* name of *) file 1 of startup disk
T1 - 17 Gnralits

Chapitre 1

Tome 1

end tell

Comme les commentaires ne sont pas excuts, vous pouvez dsactiver une instruction simple ou compose en la transformant en commentaires. Vous pouvez utiliser ce truc, appel hors excution, pour isoler les problmes quand vous dboguez des scripts ou pour bloquer lexcution dune partie dun script qui nest pas encore acheve.
(* on Verification() --en construction end *)

Si par la suite, vous supprimez les caractres (* et *), la routine est alors de nouveau oprationnelle.

Les identificateurs
Un identificateur est une srie de caractres qui dfinit une valeur ou un autre lment du langage. Par exemple, les noms des variables sont des identificateurs. Lexemple suivant rgle la valeur de la variable myName sur "Fred".
set myName to "Fred"

Les identificateurs sont aussi utiliss comme tiquettes pour les proprits et les structures. Un identificateur doit commencer avec une lettre et peut contenir des majuscules, des minuscules, des chiffres (0-9) et le caractre de soulignement (_). Quelques exemples didentificateurs valides :
Yes Agent99 Just_Do_It

Ceux qui suivent sont invalides :


C-Back&Forth 999

Gnralits

T1 - 18

Chapitre 1

Tome 1

Why^Not

Les identificateurs pour lesquels le premier et le dernier caractre sont des barres verticales (|) peuvent contenir nimporte quels caractres. Les exemples suivants sont valides :
|Back and Forth| |Right*Now!|

Les identificateurs pour lesquels le premier et le dernier caractre sont des barres verticales peuvent contenir des barres verticales supplmentaires si elles sont prcdes par le caractre anti-slash (\), comme ceci |Pile\|ou\|Face|. Un caractre anti-slash dans un identificateur doit tre prcd par un caractre anti-slash, comme dans cet identificateur |/\\Haut\\/Bas|. Les identificateurs ne peuvent pas avoir la mme orthographe quun mot rserv cest dire , termes du langage AppleScript ou termes du dictionnaire de lapplication nomme dans linstruction Tell. Par exemple, vous ne pouvez pas crer une variable dont lidentificateur est file lintrieur dune instruction Tell Finder, car file est une classe dobjet dans le dictionnaire du Finder. Dans ce cas, AppleScript retourne une erreur de syntaxe. AppleScript nest pas sensible la casse ; quand il interprte des instructions, il ne fait pas de distinction entre les majuscules et les minuscules. Ceci est vrai pour lensemble des lments du langage. La seule exception cette rgle sont les comparaisons de chanes de caractres. Normalement, AppleScript ne distingue pas les majuscules des minuscules lors dune comparaison dune chane de caractres, mais si vous souhaitez quAppleScript le fasse, vous pouvez utiliser une instruction spciale appele instruction Considering. La plupart des exemples de ce guide sont en minuscules. Parfois, les mots sont mis en lettres capitales pour amliorer la lisibilit. Par exemple, le N dans monNom est en majuscules simplement pour quil soit plus facile de voir que deux mots ont t combins pour former le nom de la variable.
set monNom to "Loulou"

Aprs avoir cr la variable monNom, vous pouvez vous y rfrer, par exemple,

T1 - 19

Gnralits

Chapitre 1

Tome 1

par ces noms :


MONNOM monnom MonNom mOnnOm

Toutefois, lorsque vous compilerez, pour la premire fois, un script qui met en majuscules de diffrentes faons un nom de variable, AppleScript nutilisera que la premire orthographe quil rencontrera pour crire le nom de la variable tout au long du script. Les orthographes suivantes du nom de la variable sont ignores et transformes pour tre identiques la premire orthographe rencontre.

Les abrviations
Le langage AppleScript est conu pour tre intuitif et facile comprendre. A cette fin, il utilise des mots familiers pour reprsenter les objets et les commandes, et utilise des instructions dont la structure est similaire des phrases en anglais. Pour la mme raison, il utilise des mots entiers au lieu dabrviations. Dans trs peu de cas, toutefois, AppleScript accepte des abrviations pour certains mots longs et frquemment utiliss. Un exemple important est labrviation app, que vous pouvez utiliser pour vous rfrer aux objets de classe dapplication. Cest particulirement utile dans les instructions Tell. Par exemple, les deux instructions Tell suivantes sont quivalentes :
tell application "AppleWorks" print the front window end tell tell app "AppleWorks" print the front window end tell

Gnralits

T1 - 20

Chapitre 1

Tome 1

Linstruction Log
La fentre Session dtat vous aide dcouvrir et corriger les erreurs en montrant les rsultats des actions du script. La fentre Session dtat souvre par le menu dition ou en tapant sur les touches Commande + E dans lditeur de scripts. La fentre contient deux cases cocher. Si vous cochez la case Afficher les vnements, tous les Apple Events (vnements Apple) sont consigns dans la fentre. Si vous cochez aussi la case Afficher les rsultats dvnements, la valeur retourne par un Apple Event est aussi affiche. (Les rsultats ne seront pas retourns tant que les deux cases ne seront pas coches.) Note des traducteurs francophones noter, qu partir du systme Mac OS 9.0, la fentre Session dtat a t renomme Historique des vnements, mais son mode de fonctionnement est rest identique. q En complment de louverture de la fentre Session dtat, vous pouvez insrer des instructions log aux endroits stratgiques de votre script, afin de visualiser les rsultats des actions effectues. Une instruction Log reporte la valeur dune ou plusieurs variables dans la fentre Session dtat, que les cases soient coches ou non. Supposons que vous excutiez le script suivant :
tell application "Finder" set myFolder to first folder of startup disk log (myFolder) --rsultat :(*Dossier photos*) end tell

Avec aucune case de cocher, la fentre Session dtat contient juste le rsultat de l'instruction log (myFolder) :
(*Dossier photos*)

Avec juste la case "afficher les vnements" de cocher, la fentre Session dtat contient :
tell application "Finder" get Folder 1 of startup disk (*Dossier photos*) end tell

T1 - 21

Gnralits

Chapitre 1

Tome 1

Finalement, avec les deux cases de cocher, la fentre Session dtat affiche :
tell application "Finder" get folder 1 of startup disk -->folder "Claris Emailer Folder" of startup disk (*Dossier photos*) end tell

Dans ce cas, l'instruction log nest pas rellement utile puisquelle retourne la mme information quavec la case Afficher les rsultats dvnements coche. Vous pouvez utiliser les commandes Start Log et Stop Log pour exercer un contrle plus fin. Quand la case Afficher les vnements est coche, chaque fois quun vnement est vrifi, il saffiche dans la fentre Session dtat. Une commande Stop Log arrte laffichage des vnements. Une commande Start Log ractive laffichage des vnements (elle dsactive la commande Stop Log). A noter que la commande Stop Log na aucune influence sur la commande Log, les valeurs des variables sont reportes dans la fentre Session dtat mme aprs une instruction Stop Log. Si la case Afficher les vnements est coche, dans le script suivant, le premier vnement ne saffichera pas dans la fentre Session dtat, seul le deuxime vnement sera affich. Si vous avez coch la case Afficher les rsultats dvnements, vous aurez en plus les rsultats. Par contre stop log et start log ne modifient pas les actions du script.
tell application "Finder" stop log --les Apple events ne safficheront pas set nameOne to name of first folder of startup disk start log --les Apple events safficheront set nameTwo to name of second folder of startup disk end tell

Les instructions Log peuvent tre utiles pour tester une instruction Repeat ou une autre structure de contrle. Dans le script suivant, l'instruction log currentWord fait afficher dans la fentre session dtat la valeur de la variable currentWord chaque excution de linstruction Repeat. Une fois que la boucle fonctionne correctement, vous pouvez transformer l'instruction Log en commentaire ou la supprimer.
set wordList to words in "Where is the hammer ?" --rsultat : {"Where","is","the","hammer"} repeat with currentWord in wordList log currentWord

Gnralits

T1 - 22

Chapitre 1

Tome 1

if currentWord as text is equal to "hammer" then display dialog "I found the hammer!" end if end repeat

Pour plus dinformations sur lutilisation de lapplication diteur de scripts, voir laide AppleScript du centre daide Mac OS.

T1 - 23

Gnralits

Chapitre 2

Tome 1

Les valeurs

Une valeur est une simple donne structure qui peut tre reprsente, stocke et manipule dans les scripts. AppleScript reconnait plusieurs types de valeurs, comme les chanes de caractres, les nombres entiers, les listes et les dates. Les valeurs sont fondamentalement diffrentes des objets dapplication, lesquels peuvent tre manipuls dans AppleScript, mais sont contenus dans les applications ou leurs documents. Chaque valeur appartient une classe de valeur, laquelle est une catgorie de valeurs dans laquelle les valeurs sont reprsentes de la mme manire et rpondent aux mmes oprateurs. Pour apprendre comment reprsenter une valeur particulire, ou quels oprateurs elle rpond, vrifier la classe de valeur dfinie pour cette valeur. AppleScript peut contraindre une valeur appartenant une classe de valeur prcise changer de classe de valeur, cela sappelle la coercition. Les coercitions possibles dpendent du type de classe de valeur au dpart.

Utilisation des classes de valeur


Les classes de valeur usuelles sont les classes de valeur les plus couramment utilises dans AppleScript. Les dfinitions de classes de valeur contiennent des informations sur les valeurs qui appartiennent une classe particulire. Toutes les classes de valeur rentrent dans une de ces deux catgories : les valeurs simples, comme la classe Integer, lesquelles ne contiennent quune seule valeur, et les valeurs composes, comme la classe List, qui peuvent contenir plusieurs valeurs. Chaque classe de valeur dfinie dans ce chapitre est dtaille suivant une ou plusieurs des sections suivantes : Expressions littrales Proprits lments Oprateurs Commandes gres
Les valeurs T1 - 24

Chapitre 2

Tome 1

Formes de rfrence Coercitions supportes En plus, certaines classes de valeur concluent avec des notes donnant des informations supplmentaires. Les sections qui suivent expliquent les diffrentes sections dtaillant les dfinitions de classe de valeur par la suite.

Expressions littrales

La section Expressions littrales donnent des exemples pour reprsenter les valeurs dune classe particulire dans un script. Par exemple, dans AppleScript et dans dautres langages de programmation, lexpression littrale dune chane de caractres est une srie de caractres mis entre guillemets. Les guillemets ne font pas partie de la valeur de la chane de caractres mais servent indiquer o la chane commence et o elle finit. La valeur relle de la chane de caractres est une structure de donnes stocke dans AppleScript. Lexemple suivant, une classe de valeur List, montre une expression littrale pour une valeur de liste, laquelle est aussi un type de valeur compose :
{ "its", 2, true }

Comme avec les guillemets dans une expression littrale de chane de caractres, les accolades qui encadrent la liste et les virgules qui sparent ses lments ne font pas partie de la valeur relle de la liste ; elles sont une syntaxe qui indique le groupement et les lments de la liste.

Proprits

Une proprit de classe de valeur est une caractristique qui est identifie par une tiquette unique et qui a une seule valeur. La section Proprits dcrit la ou les proprits de la classe. Les valeurs simples ont seulement une proprit, appele Class, laquelle identifie la classe de la valeur. Les valeurs composes ont au minimum deux proprits : une proprit Class et au moins une proprit supplmentaire, comme Length or Contents. Par exemple, la classe de valeur Boolean est une classe simple avec juste une

T1 - 25

Les valeurs

Chapitre 2

Tome 1

proprit, la proprit Class, qui est en lecture seule (vous ne pouvez pas la rgler avec la commande Set).
class of boolean --rsultat : class

Par contre, la classe de valeur Date, qui est une classe de valeur compose, a des proprits supplmentaires. Lexemple suivant utilise la commande Current Date du complment de pilotage standard pour obtenir la date courante. Puis il obtient la valeur de diverses proprits de la classe Date.
set theDate to current date --rsultat : date "mercredi 19 dcembre 2001 23:53:45" weekday of theDate --rsultat : Wednesday day of theDate --rsultat : 19 (le jour du mois)

Lexemple suivant prcise la proprit Length dune simple liste.


length of { "Cette","liste","a", 5 , "lments"} --rsultat : 5

Vous pouvez optionnellement utiliser la commande Get pour obtenir la valeur dune proprit spcifie. Par exemple :
get class of boolean -- rsultat : class

Dans de nombreux cas, vous pouvez aussi utiliser la commande Set pour rgler les proprits supplmentaires listes dans les dfinitions des classes de valeur compose. Si une proprit ne peut pas tre rgle avec la commande Set, sa dfinition indique quelle est en lecture seule ([r/o]).

lments

Les lments de valeurs sont des valeurs contenues lintrieur dautres valeurs. Les valeurs composes ont des lments ; les valeurs simples non. Par exemple, la dfinition de la classe de valeur List contient un lment, appel Item. Vous utiliserez les rfrences pour se rfrer aux lments des valeurs composes. Par exemple, la rfrence suivante spcifie le troisime lment dune liste :
item 3 of { "To", "be", "great", "is", "to","be", "understood"} -- rsultat : "great"

Les valeurs

T1 - 26

Chapitre 2

Tome 1

La section Formes de rfrence liste les formes de rfrence que vous pouvez utiliser pour spcifier les lments des valeurs composes.

Oprateurs

Vous pouvez utiliser des oprateurs, comme le signe plus (+) ou le caractre de concatnation (&), pour manipuler des valeurs. Les valeurs qui appartiennent la mme classe peuvent tre manipules par les mmes oprateurs. La section Oprateurs liste les oprateurs qui peuvent tre utiliss avec les valeurs dune classe particulire.

Commandes gres

Les commandes sont des mots ou phrases que vous utiliserez dans les instructions AppleScript pour demander des actions ou des rsultats. Les valeurs simples ne peuvent pas rpondre aux commandes, les valeurs composes, oui. Par exemple, les listes peuvent rpondre la commande Count, comme dans lexemple suivant :
count { "Cette","liste","a", 5 , "lments"} --rsultat : 5

Chaque dfintion de classes de valeur compose comporte une section Commandes gres qui liste les commandes auxquelles les valeurs de cette classe peuvent rpondre.

Formes de rfrence

Une rfrence est un nom compos, semblable un nom de chemin ou une adresse, qui indique de faon prcise un objet ou une valeur. Vous pouvez utiliser les rfrences pour spcifier, soit des valeurs lintrieur de valeurs composes, soit des proprits de valeurs simples. La section Formes de rfrences est mentionne seulement dans les dfinitions de classes de valeur compose. Elle liste les formes de rfrence que vous pouvez utiliser pour spcifier les lments dune valeur compose.

Coercitions supportes

AppleScript peut contraindre une valeur appartenant une classe de valeur

T1 - 27

Les valeurs

Chapitre 2

Tome 1

prcise changer de classe de valeur, cela sappelle la coercition. La section Coercitions supportes dcrit les classes pour lesquelles les valeurs de ces classes peuvent tre contraintes. Par exemple, la section Coercitions supportes pour la classe List, indique que nimporte quelle valeur peut tre ajoute une liste, ou contrainte en liste lment unique, comme dans lexemple suivant :
item 2 of {"dbut","fin"} as list -- rsultat : {"fin"}

Prsentation des classes de valeur dfinies dans le guide

Vous trouverez ci-dessous un tableau qui rsume les classes de valeur usuelles et indique le numro de page o elles sont dcrites en dtails. Les identificateurs des classes de valeur usuelles dAppleScript Identificateur Description

Boolean (T1 - p.31) Une valeur logique Class (T1 - p.32) Un identificateur de classe

Constant (T1 - p.33) Un mot rserv dfini par une application ou AppleScript Data (T1 - p.35) Donnes brutes qui ne peuvent pas tre reprsentes dans AppleScript, mais peuvent tre stockes dans une variable Une chane de caractres qui indique un jour de la semaine, du mois, un mois, une anne et lheure Une collection de donnes qui indique le nom et lemplacement sur un disque dun fichier qui peut ne pas encore exister Un nombre positif ou ngatif sans fraction dcimale

Date (T1 - p.36)

File specification (T1 - p.71)

Integer (T1 - p.41)

Les valeurs

T1 - 28

Chapitre 2

Tome 1

Les identificateurs des classes de valeur usuelles dAppleScript (suite) Identificateur International Text (T1 - p.68) List (T1 - p.43) Number (T1 - p.47) Real (T1 - p.48) Description Caractres de texte au format International Text ; voir Autres classes de valeur Une collection ordonne de valeurs Synonyme pour la classe Integer ou Real Un nombre positif ou ngatif qui peut avoir une fraction dcimale

Record (T1 - p.50) Une collection de proprits Reference (T1 - p.53) RGB Color (T1 - p.72) Une rfrence un objet

Une collection de trois valeurs entires qui spcifient le rouge, le vert et le bleu, les trois composants dune couleur

String (T1 - p.57) Une srie ordonne de caractres 1-octet Styled Clipboard Text (T1 - p.73) Donnes spcifiques de texte, rcupres partir du presse-papier, qui comportent des informations de styles et de polices Synonyme dune chane de caractres spcifique qui comporte des informations de styles et de polices Synonyme de la classe String Caractres de texte au format Unicode Text (2-octet) ; voir Autres classes de valeur

Styled Text (T1 - p.62) Text (T1 - p.64) Unicode Text (T1 - p.68)

T1 - 29

Les valeurs

Chapitre 2

Tome 1

Les identificateurs des classes de valeur usuelles dAppleScript (suite) Identificateur Unit Type Value Classes (T1 - p.64) Description Classes de valeur permettant de travailler avec les units de mesure

Trois identificateurs dans ce tableau sont des synonymes pour dautres classes de valeur. : Number est un synonyme pour la classe Integer ou Real Text est un synonyme pour la classe String Styled Text est un synonyme pour une chane de caractres qui contient des informations de styles et de polices Vous pouvez contraindre des valeurs utilisant ces synonymes, changer de classe, mais la classe de la valeur gnre est toujours la vraie classe de valeur. Par exemple, vous pouvez utiliser lidentificateur Text pour contraindre une date en chane de caractres :
set x to date "19 mai 2001" as text class of x -- rsultat : string

Bien que les dfinitions pour les classes de valeurs synonymes soient fournies, elles ne conviennent pas pour sparer des classes de valeur.

Les valeurs

T1 - 30

Chapitre 2

Tome 1

Boolean
Une valeur de la classe Boolean est une valeur logique. Les valeurs boolennes les plus courantes sont le rsultat de comparaisons, comme 4 > 3 et LongueurMot = 5. Les deux valeurs boolennes possibles sont true et false.

Expressions littrales true false

Proprits Class

Lidentificateur de classe de lobjet. Cette proprit est en lecture seule, et sa valeur est toujours boolean.

class of true -- rsultat : boolean

lments

Aucun

Oprateurs

Les oprateurs qui prennent les valeurs boolennes comme oprandes sont And, Or, Not, &, = et . Loprateur = retourne true si toutes les oprandes sont values la mme valeur boolenne (soit true, soit false) ; loprateur retourne true si les oprandes sont values des valeurs boolennes diffrentes. Les oprateurs And et Or prennent des expressions boolennes comme oprandes et retournent des valeurs boolennes. Une opration And, comme (2 > 1) and (4 > 3), a comme valeur true si toutes ses oprandes ont la valeur true, et false sinon. Une opration Or, comme (theString = "Yes") or (today = "Tuesday"), a comme valeur true si une de ses oprandes a la valeur true.

T1 - 31

Les valeurs

Chapitre 2

Tome 1

Loprateur Not change une valeur true en false ou une valeur false en true.

Coercitions supportes

AppleScript supporte la coercition dune valeur boolenne en une liste lment unique ou en chane de caractres.
true -- rsultat : true class of true -- rsultat : boolean true as list -- rsultat : {true} class of (true as list) -- rsultat : list true as string -- rsultat : "true" class of (true as string) -- rsultat : string

Class
Une valeur de la classe Class est un identificateur de classe. Un identificateur de classe est un mot rserv qui indique la classe laquelle un objet ou une valeur appartient. La proprit Class dun objet contient un identificateur de classe de valeur.

Expressions littrales string integer real boolean class

Proprits Class

Lidentificateur de classe de lobjet. Cette proprit est en lecture seule, et sa valeur est toujours class.

class of string -- rsultat : class

Les valeurs

T1 - 32

Chapitre 2

Tome 1

lments

Aucun

Oprateurs

Les oprateurs qui prennent les valeurs didentificateur de classe comme oprandes sont &, =, et As. Loprateur As prend une valeur appartenant une classe de valeur spcifique et la contraint devenir une valeur dune classe spcifie par un identificateur de classe. Par exemple, linstruction suivante contraint une chane de caractres en nombre rel, 1.5 :
"1.5" as real --rsultat : 1.5

Coercitions supportes

AppleScript supporte la coercition dun identificateur de classe en une liste lment unique ou en chane de caractres.
boolean -- rsultat : boolean class of boolean -- rsultat : class boolean as list -- rsultat : {boolean} class of (boolean as list) -- rsultat : list boolean as string -- rsultat : "boolean" class of (boolean as string) -- rsultat : string

Constant
Une valeur de la classe Constant est un mot rserv dfini par AppleScript ou une application dans son dictionnaire. Les applications dfinissent des jeux de valeurs qui peuvent tre utilises dans les paramtres dune commande particulire. Par exemple, la valeur du paramtre saving de la commande Close doit tre une de ces trois constantes : yes, no ou ask ; saving no signifie ne pas sauvegarder les modifications, saving yes signifie sauvegarder sans demander laccord et saving ask signifie demander lautorisation avant de sauvegarder.

T1 - 33

Les valeurs

Chapitre 2

Tome 1

Pour plus dinformations sur lutilisation des constantes dans AppleScript, voir le chapitre Les constantes (T1 - p.78)

Expressions littrales

Quelques exemples :
yes no ask plain bold italic

Proprits Class

Lidentificateur de classe de lobjet. Cette proprit est en lecture seule, et sa valeur est toujours constant.

class of ask -- rsultat : constant

lments

Aucun

Oprateurs

Les oprateurs qui prennent les valeurs de la classe Constant comme oprandes sont &, =, et As.

Coercitions supportes

AppleScript supporte la coercition dune valeur de la classe Constant en liste lment unique ou en chane de caractres. La coercition dune valeur de la classe Constant en chane de caractres nest possible que depuis la version dAppleScript 1.3.7, soit depuis Mac OS 8.5.
ask -- rsultat : ask class of ask -- rsultat : constant ask as list -- rsultat : {ask}

Les valeurs

T1 - 34

Chapitre 2

Tome 1

class of (ask as list) -- rsultat : list ask as string -- rsultat : "ask" class of (ask as string) -- rsultat : string

Notes

Les constantes ne sont pas des chanes de caractres, et elles ne doivent pas tre encadres par des guillemets. Vous ne pouvez pas dfinir vos propres constantes ; les constantes peuvent seulement tre dfinies par les applications et AppleScript.

Data
Une valeur de la classe de valeur Data est une donne retourne par une application (en rponse une commande) qui nappartient aucune des autres classes dfinies dans ce chapitre. Une valeur de la classe Data est une donne brute (raw data) qui peut seulement tre stocke dans une variable. Pour plus dinformations sur les raw data, voir Les donnes brutes (raw data) dans les paramtres (T2 -p.19).

Proprits Class

Lidentificateur de classe de lobjet. Cette proprit est en lecture seule, et sa valeur varie en fonction de lapplication.

lments

Aucun

Oprateurs

Les oprateurs qui peuvent prendre les valeurs de la classe Data comme oprandes sont = et .

T1 - 35

Les valeurs

Chapitre 2

Tome 1

Coercitions supportes

AppleScript supporte la coercition dune donne de la classe de valeur Data en une liste lment unique.

Date
Une valeur complte de la classe Date indique le jour de la semaine, la date (jour du mois, mois et lanne) et lheure ; si vous fournissez une date quavec seulement quelques unes de ces informations, AppleScript complte les informations manquantes par des valeurs par dfault.
date "26/11/2001" --rsultat : date "lundi 26 novembre 2001 00:00:00"

Vous pouvez obtenir et rgler les proprits dune valeur Date qui correspondent aux diffrentes parties des informations de date et dheure. Vous pouvez spcifier des valeurs de Date dans diffrents formats. Le format commence toujours avec le mot date suivi par une chane de caractres (entre guillemets) contenant les informations de date et dheure. Vous pouvez orthographier le jour de la semaine, le mois ou la date. Vous pouvez aussi utiliser les trois lettres standards dabrviation pour le jour et le mois. Quand vous compilez un script, AppleScript affiche les valeurs de date et dheure en accord avec le format spcifi dans le tableau de bord Date et Heure. Pour plus dinformations sur les oprations arithmtiques possibles sur les dates et les heures, ou pour une description de la gestion des dates de fin de sicle par AppleScript, comme lanne 2000, voir La gestion des dates et des heures (T4 - p.47).

Expressions littrales

Les expressions suivantes montrent diffrentes options pour spcifier une date :
date "25/12/2001, 00:00:00"

Les valeurs

T1 - 36

Chapitre 2

Tome 1

date "25/12/2001, 12:00" date "25/12/01" date "17:15" date "mardi 25 dcembre 2001 23:59"

Proprits Class

Lidentificateur de classe de lobjet. Cette proprit est en lecture seule, et sa valeur est toujours date. Un nombre entier qui spcifie le jour du mois dune valeur date. Une des constantes : Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday ou Mon, Tue, Wed, Thu, Fri, Sat, Sun. Une des constantes : January, February, March, April, May, June, July, August, September, October, November, December ou Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec. Un nombre entier spcifiant lanne ; par exemple, 1998. Un entier qui spcifie le nombre de secondes coules entre minuit et la valeur de la date ; par exemple, 2700 est quivalent 0:45 (2700 = 45 * 60) Une chane de caractres qui reprsente la portion date de la valeur de date ; par exemple, "Samedi 27 fvrier
1999"

Day

Weekday

Month

Year

Time

Date string

Time string

Une chane de caractres qui reprsente la portion heure de la valeur de date ; par exemple, "5:14:42".

T1 - 37

Les valeurs

Chapitre 2

Tome 1

lments

Aucun

Oprateurs

Les oprateurs qui prennent les valeurs de date comme oprandes sont &, +, , =, , >, , <, , Comes Before, Comes After et As. Dans les expressions contenant >, , <, , Comes Before ou Comes After, une heure ultrieure est plus grande quune heure antrieure. Les oprations suivantes sur des valeurs de date avec les oprateurs (+ )et (-) sont supportes : date - date
-- rsultat : DiffrenceDeTemps

date + DiffrenceDeTemps -- rsultat : date date - DiffrenceDeTemps -- rsultat : date o date est une valeur de date et DiffrenceDeTemps est une valeur entire indiquant une diffrence de temps en secondes. Pour simplifier la notation des diffrences de temps, vous pouvez aussi utiliser une ou plusieurs de ces constantes :
minutes hours

60 60 * minutes 24 * hours 7 * days

days weeks

Voici un exemple :
(date "lundi 26 novembre 2001 00:00:00") + 5 * days + 3 * hours + 2 * minutes -- rsultat : date "samedi 01 dcembre 2001 03:02:00"

Pour plus dinformations sur la faon dont les oprateurs AppleScript traitent les valeurs de date, voir La gestion des dates et des heures (T4 p.47).
Les valeurs T1 - 38

Chapitre 2

Tome 1

Formes de rfrence

Vous pouvez vous rfrer aux proprits dune valeur de date en utilisant les formes de rfrences des proprits. Quant vous compilez un script, AppleScript affiche les valeurs de date et dheure en accord avec le format spcifi dans le tableau de bord Date et Heure. Les instructions suivantes accdent diverses proprits de date :
set theDate to current date -- utilisation dune commande du complment standard -- rsultat : date "lundi 26 novembre 2001 15:50:16" weekday of theDate -- rsultat : Monday day of theDate -- rsultat : 26 month of theDate -- rsultat : November year of theDate -- rsultat : 2001 time of theDate -- rsultat : 57016 (secondes depuis minuit) time string of theDate -- rsultat : "15:50:16" date string of theDate -- rsultat : "lundi 26 novembre 2001"

Si vous voulez spcifier une heure relative une date, vous pouvez aussi le faire en utilisant of, relative to, ou in, comme dans les exemples suivants :
date "5:20" of date "26/11/2001" -- rsultat : date "lundi 26 novembre 2001 05:20:00" date "26 nov 2001" relative to date "5:00" -- rsultat : date "lundi 26 novembre 2001 05:00:00" date "16:30" in date "26/11/2001" -- rsultat : date "lundi 26 novembre 2001 16:30:00"

Si vous rglez la proprit Day dune date avec une valeur qui ne convient pas pour le mois en cours, la date court jusquau mois suivant :
set maDate to date "lundi 26 novembre 2001 00:00:00" set day of maDate to 38 maDate -- rsultat : date "samedi 08 dcembre 2001 00:00:00"

T1 - 39

Les valeurs

Chapitre 2

Tome 1

Coercitions supportes

AppleScript supporte la coercition dune valeur de date en une liste lment unique ou en chane de caractres.
maDate as list -- rsultat : {date "samedi 08 dcembre 2001 00:00:00"} maDate as string -- rsultat : "samedi 08 dcembre 2001 00:00:00"

Notes

Quand vous compilez un script, AppleScript affiche les valeurs de date dans un format similaire celui de lexemple suivant, quel que soit le format que vous utilisiez lorsque vous avez saisi la date. La version compile comprend le nom complet du jour de la semaine et le nom du mois et un zro devant les premiers jours, 1 9, de la date. Le format daffichage de lditeur de scripts est bas sur les rglages du tableau de bord Date et heure. Les notes et exemples suivants supposent que le tableau de bord Date et heure soit rgl sur 12 heures, non sur 24 heures.
date "lundi 26 novembre 2001 04:56:00 pm"

Si vous ne spcifiez pas une date complte, avec jour et heure, quand vous saisissez une valeur de date, AppleScript complte les informations au besoin. Si vous ne spcifiez pas la date, AppleScript utilise la date de compilation du script. Si vous ne spcifiez pas lheure, 12:00 AM (minuit, 00:00:00) est pris par dfaut. Si vous omettez AM ou PM, AM est rajout par dfaut ; toutefois, si vous spcifiez 12:00 sans AM ou PM, 12:00 PM (midi) est pris par dfaut. Si vous spcifiez une heure en utilisant le format 24 heures, AppleScript la convertit en une heure quivalente en utilisant AM ou PM (quand le format spcifi dans le tableau de bord Date et heure est 12 heures); par exemple, 17:00 est quivalent 5:00 PM. Lexemple suivant montre comment AppleScript complte par dfaut une proprit dheure quand la date spcifie ne comporte pas lheure :
time string of date "26 novembre 2001" -- rsultat : "12:00:00 am"

Pour obtenir la date courante, utiliser la commande Current Date du complment standard :

Les valeurs

T1 - 40

Chapitre 2

Tome 1

set laDate to current date if (weekday of laDate) = Saturday then display dialog "je ne devrais pas travailler" & " aujourdhui !" end if

Integer
Une valeur de la classe Integer est un nombre positif ou ngatif sans fraction dcimale.

Expressions littrales

1 2 -1 1000

Proprits Class

Lidentificateur de classe de lobjet. Cette proprit est en lecture seule, et sa valeur est toujours Integer.

lments

Aucun

Oprateurs

Loprateur Div retourne toujours une valeur de type Integer comme son rsultat.
12 Div 11 -- rsultat : 1 class of result -- integer

Les oprateurs +, -, *, Mod et ^ retournent des valeurs de type Integer ou Real.


12 + 11 --rsultat : 23 class of result --integer

T1 - 41

Les valeurs

Chapitre 2

Tome 1

12^2 --rsultat : 144.0 class of result --real

Les oprateurs qui peuvent avoir des valeurs Integer comme oprandes sont +, -, *, (ou /), Div, Mod, ^, =, , >, , <, et .

Coercitions supportes

AppleScript supporte la coercition dune valeur Integer en une liste lment unique, en nombre rel ou en chane de caractres.
set x to 15 -- rsultat : 15 class of x -- rsultat : integer set x to 15 as real -- rsultat : 15.0 class of x -- rsultat : real set x to 15 as list -- rsultat : {15} class of x -- rsultat : list

Vous pouvez aussi contraindre une valeur Integer en utilisant le synonyme Number, mais la classe de la valeur gnre demeure inchange :
set x to 7 as number class of x -- rsultat : integer

Notes

La plus grande valeur qui peut tre exprime comme une valeur Integer dans AppleScript est 536870911, lequel est gal (2 29 - 1). Des valeurs Integer plus grandes (positives ou ngatives) sont converties en nombres de la classe Real (exprimes en notation exponentielle) lorsque les scripts sont compils. noter, toutefois, que cette limitation ne concerne que laffichage des nombres de la classe Integer dans lditeur de scripts. Si vous saisissez dans la fentre de lditeur de scripts, un nombre entier comportant au maximum 15 ou 16 chiffres (je ne connais pas la limite exacte), AppleScript le transformera lcran en notation exponentielle mais conservera sa valeur numrique exacte en mmoire. La transformation en notation exponentielle ne modifie la valeur exprime par ce chiffre.

Les valeurs

T1 - 42

Chapitre 2

Tome 1

List
Une valeur de la classe List est une collection ordonne de valeurs. Les valeurs contenues dans une liste sont appels des items. Chaque item peut appartenir nimporte quelle classe de valeur.

Expressions littrales

Une liste apparat dans un script comme une srie dexpressions contenues entre accolades et spares par des virgules. Par exemple, linstruction suivante dfinit une liste qui contient une chane de caractres, une valeur Integer et une valeur Boolean :
{"cest", 5, false}

Chaque lment de la liste peut tre nimporte quelle expression valide. La liste suivante a la mme valeur que la liste de lexemple prcdent, car chaque expression a la mme valeur que les expressions de lexemple prcdent :
{"c" & "est", 3 + 2, 4 > 5}

Une liste vide (empty list) est une liste contenant aucun item. Elle est reprsente par une paire daccolades vides :
{}

Proprits Class

Lidentificateur de classe de lobjet. Cette proprit est en lecture seule, et sa valeur est toujours List. Une valeur Integer contenant le nombre dlments de la liste. Cette proprit est en lecture seule. Une liste contenant tous les lments de la liste except le premier lment. Une liste contenant tous les lments de la liste, mais dans lordre inverse.

Length

Rest

Reverse

T1 - 43

Les valeurs

Chapitre 2

Tome 1

lments Item

Une valeur contenue dans la liste. Chaque valeur contenue dans une liste est un item. Vous pouvez vous rfrer ces valeurs par leur numro dlments. Par exemple, item 2 of {"soup", 2, "nuts"} est le nombre entier 2. Pour spcifier les lments dune liste, utiliser les formes de rfrence listes dans la section Formes de rfrence un peu plus loin.

Oprateurs

Les oprateurs qui peuvent avoir des valeurs de la classe List comme oprandes sont &, =, , Starts With, Ends With, Contains, Is contained by. Pour plus de dtails sur le traitement des listes par les oprateurs, voir Les Expressions (T4 - p.6).

Commandes gres

Vous pouvez compter les lments dans une liste avec la commande Count. Par exemple, la valeur de linstruction suivante est 6 :
count {"a", "b", "c", 1, 2, 3} -- rsultat : 6

Vous pouvez aussi compter les lments appartenant une classe spcifique dans une liste. Par exemple, la valeur de linstruction suivante est 3 :
count integers in {"a", "b", "c", 1, 2, 3} -- rsultat : 3

Une autre faon de compter les lments dans une liste avec la proprit Length :
length of {"a", "b", "c", 1, 2, 3} -- rsultat : 6

Les valeurs

T1 - 44

Chapitre 2

Tome 1

Formes de rfrence

Utiliser les formes de rfrence suivantes pour se rfrer aux proprits des listes et aux lments dans des listes : Property. Par exemple, class of {"je", "suis", "tout", "seul"} spcifie List. Index. Par exemple, item 4 of {"je", "suis", "tout", "seul"} spcifie "seul". Middle. Par exemple, middle item of {"je", "suis", "tout", "seul"} spcifie "suis".

Arbitrary. Par exemple, some item of {"il", "fait", "nuit"} peut spcifier nimporte quel lment dans la liste. Every element. Par exemple, every item of {"il", "fait", "nuit"} spcifie {"il", "fait", "nuit"}. Range. Par exemple, items 2 thru 3 of {"il", "fait", "nuit"} spcifie {"fait", "nuit"}. Vous ne pouvez pas utiliser les formes de rfrence Name, ID, ou Filter. Par exemple, la rfrence suivante, laquelle utilise la forme de rfrence Filter avec une liste, nest pas valide.
the items in {"je", "suis", "tout", "seul"} whose first character is "j" -- rsultat : not a valid reference

Coercitions supportes

AppleScript supporte la coercition dune liste lment unique en nimporte quelle classe de valeur laquelle llment peut tre contraint, sil nest pas une partie dune liste. AppleScript supporte aussi la coercition dune liste entire en chane de caractres si tous les lments dans la liste peuvent tre contraints en chane de caractres. La chane de caractres gnre chane tous les lments, spars par la valeur courante de la proprit AppleScript Text Item

T1 - 45

Les valeurs

Chapitre 2

Tome 1

Delimiters. Cette proprit par dfaut est une chane de caractres vide (""), aussi les lments sont simplement chans sans sparation.
{"il", "fait", "nuit"} as string -- "ilfaitnuit" set text item delimiters to ":" {"il", "fait", "nuit"} as string -- "il:fait:nuit" set text item delimiters to ""

Note des traducteurs francophones Il est noter que lorsque vous rglez la valeur de la proprit Text Item Delimiters, il est recommand de linitialiser, une fois laction acheve, sur la valeur par dfaut. q Pour plus dinformations sur la proprit Text Item Delimiters, voir Les Proprits dAppleScript (T4 - p.20). Les lments individuels dans une liste peuvent appartenir nimporte quelle classe de valeur, et AppleScript supporte la coercition de nimporte quelle valeur en une liste lment unique. Les valeurs, de nimporte quelle classe, chanes avec le caractre de concatnation (&), peuvent aussi tre contraintes en une liste :
5 & "George" & 11.43 & "Bill" as list -- rsultat : {5, "George", 11.43, "Bill"}

Notes

Vous pouvez utiliser loprateur de concatnation (&) pour combiner ou ajouter des valeurs des listes. Par exemple :
{"il"} & {"fait", "nuit"} -- rsultat : {"il", "fait", "nuit"}

Loprateur de concatnation combine les lments des deux listes en une liste unique, plutt que de faire une liste lment unique lintrieur de lautre liste.

Les valeurs

T1 - 46

Chapitre 2

Tome 1

Pour les grandes listes, il peut tre plus efficace dutiliser la commande Set ou Copy pour insrer un lment directement dans une liste. Le script suivant cre une liste de 10 000 nombres entiers en un peu plus dune seconde (le temps indiqu variera avec la vitesse de votre ordinateur et la version dAppleScript) :
set bigList to {} set bigListRef to a reference to bigList set numItems to 10000 set t to (time of (current date)) -- dbut du compteur repeat with n from 1 to numItems copy n to the end of bigListRef end repeat set total to (time of (current date)) - t -- fin du compteur total -- rsultat : 1 (seconde)

Pour plus dinformations sur la gestion des grandes listes, voir la section Exemples de Loprateur A Reference To (T4 - p.12).

Number
Lidentificateur de classe Number est un synonyme des classes de valeur Integer et Real ; il dcrit un nombre positif ou ngatif qui peut, soit appartenir la classe de valeur Integer, soit la classe de valeur Real.

Expressions littrales 1 2 -1 1000 10.2579432 1.0 1.

Nimporte quelle expression littrale valide pour une valeur de la classe Integer ou Real est aussi une expression littrale valide pour une valeur de la classe Number.

T1 - 47

Les valeurs

Chapitre 2

Tome 1

Proprits Class

Lidentificateur de classe de lobjet. Cette proprit est en lecture seule, et sa valeur est toujours soit Integer, soit Real.

lments

Aucun

Oprateurs

Comme les valeurs identifies comme valeurs de la classe Number sont en ralit des valeurs soit de la classe Integer,soit de la classe Real, les oprateurs disponibles sont les oprateurs dcrits dans les dfinitions de la classe de valeur Integer ou Real.

Coercitions supportes

Vous pouvez utiliser lidentificateur de classe Number pour contraindre nimporte quelle valeur qui peut tre contrainte en valeur Real ou en valeur Integer. Toutefois, la classe de valeur qui en rsultera, sera toujours soit Integer, soit Real :
set x to 1.5 as number class of x -- rsultat : real

Real
Les valeurs qui appartiennent la classe de valeur Real sont des nombres positifs ou ngatifs qui peuvent comporter une fraction dcimale, comme 3.1415 et 1.0.

Expressions littrales 10.2579432 1.0 1.

comme dj vu dans le troisime exemple, un point dcimal indique un nombre rel, mme sil ny a pas de fraction dcimale.

Les valeurs

T1 - 48

Chapitre 2

Tome 1

Les nombres rels peuvent aussi tre crits en utilisant la notation exponentielle. La lettre e est prcde par un nombre rel (sans espaces) et suivie par un entier exposant (aussi sans espaces). Lexposant peut tre soit positif, soit ngatif. Pour obtenir la valeur, le nombre rel est multipli par 10 lev la puissance indique par lexposant, comme dans ces exemples :
1.0e5 1.0e+5 1.0e-5 -- quivalent 1.0 * 10^5, ou 100000 -- quivalent 1.0e5 -- quivalent 1.0 * 10^-5, ou .00001

Proprits Class

Lidentificateur de classe de lobjet. Cette proprit est en lecture seule, et sa valeur est toujours Real.

lments

Aucun

Oprateurs

Les oprateurs et / retournent toujours des valeurs Real comme leurs rsultats.
class of (12.0 / 2.0) -- rsultat : real

Les oprateurs +, -, *, Mod, et ^ retournent des valeurs Real si lun ou lautre de leurs oprandes est une valeur Real.
class of (12.0 + 2) -- rsultat : real

Les oprateurs qui peuvent avoir des valeurs Real comme oprandes sont +, , *, (ou /),Div, Mod, ^, =, , >, , <, et .

Coercitions supportes

AppleScript supporte la coercition dune valeur Real en une liste lment unique ou en chane de caractres. AppleScript supporte la coercition dune valeur Real en une valeur Integer seulement si la valeur Real na pas de fraction dcimale.
T1 - 49 Les valeurs

Chapitre 2

Tome 1

AppleScript supporte aussi la coercition dune valeur Real en utilisant le synonyme Number, mais la classe de la valeur qui en rsulte, demeure inchange.
class of (1.5 as number) -- rsultat : real

Notes

Les valeurs Real qui sont plus leves que ou gales 10,000.0 ou infrieures ou gales 0.0001 sont converties en notation exponentielle lorsque les scripts sont compils. La plus grande valeur qui peut tre value (positive ou ngative) est 1.797693e+308.

Record
Une valeur de la classe de valeur Record est une collection de proprits non ordonnes. Comme les proprits des objets dapplication, chaque proprit a une tiquette, et les proprits dun enregistrement sont distingues les unes des autres par leur tiquette. Il ne peut y avoir quune seule proprit avec une tiquette particulire dans un enregistrement quelconque.

Expressions littrales

Les valeurs Record apparaissent dans les scripts sous forme dune srie de proprits contenues lintrieur daccolades et spares par des virgules. Chaque proprit a la forme suivante : tiquette de la proprit suivie de deux-points (:) suivis de la valeur de la proprit {tiquetteProprit1:ValeurProprit1, tiquetteProprit2:ValeurProprit2} Par exemple, lenregistrement :
{nom:"Bernard",taille:1.85,age:33}

contient trois proprits : nom (une chane de caractres), taille (un nombre rel) et age (un nombre entier). Les valeurs assignes aux proprits peuvent appartenir nimporte quelle classe. AppleScript value les expressions dans un enregistrement avant dutiliser lenregistrement dans dautres expressions. Par exemple, lenregistrement
Les valeurs T1 - 50

Chapitre 2

Tome 1

suivant est quivalent au prcdent :


{nom:"Bernard",taille: (2-0.15),age:(11*3)}

Proprits

En plus des proprits qui sont spcifiques chaque enregistrement, deux proprits sont communes tous les enregistrements :
Class

Lidentificateur de classe de lobjet. Pour la plupart des enregistrements, la valeur de la proprit Class est record. La proprit Class dun enregistrement peut tre modifie elle nest pas en lecture seule. Par exemple, une application qui corrige un texte pourrait dfinir un enregistrement spcial pour spcifier les styles (comme gras ou soulign) des objets du texte. La valeur de la proprit Class pour ces enregistrements, comme dans lexemple suivant, est lidentificateur de classe Text Style Info.

tell application "AppleWorks" --get text style from open document style of text body of document 1 end tell

En excutant le script prcdent, le rsultat suivant est produit :


{class:text style info, on styles:{plain},off styles:{italic, underline, outline, shadow, condensed, expanded, strikethrough, superscript, subscript, superior, inferior, double underline}} Length

Une valeur integer contenant le nombre de proprits dans lenregistrement. Cette proprit est en lecture seule.

Si vous dfinissez une proprit Class de faon explicite dans un enregistrement, la valeur que vous dfinissez remplace la valeur de la proprit Class implicite, record, dcrite plus haut.

Oprateurs

Les oprateurs qui peuvent avoir des enregistrements comme oprandes sont

T1 - 51

Les valeurs

Chapitre 2

Tome 1

&, =, , Contains, et Is Contained By. Pour de plus amples informations sur le traitement des enregistrements par les oprateurs AppleScript, voir Les oprateurs qui grent les oprandes de diverses classes (T4 - p.33).

Commandes gres

Vous pouvez compter les proprits dun enregistrement avec la commande Count. Par exemple, la valeur de linstruction suivante est 2 :
count {nom:"Bernard",taille:1.85} -- rsultat : 2

Une autre faon de compter les proprits dun enregistrement, cest avec la proprit Length. Par exemple, la valeur de la rfrence suivante est 3 :
length of {nom:"Bernard",taille:1.85,age:33} -- rsultat : 3

Formes de rfrence

La seule forme de rfrence que vous pouvez utiliser avec les enregistrements est Property. Par exemple, la rfrence suivante spcifie la proprit taille dun enregistrement.
taille of {nom:"Bernard",taille:1.85,age:33} -- rsultat : 1.85

Vous ne pouvez pas vous rfrer aux proprits dans les enregistrements par lindex numrique. Par exemple, la rfrence suivante, qui utilise la forme de rfrence Index sur un enregistrement, nest pas valide.
item 2 of {nom:"Bernard",taille:1.85,age:33} -- rsultat : not a valid reference

Les valeurs

T1 - 52

Chapitre 2

Tome 1

Coercitions supportes

AppleScript supporte la coercition des enregistrements en listes ; toutefois, toutes les tiquettes des proprits sont perdues dans la coercition et la liste rsultante ne pourra pas tre contrainte en record.

Notes

Pour spcifier une proprit particulire dun enregistrement, vous donnerez son nom. Par exemple, si vous assignez lenregistrement une variable, comme dans
copy {nom:"Bernard",taille:1.85,age:33} to individu

vous pouvez alors obtenir la valeur de la proprit Nom avec lexpression


nom of individu -- rsultat : "Bernard"

Une proprit dun enregistrement peut contenir une valeur de nimporte quelle classe. Vous pouvez modifier la classe dune proprit simplement en assignant une valeur appartenant une autre classe.
copy {nom:"Bernard",taille:1.85,age:33} to individu class of nom of individu -- rsultat : string copy 125 to nom of individu class of nom of individu -- rsultat : integer

Aprs avoir dfini un enregistrement, vous ne pouvez pas lui ajouter des proprits supplmentaires. Vous pouvez, toutefois, chaner des enregistrements avec loprateur (&).
copy {nom:"Bernard",taille:1.85,age:33} to individu individu & {prenom:"Raoul"} -- rsultat : {nom:"Bernard",taille:1.85,age:33,prenom:"Raoul"}

Reference
Une valeur de la classe reference est une rfrence un objet. Une rfrence peut se rfrer un objet dapplication comme une fentre ou un fichier, ou un objet AppleScript comme un lment dans une liste ou une proprit dans un enregistrement. Vous pouvez crer une valeur de la classe Reference en utilisant loprateur A Reference To. De plus, les applications peuvent

T1 - 53

Les valeurs

Chapitre 2

Tome 1

retourner des rfrences en rponse des commandes. Une valeur de la classe Reference est diffrente de la valeur de lobjet auquel une rfrence se rfre. Par exemple, la rfrence docNameRef dans le script suivant se rfre un nom dobjet (name of document 1 of application "AppleWorks") dont la valeur est une chane de caractres (comme "April Report").
tell application "AppleWorks" set docNameRef to a reference to the name of the first document (* rsultat: name of document 1 of application "AppleWorks" *) docNameRef as string --rsultat: "April Report" end tell

Si vous modifiez April Report en Revised April Report et que vous excutiez nouveau ce script, le rsultat de la rfrence sera le mme (name of document 1 of application "AppleWorks"), mais la valeur changera ( "Revised April Report"). La diffrence entre une valeur de la classe Reference et lobjet auquel la valeur se rfre est analogue la diffrence entre une adresse et limmeuble auquel ladresse se rfre. Ladresse est une srie de mots et de nombres, comme 22 rue Victor Hugo, qui identifie lemplacement de limmeuble. Lemplacement est distinct de limmeuble lui-mme. Si limmeuble est remplac par une maison la mme place, ladresse restera la mme. Une valeur de la classe Reference cre avec loprateur A Reference To est une structure lintrieur dAppleScript qui se rfre (ou pointe sur) un objet spcifique.
tell application "AppleWorks" set docRef to a reference to the first document -- rsultat: document 1 of application "AppleWorks" name of docRef -- rsultat: "New Report" end tell

Dans ce script, la rfrence docRef se rfre au premier document de lapplication AppleWorks, laquelle rfrence est nomme "New Report". Toutefois, lobjet que docRef pointe peut changer. Si vous ouvrez un second document AppleWorks appel "Second Report" et que vous excutiez nouveau le script, il retournera le nom du document nouvellement ouvert,

Les valeurs

T1 - 54

Chapitre 2

Tome 1

Second Report. Vous pouvez, par contre, crer une rfrence directe au document New Report :
tell application "AppleWorks" set docRef to a reference to document "New Report" (* rsultat : document "New Report" of application "AppleWorks"*) name of docRef -- rsultat : "New Report" end tell

Si vous excutez ce script aprs louverture dun second document, il retournera encore le nom du document original, New Report. Vous pouvez aussi utiliser la forme alias pour se rfrer un fichier dont le nom ou lemplacement peut changer. Pour plus dinformations, voir T3 - p.41. Les valeurs de la classe Reference sont similaires aux pointeurs dans dautres langages de programmation, mais la diffrence des pointeurs, les rfrences peuvent se rfrer seulement aux objets. Utiliser une rfrence peut parfois tre plus efficace que dutiliser directement un objet, comme il est montr dans lexemple de la section Notes de la dfinition de la classe List (T1 p.43).

Expressions littrales set itemRef to a reference to item 3 of {1,"Hello",755,99} -- rsultat : item 3 of {1,"Hello",755,99} set newTotal to itemRef + 45 -- rsultat : 800 a reference to the name of the first report

Proprits Class

Lidentificateur de classe de lobjet. Cette proprit est en lecture seule, et sa valeur est toujours reference. La valeur de lobjet auquel la rfrence se rfre. La classe de la valeur dpend de la rfrence. Pour plus dinformations sur comment utiliser la proprit Contents, voir Loprateur A Reference To (T4 - p.12).

Contents

T1 - 55

Les valeurs

Chapitre 2

Tome 1

lments

Aucun

Oprateurs

Loprateur A Reference To retourne une rfrence comme son rsultat. Cet oprateur est dcrit dans Loprateur A Reference To (T4 - p.12).

Coercitions supportes

Lapplication, laquelle un objet spcifi par une rfrence appartient, dtermine si la valeur de lobjet peut tre contrainte en une classe dsire.

Notes

Une rfrence peut fonctionner comme une rfrence un objet ou comme une expression dont la valeur est la valeur de lobjet spcifi dans la rfrence. Quand une rfrence est le paramtre direct dune commande, elle fonctionne gnralement comme une rfrence un objet, en indiquant quel objet la commande doit tre envoye. Dans la plupart des cas, les rfrences fonctionnent comme des expressions, quAppleScript value en obtenant leurs valeurs. La rfrence front window of application "Apple System Profiler" dans lexemple suivant fonctionne comme une rfrence un objet. Elle identifie lobjet auquel la commande Close est envoye.
close front window of application "Apple System Profiler"

Dun autre ct, la rfrence name of the first report dans lexemple suivant fonctionne comme une rfrence dexpression :
tell application "Apple System Profiler" set reportNameString to name of the first report end tell

Quand AppleScript excute ce script, il obtient la valeur de la rfrence name of the first report une chane de caractres et la stocke alors dans la variable reportNameString. Le script suivant montre une commande de lapplication AppleWorks, la
Les valeurs T1 - 56

Chapitre 2

Tome 1

commande Make, laquelle retourne une rfrence :


tell application "AppleWorks" -- crez un nouveau document et obtenez sa rfrence set docRef to (make new document at beginning with properties {name:"New Report"}) -- rsultat: document "New Report" of application "AppleWorks" end tell

String
Une valeur de la classe String est une chane de caractres (une srie ordonne de caractres) dans AppleScript.

Expressions littrales

Les chanes de caractres dans les scripts sont toujours mises entre guillemets, comme dans ces exemples :
"String" "le 14 juillet" "5, avenue Marceau"

Pour inclure les guillemets dans une chane de caractres, vous devez utiliser le caractre anti-slash (\).

Proprits Class

Lidentificateur de classe de lobjet. Cette proprit est en lecture seule, et sa valeur est toujours string. Le nombre de caractres dans la chane de caractres.

Length

lments

Les chanes de caractres peuvent comporter des caractres, des mots, des paragraphes et des lments de texte.

T1 - 57

Les valeurs

Chapitre 2

Tome 1

Character Paragraph

Un simple caractre contenu dans la chane de caractres. Une srie de caractres commenant immdiatement, soit aprs le premier caractre aprs la fin du paragraphe prcdent, soit au dbut de la chane de caractres et finissant avec un retour chariot ou la fin de la chane de caractres. Une srie continue de caractres, y compris les espaces, les tabulations, et tous les autres caractres lintrieur dune chane de caractres (voir la section Notes plus loin). Une srie continue de caractres qui contiennent seulement les types de caractres suivants : lettres (y compris les lettres avec des signes diacritiques) chiffres espaces inscables dollar ($), cent (#), livre anglaise () ou yen () symboles de pourcentage (%,) virgule entre des chiffres points avant des chiffres apostrophes parmi des lettres ou des chiffres traits dunion Quelques exemples de mots :
"arc-en-ciel" "jtombe pic" "v8.6" "120 000 " "a1b2c3d4e5"

Text

Word

Cette liste des caractres disponibles sapplique la langue anglaise dans un script system roman. Les mots dans dautres langages sont dfinis par le script system pour chaque langage, si le script system appropri est install.

Note des traducteurs francophones noter quil est trs conseill de faire des tests pralables sur les chanes de caractres avant de se lancer dans lcriture de scripts, car suivant la version dAppleScript, les rsultats peuvent diffrer. q

Les valeurs

T1 - 58

Chapitre 2

Tome 1

Oprateurs

Les oprateurs qui peuvent avoir des chanes de caractres comme oprandes sont &, =, , >, , <, , Starts With, Ends With, Contains, Is Contained By, et As.

Formes de rfrence

Vous pouvez utiliser les formes de rfrence suivantes pour se rfrer aux lments des chanes de caractres : Property. Par exemple, class of "la pluie tombe drue" spcifie string. Index. Par exemple, word 2 of "la pluie tombe drue" spcifie
"pluie".

Middle. Par exemple, middle word of "la pluie tombe drue" spcifie "pluie".

Arbitrary. Par exemple, some word of "la pluie tombe drue" peut spcifier nimporte quel mot de la chane. Every element. Par exemple, every word of "la pluie tombe drue" spcifie {"la", "pluie", "tombe","drue"}. Range. Par exemple, words 2 thru 3 of "la pluie tombe drue" spcifie {"pluie", "tombe"}. Vous ne pouvez pas utiliser les formes de rfrence Relative, Name, ID ou Filter.
Caractres spciaux dans les chanes de caractres

Le caractre anti-slash (\) et le guillemet ont une signification prcise dans les chanes de caractres. Si vous souhaitez utiliser ces caractres dans une chane de caractres, vous devez les faire prcder chaque fois dun caractre anti-slash : pour (\) pour (") saisir \\ saisir \"

T1 - 59

Les valeurs

Chapitre 2

Tome 1

Les caractres de tabulation et de retour-chariot peuvent tre incorpors dans une chane de caractres, o ils peuvent tre reprsents par ces squences : tabulation retour-chariot
\t \r

Quand une chane de caractres contient nimporte laquelle de ces deux squences, par exemple, lors de laffichage de la chane dans une bote de dialogue, les squences sont converties. "lment 1\t\t1\rlment 2\t\t2" cette chane sera affiche comme ceci dans une bote de dialogue : lment 1 lment 2 1 2

Les constantes des chanes de caractres

AppleScript dfinit trois constantes pour les valeurs des chanes de caractres :
Constante Valeur

espace tabulation retour-chariot

"" "\t" "\r"

Coercitions supportes

Si une chane de caractres reprsente un nombre valide, AppleScript supporte la coercition de la chane soit en valeur Integer, Real ou Number. De mme, une valeur Integer, Number ou Real peut tre contrainte en chane de caractres. AppleScript supporte aussi la coercition dune chane de caractres en liste lment unique, et la coercition dune liste dont les lments peuvent tous individuellement tre contraints en chane de caractres ou collectivement, mais alors les lments sont chans les uns aux autres.
{"il","fait","beau"} as string -- rsultat : "ilfaitbeau"

Les valeurs

T1 - 60

Chapitre 2

Tome 1

AppleScript supporte aussi, depuis AppleScript 1.3.7, la coercition dune constante, comme Tuesday ou May, en chane de caractres.

Notes

Une chane de caractres nest pas limite en longueur, sauf par la taille de la mmoire disponible de lordinateur. Pour obtenir une portion contigu des caractres dans une chane, utiliser llment Text. Par exemple, la valeur de linstruction suivante est la chane de caractres "rature fra".
text 6 thru 15 of "Littrature franaise" -- rsultat : "rature fra"

Le rsultat dune instruction utilisant llment Character au lieu de llment Text est une liste.
character 6 thru 15 of "Littrature franaise" -- rsultat : {"r", "a", "t", "u", "r", "e", " ", "f", "r", "a"}

Vous ne pouvez pas rgler la valeur dun lment dune chane de caractres. Par exemple, si vous tentez de modifier la valeur du premier caractre de la chane de caractres "Nestor" comme dans lexemple suivant, vous obtiendrez une erreur :
set character 1 of "Nestor" to "R" -- impossible de rgler character 1 of "Nestor" "R"

Toutefois, vous pouvez modifier ce prnom en obtenant les cinq derniers caractres de Nestor et en les chanant avec le R.
set prenom to "Nestor" set prenom to "R" & (text 2 thru 6 of prenom) -- rsultat : "Restor"

T1 - 61

Les valeurs

Chapitre 2

Tome 1

Styled Text
Lidentificateur de classe Styled Text est un synonyme de la classe String avec en plus des informations sur le style et la police.

Expressions littrales

La seule diffrence entre une valeur de la classe String et une valeur de la classe Styled Text est que celle-ci peut inclure (mais ce nest pas une obligation) des informations de styles et de polices. Ainsi nimporte quelle expression littrale valide de la classe String est aussi ligible la classe Styled Text.

Proprits Class

Lidentificateur de classe de lobjet. Cette proprit est en lecture seule, et sa valeur est toujours string. Le nombre de caractres dans la chane de caractres.

Length

lments

La classe Styled Text a les mmes lments que la classe String : Character, Word, Paragraph et Text.

Oprateurs

Comme les valeurs identifies en tant que valeurs Styled Text sont effectivement des valeurs de la classe String, les oprateurs disponibles sont les oprateurs dcrits dans la dfinition de la classe String : &, =, , >, , <, , Starts With, Ends With, Contains, Is Contained By, et As.

Formes de rfrence

Vous pouvez utiliser les mmes formes de rfrence avec les valeurs Styled Text quavec les valeurs String : Property, Index, Middle, Arbitrary, Every Element, et Range. Pour plus de dtails, voir la classe String.

Les valeurs

T1 - 62

Chapitre 2

Tome 1

Les caractres spciaux et les constantes de chanes de caractres

Vous pouvez utiliser les mmes caractres spciaux, constantes et coercitions avec la classe Styled Text quavec la classe String. Notez que les constantes sous forme de chanes de caractres ne comportent pas dinformation de styles et de polices.

Coercitions supportes

Vous pouvez utiliser les mmes coercitions que celles de la classe String. Vous pouvez utiliser lidentificateur de classe Styled Text pour contraindre nimporte quelle chane de caractres en classe Styled Text. Toutefois, la valeur gnre est toujours de la classe String.

Notes

AppleScript de lui-mme ne fournit pas de commandes pour manipuler directement les valeurs Styled Text. Pour modifier les informations de styles et de polices pour une valeur de Styled Text, vous devrez travailler avec une application qui sait comment manipuler les textes styls. Toutefois, AppleScript prserve les informations de styles et de polices quand il copie les objets texte des applications dans les scripts et vice versa Par exemple, vous pouvez utiliser un script comme celui qui suit pour obtenir un texte styl, le manipuler, et le recopier dans un document AppleWorks :
tell app "AppleWorks" --obtenir un texte partir dun document ouvert set myText to text body of document "Report" --ajouter des informations la fin set myTexte to myTexte & return & "The End." --slection de tout le texte initial et remplacement select text body of document "Report" set selection of document "Report" to myTexte close document "Report" saving ask end tell

Comme AppleScript retourne le texte styl lorsquil retourne le texte dun document, vous navez pas besoin de contraindre le texte retourn en texte styl. Le style et la police du texte sont prservs ensemble quand le texte est copi dans la variable myText et quil est chan avec le retour chariot et la chane de caractres "The End.". Le texte modifi remplaant le texte initial

T1 - 63

Les valeurs

Chapitre 2

Tome 1

dans le document est form du texte initial avec son style et sa police dorigine, un retour chariot pour le saut de ligne et le texte non-styl "The End.", lequel apparat dans le style et la police du texte le prcdant immdiatement. Styled Text contient aussi des informations sur la forme dcriture du texte. Si vous copiez un texte non-Roman dans une variable comme texte styl, AppleScript prserve les informations du texte original bien que lapplication diteur de scripts ne peut pas lafficher correctement. Si vous copiez alors le texte dans une application qui peut grer ce texte dans sa forme originale, le texte est affich correctement.

Text
Vous pouvez utiliser lidentificateur de classe Text comme un synonyme pour lidentificateur String. Par exemple, dans les coercitions :
"A string" as string = "A string" as text -- rsultat : true

Toutefois, la classe dune valeur string est toujours string :


set myThing to "A string" class of myThing -- rsultat : string set otherThing to myThing as text class of otherThing -- rsultat : string

A la diffrence de lidentificateur de classe Number (lequel est un synonyme pour la classe Real ou Integer) ou Styled Text (lequel indique une chane de caractres qui comporte des informations de style et de police), lidentificateur de classe Text est prcisment quivalent un identificateur de classe simple String.

Les classes de valeur dunits de mesure


AppleScript fournit des classes de valeur dunits de mesure pour travailler avec les units de mesure de distance, de surface, de capacit, de volume, de poids et de temprature. Les classes dunits de mesure sont des valeurs simples qui ne contiennent pas dautres valeurs et qui ont seulement une
Les valeurs T1 - 64

Chapitre 2

Tome 1

unique proprit, la proprit Class. Vous pouvez utiliser les classes dunits de mesure dans nimporte quel script et elles nont pas besoin dtre insres dans une instruction Tell. AppleScript autorise les coercitions des classes dunits de mesure en String et en Number (Real ou Integer) et des classes String, Real, ou Integer en classes dunits de mesure. Vous pouvez aussi contraindre entre elles les classes dunits de mesure dune mme catgorie, comme Inches en Kilometers (distance) ou Gallons to Liters (capacit). Comme vous vous en doutez, il ny a pas de coercitions possibles entre les catgories, comme de Gallons en Degrees Centigrade. Notez quAppleScript ne fournit les units Quarts (Quart) et Degrees Kelvin ou la coercition de Miles en autres units, que depuis AppleScript version 1.3.7.

Les classes de valeur dunits de mesure par catgories

Liste des classes de valeurs dunits de mesure quAppleScript fournit Distance centimetres centimeters feet inches kilometres kilometers metres meters miles yards Traduction franaise centimtres centimtres pieds (30,48 cm) pouces (2,54 cm) kilomtres kilomtres mtres mtres miles ( 1609,344 m) yards ( 0,914 m)

T1 - 65

Les valeurs

Chapitre 2

Tome 1

Surface square feet square kilometres square kilometers square metres square meters square miles square yards Volume cubic centimetres cubic centimeters cubic feet cubic inches cubic metres cubic meters cubic yards Volume gallons litres liters quarts Poids grams kilograms ounces pounds Temprature degrees Celsius degrees Fahrenheit degrees Kelvin

Traduction franaise pieds carrs kilomtres carrs kilomtres carrs mtres carrs mtres carrs miles carrs yards carrs

centimtres cubes centimtres cubes pieds cubes pouces cubes mtres cubes mtres cubes yards cubes

gallons (3,785 l) litres litres quarts ( 1.0568 l)

grammes kilogrammes onces ( 28,349 g) livres ( 453,592 g)

degrs Celsius degrs Fahrenheit degrs Kelvin

Les valeurs

T1 - 66

Chapitre 2

Tome 1

Travailler avec les valeurs dunits de mesure

Cette section fournit des exemples de scripts. Lexemple suivant calcule laire dun cercle avec un rayon de 7 yards, puis contraint laire en pieds carrs ( pi est une constante dfinie par AppleScript)
set aireCercle to (pi * 7) as square yards -- rsultat : square yards 153.9380400259 aireCercle as square feet -- rsultat : square feet : 1385.442360233099

Lexemple suivant rgle une variable la valeur de 5.0 square kilometers, puis la contraint en diverses units de surface :
set aire to square kilometers 5.0 -- rsultat : square kilometers 5.0 aire as square miles -- rsultat : square miles 1.930510798581 aire as square meters -- rsultat : square meters 5.0E+6

Vous pouvez aussi contraindre une valeur square meters en nombre rel ou entier :
set aire to square meters 5.0 -- rsultat : square meters 5.0 aire as real -- rsultat : 5.0 aire as integer -- rsultat : 5

Toutefois, vous ne pouvez pas contraindre une mesure de surface en un type dunit dune catgorie diffrente :
set aire to square meters 5.0 -- rsultat : square meters 5.0 aire as cubic meters -- rsultat : error aire as degrees celsius -- rsultat : error

T1 - 67

Les valeurs

Chapitre 2

Tome 1

Lexemple suivant montre la coercition dune unit de mesure en String, et dun String en unit de mesure :
set maValeur to pounds 2.2 maValeur as string "2.2" as kilograms -- rsultat : pounds 2.2 -- rsultat : "2.2" -- rsultat : kilograms 2.2

Autres classes de valeur

Unicode Text et International Text

En supplment aux classes de valeur de chanes de caractres dcrites dans String (T1 - p.57), Styled Text (T1 - p.62), et Text (T1 - p.64), AppleScript fournit un support partiel pour les types de chanes de caractres suivants : Unicode Text : Une srie ordonne de caractres Unicode 2-octet. (Unicode est un standard international qui utilise un encodage sur 16-bit pour spcifier de manire unique les caractres et les symboles pour tous les langages utiliss couramment). International Text : Une srie ordonne doctets, commenant avec un code de langage 4-octet et un code de script 4-octet, qui ensemble dtermine le format des octets qui suivent. (International Text peut tre obtenu seulement partir dun ordinateur Macintosh qui a un kit de langue install). Vous pouvez utiliser les classes Unicode Text, International Text, et String dans nimporte quel script et elles nont pas besoin dtre insres dans une instruction Tell. Ces classes reprsentent toutes des donnes de texte, bien que dans diffrents formats, comme il est montr plus loin. Vous utiliserez les classes Unicode Text et International Text pour obtenir des informations partir dapplications ou pour envoyer des informations aux applications, qui grent ces types de texte.

Les valeurs

T1 - 68

Chapitre 2

Tome 1

String et Text
1 octet

Unicode Text
2 octets

International Text
4 octets Code du langage 4 octets Code du script 1 octet ou 2 octets de texte en fonction des codes

Comme les diffrentes classes de valeur de chanes de caractres stockent des donnes dans diffrents formats, la taille en octets dune chane de caractres peut varier du nombre de caractres quelle contient. Les comparaisons entre les valeurs Unicode Text, International Text, et String ne sont pas probantes pour tre utile. Vous ne pouvez pas dterminer la proprit Length dune valeur stocke au format Unicode Text, ou obtenir ses lments Character, Word, ou Paragraph (comme vous pouvez le faire avec dautres types de chanes de caractres, y compris International Text). AppleScript fournit des options limites pour laffichage des formats Unicode Text et International Text : Lditeur de scripts peut afficher Unicode Text seulement sous la forme de donnes brutes (raw data).
"texte" as unicode text -- rsultat : data utxt00740065007800740065

Lditeur de scripts affiche International Text selon le langage et le script du texte, et si un kit de langue est install. Par exemple, lditeur de scripts peut afficher International Text en langue anglaise et script Roman comme une simple chane de caractres. Toutefois, il ne peut pas afficher les caractres chinois simplifis tant que vous navez pas install le kit de langue appropri.
"texte" as international text -- rsultat : "texte"

AppleScript permet les coercitions pour les classes Unicode Text, International Text et String (ou Text). Par exemple, si votre script obtient une

T1 - 69

Les valeurs

Chapitre 2

Tome 1

valeur de type Unicode Text dune application qui supporte Unicode, vous pouvez contraindre cette valeur en String pour la voir sous un format lisible. Toutefois, comme les classes String, Unicode Text et International Text stockent les donnes diffremment, et parce quil y a des diffrences dans les donnes de texte de chacun de ces formats, des informations peuvent tre perdues lors de certaines coercitions. Ceci est vrai pour : - les coercitions dUnicode Text en International Text ou String - les coercitions dInternational Text en String

Le script suivant rcupre les donnes de texte dun document AppleWorks, il y ajoute une phrase la fin en sautant une ligne, puis il remplace le texte original par le nouveau texte obtenu dans le script. Comme le texte original est crit en caractres chinois (saisi avec le kit de langue chinois), AppleWorks retourne le texte au format International Text, aussi le script na pas besoin de le contraindre en International Text. Le script rajoute, aux donnes de texte transmises par AppleWorks, la phrase "The End." en langage et script courant (english et english Roman). Si le kit de langue appropri est install, AppleScript pourra afficher les caractres chinois dans sa fentre rsultat.
tell app "AppleWorks" --obtenir le texte (caractres chinois) set myText to text body of document "chinese text" --ajouter des informations la fin en anglais set myTexte to myTexte & return & "The End." --slection de tout le texte initial et remplacement select text body of document "chinese text" set selection of document "chinese text" to myTexte end tell

Si vous utilisez loprateur de concatnation (&) pour combiner deux valeurs en Unicode Text, le rsultat est une liste, et non une chane de caractres :
set formule to "Salut" as unicode text --rsultat : data utxt00730061006C00750074 set invite to "Paul" as unicode text --rsultat : data utxt005000610075006C set salutations to formule & invite (* rsultat : {data utxt00730061006C00750074,data utxt005000610075006C}*) set salutations to (formule as string) &

Les valeurs

T1 - 70

Chapitre 2

Tome 1

(invite as string) --rsultat : "SalutPaul"

Note des traducteurs francophones partir dAS 1.6 presque toutes les oprations ralisables avec la classe String sont aussi ralisables avec la classe Unicode Text. noter quil est trs conseill de faire des tests pralables sur les chanes de caractres avant de se lancer dans lcriture de scripts, car suivant la version dAppleScript, les rsultats peuvent diffrer. q

File Specification

La classe File Specification spcifie le nom et lemplacement sur un support dun fichier qui nexiste peut-tre pas encore. Vous pouvez obtenir une valeur de la classe File Specification partir de la commande New file du complment standard AppleScript, ou dune commande dapplication qui retourne une valeur File Specification. Linstruction suivante utilise la commande New file, laquelle affiche la bote de dialogue standard de Mac OS pour la cration de fichier, afin dobtenir de lutilisateur un nom et un emplacement pour le fichier crer.
set spec to new file default name "lettre" class of spec -- file specification

Le nom par dfaut affich est "lettre" et lemplacement par dfaut est fonction des rglages du tableau de bord Gnral. Lutilisateur peut spcifier nimporte quel nom et emplacement. Cette instruction stocke la valeur retourne de la classe File Specification, laquelle dcrit le nom et lemplacement spcifis par lutilisateur, dans la variable spec. Selon ce que lutilisateur indique, le rsultat de la fentre rsultat de lditeur de scripts ressemblera a :
file "Disque Dur:Desktop Folder:lettre"

Vous pouvez contraindre une valeur File Specification en String, le rsultat sera une chane de caractres compose du chemin complet du fichier :
spec as string --rsultat : "Disque Dur:Desktop Folder:lettre"

Au-del de contraindre le nom du chemin en String, vous ne pouvez pas utiliser AppleScript pour directement accder ou manipuler les informations

T1 - 71

Les valeurs

Chapitre 2

Tome 1

de la valeur de la classe File Specification. Toutefois, vous pouvez obtenir une valeur de la classe File Specification partir dun complment de pilotage ou dune application qui sait traiter ces valeurs. Par exemple, vous pouvez utiliser une File Specification quand vous voulez laisser lutilisateur indiquer un nom et un emplacement pour un fichier qui nexiste pas encore, mais que vous crerez ou sauvegarderez plus tard. Votre script pourrait utiliser la premire instruction comme dans lexemple suivant, pour obtenir une File Specification par lappel de la commande New file. Dans ce cas, le script fournit un nom par dfaut Nouveau rapport :
set spec to new file default name "Nouveau rapport"

Supposons que votre script ait ouvert un nouveau document AppleWorks nomm "sans titre", et quil ait stock ce nom dans une variable appele documentCourant. Le document na pas encore t enregistr sur le disque, mais le script a excut linstruction, montre ci-dessus, pour obtenir une File Specification pour le fichier. Plus tard, votre script pourra utiliser linstruction Tell suivante pour sauvegarder le document :
tell app "AppleWorks" save document documentCourant in spec end tell (*rsultat: "sans titre" renomm et sauvegard comme "Nouveau rapport"*)

RGB Color

La classe de valeur RGB Color reprsente une collection de trois valeurs entires qui indiquent le rouge, le vert et le bleu, les trois composants dune couleur. Vous pouvez contraindre une liste de trois valeurs Integer en RGB Color si chacune des valeurs entires est comprise entre 0 et 65535. En fait, AppleScript reporte la classe dune valeur RGB Color comme List :
set vertRGB to {0,65535,0} as RGB Color -- rsultat : {0,65535,0} class of vertRGB -- rsultat : list

Vous pouvez obtenir ou rgler les valeurs individuelles dune valeur RGB Color en accdant aux lments de la liste :
set monRGB to {500,25000,500} as RGB Color -- rsultat : {500,25000,500}

Les valeurs

T1 - 72

Chapitre 2

Tome 1

set monVert to second item of monRGB -- rsultat : 25000 set item 3 of monRGB to 12000 monRGB -- rsultat : {500,25000,12000} copy 12000 to item 3 of monRGB monRGB -- rsultat : {500,25000,12000}

Vous pouvez utiliser la classe de valeur RGB Color pour obtenir des couleurs RVB ou pour les envoyer une application qui gre les couleurs RVB. Par exemple, un objet graphique dans un document dessin bitmap AppleWorks a des proprits Fill Color et Pen Color qui appartiennent la classe RGB Color.

Styled Clipboard Text

La classe de valeur Styled Clipboard Text reprsente des donnes de texte du presse-papier qui comportent des informations de style et de police. Bien que vous ne pouvez pas contraindre cette classe de valeur en une autre ou lafficher dans son format natif, vous pouvez lutiliser pour transmettre des texte styls entre applications qui les grent. Le script suivant copie tout le texte, consistant en un seul mot Hello, du document "Hello with style" dans le presse-papier. Il obtient alors le contenu du presse-papier et affiche la classe de son contenu.
tell application "AppleWorks" set myText to text body of document "Hello with style" activate -- requis pour les commandes Clipboard (*les deux prochaines lignes utilisent des commandes du complment standard*) set the clipboard to myText set myClipboardText to the clipboard as scrap styles --rsultat: data styl000100000000000f000a001008a0000c000000000000 class of myClipboardText -- rsultat: styled clipboard text end tell

Comme il est montr dans le script, lobtention dun texte styl du pressepapier donne une valeur du type Styled Clipboard Text, quAppleScript peut seulement afficher comme des donnes brutes (raw data) entre des chevrons ( ). Bien que vous ne puissiez pas contraindre une valeur Styled Clipboard Text en Styled Text ou en String, vous pouvez la stocker dans une variable et la transmettre aux applications qui la grent.

T1 - 73

Les valeurs

Chapitre 3

Tome 1

Les coercitions

Ce chapitre aborde des gnralits sur les coercitions, les coercitions possibles avec les classes de valeur ayant dj t prsentes lors du chapitre prcdent. La coercition est le processus de conversion dune valeur dune certaine classe en une autre classe. AppleScript contraint les valeurs de deux faons : soit en rponse loprateur As
2 as real -- rsultat : 2.0

soit automatiquement, quand une valeur est dune classe diffrente de ce qui est attendu pour une commande ou une opration particulire
set x to 0 repeat (2 as string) times -- AppleScript convertit le String en Integer set x to x + 5 end repeat x -- rsultat : 10

Laptitude contraindre une valeur dune classe en une autre provient, soit dune fonction incorpore AppleScript, soit dune capacit fournie par une commande de complment de pilotage. Toutes les coercitions dcrites dans ce chapitre sont incorpores AppleScript, aussi vous pouvez les utiliser dans nimporte quel script sans avoir besoin de les insrer dans une instruction Tell. Loprateur As spcifie une coercition particulire. Vous pouvez utiliser loprateur As pour contraindre une valeur en une classe valide avant de lutiliser comme oprande ou paramtre dune commande. Par exemple, linstruction suivante contraint le nombre entier 2 en chane de caractres "2" avant de le stocker dans la variable myString :
set myString to (2 as string) -- rsultat : "2"

Les coercitions

T1 - 74

Chapitre 3
.

Tome 1

De mme, cette instruction contraint la chane de caractres "2" en nombre entier 2, ainsi il peut tre ajout lautre oprande, 8 :
("2" as integer) + 8 --rsultat : 10

Si vous spcifiez un paramtre de commande ou une oprande dans une classe de valeur invalide, AppleScript, automatiquement, contraint loprande ou le paramtre dans la bonne classe de valeur, si cest possible. Par exemple, quand AppleScript excute linstruction Repeat suivante, il espre une valeur Integer pour le nombre de fois rpter la commande Display dialog.
repeat "2" times display dialog "Hello" end repeat

Si vous transmettez une valeur String, comme dans cet exemple, AppleScript essaye de contraindre la valeur String en Integer. Si vous lui transmettez une valeur String qui ne peut pas tre contrainte en Integer, comme "2.5", il affiche un message derreur. Toutes les valeurs ne peuvent pas tre contraintes en une autre classe de valeur. Le tableau suivant rsume les coercitions quAppleScript supporte pour les classes de valeurs couramment utilises. Pour utiliser ce tableau, trouver la classe dorigine de la valeur dans la colonne de gauche. Dans la ligne du haut, chercher la classe de valeur atteindre. Si, lintersection de la ligne et de la colonne, il y a un symbole, alors AppleScript autorise la coercition. La classe de valeur Reference nest pas dans ce tableau car cest le contenu de la rfrence qui dtermine si la valeur, spcifie par une rfrence, peut tre contrainte dans la classe vise. Pour plus dinformations sur chaque coercition, voir la dfinition correspondante de la classe de valeur dans le chapitre prcdent. Note Quand vous faites la coercition dune chane de caractres en Integer, Number ou Real ou vice versa, AppleScript utilise les rglages courants du tableau de bord Nombres pour dterminer les sparateurs utiliser pour les milliers et les dcimales dans la chane. x

T1 - 75

Les coercitions

Chapitre 3

Tome 1

Quand vous contraignez une chane de caractres en valeur de la classe Date ou vice versa, AppleScript utilise les rglages courants du tableau de bord Date et heure pour le format de la date et de lheure. Vous pouvez contraindre des valeurs en utilisant les synonymes de classes, comme Number, Text, et Styled Text, mais la classe de valeur de la valeur gnre est toujours la classe de valeur approprie, et non la classe synonyme. Quelques exemples :
set x to 1.5 as number class of x -- rsultat : real set x to 4 as number class of x -- rsultat : integer set x to "Hello" as text class of x -- rsultat : string

Les coercitions

T1 - 76

Chapitre 3
.

Tome 1

Coercitions supportes par AppleScript


Classe darrive Unicode Text Styled Text String ou Text Record Real Number List - multiples lments List - lment unique International Text Integer Date Data Constant Class Boolean Classe de dpart Boolean Class Constant Data Date Integer International Text List lment unique List plusieurs lments Real Record String Unicode Text

s s s s s s s s s s s s s

s s s s s s s s

s s s

s s s s s

* s
s

s s

s s

sf

s s s

s s

s s

s s

s s

* s

Quelques informations peuvent tre perdues en excutant ces coercitions.

Seule une liste dont tous les lments peuvent tre contraints en String peut tre contrainte en String. f Seule une valeur Real qui na pas de fraction dcimale peut tre contrainte en Integer. Disponible avec AppleScript version 1.3.7

T1 - 77

Les coercitions

Chapitre 4

Tome 1

Les constantes

Une constante est un mot rserv avec une valeur prdifinie. Les constantes sont dfinies de diffrentes faons, y compris comme partie intgrante du langage AppleScript (les constantes boolennes true et false), comme proprits globales dAppleScript (tab, space, pi, return), et comme valeurs individuelles des classes de valeur avec des valeurs prdfinies ( Monday, ...., Sunday et January, ...., December). Savoir comment les constantes sont dfinies est moins important, toutefois, que de savoir quelles constantes sont disponibles et comment les utiliser. Note des traducteurs francophones Notez que toutes les constantes prsentes dans les sections suivantes nappartiennent pas forcment la classe de valeur Constant. Par exemple, pi est une constante arithmtique qui appartient la classe de valeur Real. q
class of pi -- rsultat : real

Constantes arithmtiques
AppleScript fournit plusieurs constantes de la classe Real ou Integer que vous pouvez utiliser dans les calculs arithmtiques :
pi

La constante arithmtique ( 3,14159265359). La classe de valeur de pi est Real.


set aireCercle to pi * 7 -- rsultat : 21.991148575129 minutes, hours, days, weeks

Le nombre de secondes, respectivement, dans une minute, une heure, un jour, et une semaine. minutes hours 60 (secondes dans une minute) 60 * minutes (ou 3600)

Les constantes

T1 - 78

Chapitre 4

Tome 1

days weeks

24 * hours (ou 86 400) 7 * days (ou 604 800)

Vous utiliserez ces constantes pour travailler avec les dates et les heures.

Constantes boolennes
AppleScript fournit les constantes boolennes true et false pour valuer les rsultats doprations boolennes, comme Greater Than, Less Than, et Is Equal To.
4 > 3 -- rsultat : true 120 < 100 -- rsultat : false

Attributs des instructions Considering et Ignoring


AppleScript dfinit les attributs application responses, case, diacriticals, expansion, hyphens, punctuation et white space pour les comparaisons qui utilisent les instructions Considering ou Ignoring. Ces attributs indiquent si AppleScript doit considrer ou ignorer des caractristiques spcifiques lors de lexcution dune valuation.
application responses

Si ignor, AppleScript nattend pas les rponses des commandes dapplication avant de procder linstruction suivante dans le script et ignore nimporte quels rsultats ou erreurs retourns. Par dfaut, AppleScript attend les rponses, considering application responses.
case

Si considr, AppleScript distingue les lettres majuscules des minuscules. Par dfault, case est ignor
diacriticals

Si ignor, AppleScript ignore les signes diacritiques (comme , , ) dans les comparaisons de chanes de caractres. Par dfaut, diacriticals est considr.

T1 - 79

Les constantes

Chapitre 4

Tome 1

expansion

Si ignor, AppleScript traite les caractres , , , et comme des caractres uniques et donc diffrents des caractres paires ae, AE, oe, OE. Par dfaut, expansion est considr.
hyphens

Si ignor, AppleScript ignore les traits dunion dans les comparaisons de chanes de caractres. Par dfaut, hyphens est considr.
punctuation

Si ignor, AppleScript ignore les signes de ponctuation dans les comparaisons de chanes de caractres. Par dfaut, punctuation est considr.
white space

Si ignor, AppleScript ignore les espaces, les tabulations et les retours chariots dans les comparaisons de chanes de caractres. Par dfaut, white space est considr. Exemple :
"Hello Raymond" = "HelloRaymond" -- rsultat : false ignoring white space "Hello Raymond" = "HelloRaymond" -- rsultat : true end ignoring

Pour plus dinformations et dexemples, voir Les instructions Considering et Ignoring (T5 - p.46).

Constantes de date et dheure


AppleScript fournit plusieurs constantes que vous pouvez utiliser pour travailler avec les valeurs de date et dheure :
minutes, hours, days, weeks

Le nombre de secondes, respectivement, dans une minute, une heure, un jour, et une semaine.

Les constantes

T1 - 80

Chapitre 4

Tome 1

date "03 dcembre 2001" + 4 * days + 3 * hours + 2 * minutes -- rsultat : date "vendredi 07 dcembre 2001 03:02:00" Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday ou Mon, Tue, Wed, Thu, Fri, Sat, Sun

Le jour de la semaine. Utiliser la proprit weekday pour obtenir le jour de la semaine dune date.
set theDate to current date -- rsultat : date "lundi 03 dcembre 2001 22:42:08" weekday of theDate -- rsultat : Monday January, February, March, April, May, June, July, August, September, October, November, December ou Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov,Dec

Le mois de lanne. Utiliser la proprit month pour obtenir le mois dune date.
month of theDate -- rsultat : December

Pour plus dinformations sur le travail avec les valeurs de date et dheure, voir La gestion des dates et des heures (T4 - p.47).

Diverses constantes de script


AppleScript dfinit les constantes anything, current application, it, me, missing value, my, et result. Les constantes it, me, et my sont dcrites dans T5 - p.12.
anything

La constante anything est rarement utilise dans un script, bien que vous puissiez choisir de faire quelque chose comme ce qui suit :
set myVariable to anything (* excution doprations qui peuvent changer la valeur de myVariable *) if myVariable is equal to anything then (* excution doprations, sachant que myVariable na jamais chang *) else

T1 - 81

Les constantes

Chapitre 4

Tome 1

--excution dautres oprations si myVariable a chang end if

Contrairement ce que vous pouvez penser, linstruction boolenne if myVariable is equal to anything value true seulement si myVariable est spcifiquement gal la constante anything. Cest dire, comparer le contenu dune variable anything ne garantit pas un rsultat true. Vous pouvez aussi tre amen voir anything comme un paramtre dune commande dapplication ou dun complment de pilotage. Ici, le sens est diffrent, et indique que la commande accepte en entre nimporte quel type de valeur pour ce paramtre. Pour un exemple, voir le With Data Parameters de la commande Make du dictionnaire dAppleWorks.
current application

soit lapplication cible par dfaut, soit lapplication usuellement dfinie comme proprit Parent dun script. Vous pouvez dsigner nimporte quelle application comme application courante pour un script, ou un script-objet, simplement en la dsignant comme une proprit Parent. Nimporte quelle commande suivante dans le script, si elle nest pas gre autrement, est envoye lapplication que vous dclarez comme la parente, et toutes les occurences de la constante current application se rfreront cette application.
Current

application est

Par exemple, le script suivant dclare le Finder comme sa proprit Parent, alors il envoie les commandes qui ferment la fentre en avant-plan du Finder et retourne le nom de lapplication :
property parent : application "Finder" close front window tell current application to return my name -- rsultat : "Finder" missing value

La constante missing value est un paramtre de substitution pour des informations manquantes. Par exemple, si votre script demande lapplication Network Setup Scripting pour la zone de chaque connexion, vous pourriez avoir en retour une liste qui indique la zone actuelle pour chaque connexion AppleTalk, mais llment missing value pour chaque connexion TCP/IP car une connexion TCP/IP na pas de zone. Si linstallation courante avait

Les constantes

T1 - 82

Chapitre 4

Tome 1

deux connexions AppleTalk et deux connexions TCP/IP, la liste rsultante ressemblerait peu prs ce qui suit :
{"4th Floor South","4th Floor North",missing value,missing value}

Vous pourriez alors excuter des oprations comme ce qui suit, en utilisant la constante missing value :
if item 3 of myZoneList = missing value then -- faire une opration si la connexion na pas de zone else -- faire une autre opration si la connexion a une zone end if result

AppleScript stocke le rsultat dune commande dans la variable prdfinie result. La valeur stocke y reste jusqu ce quune prochaine commande soit excute. Si une commande ne retourne pas de rsultat, la valeur de result est indfinie.
tell application "Finder" count files in folder "Apple Extras" of startup disk set numFiles to result -- enregistre result dans la variable numFiles end tell

Constantes des options denregistrement


AppleScript dfinit les constantes yes, no, et ask pour utiliser la commande Close. Le script suivant cre un nouveau document, insre un texte, et ferme le document, en demandant lutilisateur sil doit lenregistrer.
tell application "AppleWorks" make new document at beginning with properties {name:"New Report"} select text body of document "New Report" set selection of document "New Report" to myText close document "New Report" saving ask end tell

T1 - 83

Les constantes

Chapitre 4

Tome 1

Le terme saving ask signifie demander lutilisateur sil faut enregistrer, donc saving no signifie ne pas enregistrer les modifications du document ferm et saving yes signifie enregistrer sans demander.

Constantes des chanes de caractres


Applescript dfinit les constantes return, space, et tab pour reprsenter, respectivement, un retour-chariot, un espace, et une tabulation. Vous pouvez les utiliser avec loprateur de concatnation pour les ajouter une chane de caractres, ou vous pouvez les utiliser dans les oprations de comparaisons.
set addressString to return & "66601 Colton Blvd." & return & "Oakland, CA 94611" & return (* rsultat : deux lignes dadresse, dmarrant sur une nouvelle ligne *)

Constantes des styles de texte


Vous pouvez utiliser les constantes caractristiques de style de texte : suivantes pour spcifier des

all caps, all lowercase, bold, condensed, expanded, hidden, italic, outline, plain, shadow, small caps, strikethrough, subscript, superscript, underline

Le script suivant obtient le style du corps du texte dun document AppleWorks dj ouvert :
tell application "AppleWorks" style of text body of document "Draft Report" end tell -- rsultat : {class:text style info, on styles:{plain}, off styles:{italic, underline, outline, shadow, condensed, expanded, strikethrough, superscript, subscript, superior, inferior, double underline}}

Les constantes

T1 - 84

Chapitre 4

Tome 1

Constante Version
Vous pouvez utiliser la proprit version dAppleScript pour vrifier la version courante dAppleScript. Le script suivant vrifie que la version est plus grande ou gale la version 1.3.4 avant dexcuter nimporte quelle autre opration.
if (version of AppleScript as string) "1.3.4" then (*excute les oprations indiques si la version dAppleScript est 1.3.4 ou suprieure*) end if

Version est une proprit dautres applications en plus dAppleScript, aussi pour accder la version dAppleScript lintrieur dune instruction Tell dune autre application, vous devrez utiliser la phrase AppleScripts version ou version of AppleScript :
tell application "AppleWorks" version --rsultat : "5.0v1" (version dAppleWorks) if (AppleScripts version as string) "1.3.4" then (*excution des oprations si la version dAppleScript *)est suprieure ou gale 1.3.4 end if end tell

Pour une description de la variable globale AppleScript, voir Les proprits dAppleScript (T4 - p.20). Le script suivant vrifie que la version du Finder est 8.5 ou suprieure, et affiche un message dalerte en cas de version infrieure.
tell application "Finder" set theVersion to (get the version) as number if version is less than 8.5 then beep display dialog "Ce script requiert Mac OS 8.5 ou plus." buttons {"Cancel"} default button 1 with icon 0 end if end tell

T1 - 85

Les constantes

Tome 2

Les Commandes

Chapitre 1

Tome 2

Introduction
Une commande est un mot ou une srie de mots utiliss dans les instructions AppleScript pour demander une action. Chaque commande est adresse une cible ou un objet qui rpond la commande. La cible est gnralement un objet dapplication, mais il peut aussi tre un script-objet ou une routine dfinie par lutilisateur ou une valeur dfinie dans le script. Toutes les commandes ne peuvent pas tre utilises avec toutes sortes de cible. Quand vous utilisez une commande pour demander une action, vous devez choisir une commande compatible avec la cible que vous souhaitez manipuler. Vous devez aussi tre sr de spcifier la cible correctement. Plusieurs facteurs, y compris le paramtre direct que vous fournissez avec une commande, et y compris si la commande est insre ou non lintrieur dune instruction Tell, peuvent dterminer la cible dune commande. Les commandes sont dcrites dans les chapitres suivants : Les types de commandes (T2 - p.7) dcrit les types de commande utiliss avec AppleScript. Il prsente aussi les cibles des commandes, et rsume, quels types de commande travaillent avec quels types de cible. Utilisation des dfinitions de commandes (T2 - p.13) dcrit les diffrentes sections des dfinitions de commande et leurs utilisations. Utilisation des paramtres (T2 - p.17) dcrit comment contraindre des paramtres, comment utiliser des paramtres qui spcifient des emplacements, et comment soccuper des donnes brutes (raw data) dans les paramtres. Utilisation des rsultats (T2 - p.20) dcrit comment visualiser les valeurs gnres par les commandes AppleScript et comment utiliser la variable prdfinie result. Les Chevrons dans les rsultats et les scripts (T2 - p.23) explique ce que signifie la prsence des chevrons ( ) dans un script ou un rsultat. Les dfinitions de commandes (T2 - p.29) fournit les descriptions dtailles des cinq commandes AppleScript et de certaines commandes standards dapplication.

T2 - 6

Introduction

Chapitre 2

Tome 2

Les types de commandes

Il existe quatre types diffrents de commandes que vous pouvez utiliser dans AppleScript pour demander des actions: les commandes dapplication (T2 - p.7) les commandes AppleScript (T2 - p.9) les commandes des complments de pilotage (T2 - p.9) les commandes dfinies par lutilisateur (T2 - p.12) Ce chapitre fournit les descriptions dtailles de toutes les commandes AppleScript et de plusieurs commandes standards dapplication. Il fournit, galement, un bref aperu des commandes dfinies par lutilisateur et des rfrences pour des informations complmentaires sur ce type de commandes. Chaque fois que vous utilisez une commande, vous indiquez la cible, ou le bnficiaire, de la commande. Les cibles potentielles comprennent les objets dapplication, les scripts-objets, le script et lapplication en-cours. Dans certains cas, vous spcifiez explicitement la cible en lintgrant lintrieur dune instruction Tell ou en la dsignant comme un paramtre direct. Dans les autres cas, vous la spcifiez implicitement.

Les commandes dapplication


Les commandes dapplication sont des commandes qui dclenchent des actions dans les applications pilotables. La cible dune commande dapplication est un objet dapplication ou un script-objet. Les diffrents objets dune application rpondent diffrentes commandes. Vous pouvez dterminer les commandes supportes par une application en examinant son dictionnaire. Vous pouvez visualiser un dictionnaire dune application soit en dposant licone de lapplication sur lditeur de scripts, soit en ouvrant le dictionnaire depuis le menu Ouvrir un dictionnaire... du menu Fichier de lditeur de scripts.

Les types de commandes

T2 - 7

Chapitre 2

Tome 2

Il existe deux faons de spcifier un objet, par exemple, comme la cible dune commande, soit dans le paramtre direct de la commande, soit dans une instruction Tell qui contient la commande. Le paramtre direct est une valeur, gnralement une rfrence, qui apparat immdiatement aprs une commande et qui indique la cible de la commande. Toutes les commandes nont pas de paramtre direct. Si une commande peut avoir un paramtre direct, la dfinition de cette commande lindiquera. Par exemple, dans linstruction suivante, la rfrence last file of window 1 of application "Finder" est le paramtre direct de la commande Duplicate :
duplicate last file of window 1 of application "Finder"

Une instruction Tell est une instruction qui spcifie une cible par dfaut pour toutes les commandes contenues lintrieur de sa structure. Si une commande est contenue dans une instruction Tell, le paramtre direct est optionnel. Si vous ngligez le paramtre direct, AppleScript utilise la cible par dfaut indique par linstruction Tell. Par exemple, la commande Duplicate de linstruction Tell suivante a le mme effet que la commande Duplicate de lexemple prcdent :
tell last file of window 1 of application "Finder" duplicate end tell

De la mme faon, si vous spcifiez une rfrence incomplte dans la ligne de commande, AppleScript utilise la cible par dfaut, indique par linstruction Tell, pour complter la rfrence. Par exemple, linstruction suivante est quivalente aux deux exemples prcdents :
tell window 1 of application "Finder" duplicate last file end tell

Noubliez pas que vous pouvez crire vos scripts dans un anglais plus correct, si vous le souhaitez. Par exemple, linstruction suivante est la mme, syntaxiquement, que la premire instruction Duplicate indique ci-dessus :
duplicate the last file of the first window of application "Finder"

T2 - 8

Les types de commandes

Chapitre 2

Tome 2

Les commandes AppleScript


Les commandes AppleScript sont des commandes intgres au langage AppleScript. Elles agissent sur des valeurs dans les scripts. La cible dune commande AppleScript est une valeur dans le script courant, elle est gnralement spcifie dans le paramtre direct de la commande. Il ny a que cinq commandes AppleScript : Get, Set, Count, Copy et Run. Toutes ces commandes, excepte la commande Copy, peuvent aussi fonctionner comme des commandes dapplication. Pour les commandes Count, Get, Run, et Set, si le paramtre direct est une valeur, alors la commande fonctionne comme une commande AppleScript, si le paramtre direct est un objet dapplication, la commande fonctionne comme une commande dapplication. Par exemple, la commande Count suivante fonctionne comme une commande AppleScript car le paramtre direct est une valeur (une liste) :
count {"How", "many", "items", "in", "this", "list"}

La commande Count suivante fonctionne comme une dapplication car le paramtre direct est un objet dapplication :

commande

count the files in the first window of application "Finder"

Pour plus dexemples sur lutilisation des commandes Get, Set, Count, Copy et Run, voir le chapitre Les dfinitions de commandes (T2 - p.29).

Les commandes des complments de pilotage


Les complments de pilotage sont des fichiers qui fournissent des commandes supplmentaires que vous pouvez utiliser dans les scripts. Chaque complment de pilotage peut contenir un ou plusieurs gestionnaires de commandes. Si un complment de pilotage est localis dans le dossier Complments de pilotage (dans le Dossier Systme), les gestionnaires de commandes quil fournit sont disponibles pour tre utiliss dans nimporte quel script dont la cible est une application sur cet ordinateur.

Les types de commandes

T2 - 9

Chapitre 2

Tome 2

Les commandes fournies, avec AppleScript, dans le complment de pilotage Complments standards sont dcrites dans AppleScript Scripting Additions Guide version anglaise uniquement.

La cible

Comme la cible dune commande dapplication, la cible dune commande de complment de pilotage est toujours un objet dapplication ou un script-objet. Si le script ne spcifie pas expliciquement la cible avec une instruction Tell, AppleScript envoie la commande lapplication cible par dfaut, en gnral lapplication excutant le script (par exemple, lditeur de scripts). Une commande de complment de pilotage naccomplit ses actions quune fois la commande reue par lapplication cible. la diffrence des commandes dapplication, les commandes de complment de pilotage travaillent toujours de la mme manire quelle que soit lapplication laquelle les commandes sont envoyes. Par exemple, la commande du complment standard Display Dialog affiche une bote de dialogue qui peut comporter du texte, un ou plusieurs boutons, un icone, et une zone de texte modifiable dans laquelle lutilisateur peut saisir un texte. Dans le script qui suit, la cible de la commande Display Dialog est lapplication Finder. Quand le script tourne, le Finder passe la commande au gestionnaire du complment de pilotage pour la commande Display Dialog, lequel affiche la bote de dialogue. Dans ce cas l, le temps de lexcution du script, le Finder devient lapplication active.
tell application "Finder" display dialog "Quel est ton nom ?" end tell

Dans lexemple suivant, la commande Display Dialog nest pas insre dans une instruction Tell, par consquent elle na pas de paramtre direct, aussi sa cible est lditeur de scripts ( ou nimporte quelle application qui excute le script). Quand vous excutez ce script, lditeur de script passe la commande au gestionnaire du complment de pilotage pour la commande Display Dialog, lequel affiche la bote de dialogue au niveau de lditeur de scripts (cest dire, par dessus nimporte quelle fentre de lditeur de scripts qui pourrait tre ouverte), alors que lditeur de scripts est encore lapplication active.

T2 - 10

Les types de commandes

Chapitre 2

Tome 2

set leCompteur to number of files in front window of application "Finder" if leCompteur < 500 then display dialog "Vous navez pas encore dpass la" & " limite." end if

Si vous spcifiez un script-objet comme cible dune commande de complment de pilotage, le script-objet soit manipule la commande elle-mme (potentiellement en la modifiant), soit passe la commande lapplication cible par dfaut. Pour plus dinformations sur les complments de pilotage et les scripts-objets, voir Utiliser linstruction Continue pour transmettre des commandes aux applications (T7 - p.24).

Les conflits de nom

Chaque complment de pilotage qui contient des gestionnaires de commandes a son propre dictionnaire, lequel numre les mots rservs y compris les noms de commande, les tiquettes de paramtre, et dans certains cas les noms dobjet utiliss pour dfinir les commandes supportes par le complment de pilotage. Si un dictionnaire de complment de pilotage inclut des mots qui font aussi partie du dictionnaire dune application, alors vous ne pouvez pas utiliser les mots du dictionnaire du complment de pilotage lintrieur des instructions Tell de cette application. Important Chaque gestionnaire dvnement, ou chaque dfinition de classe, ou mme chaque numration qui est dfinie dans le dictionnaire dun complment de pilotage est globale AppleScript. Si un terme commun, comme Search (ou nimporte quel autre terme), est utilis dans un complment de pilotage, lors dun conflit avec une application pilotable, comportant galement ce mme terme, la priorit est donne au complment de pilotage. Si vous avez des problmes lors de lutilisation dun terme avec une application, vrifiez si ce terme nest pas dj utilis dans un complment de pilotage et, si ncessaire, dplacer ce complment de pilotage hors du dossier idoine qui leur est consacr et relancer lditeur de scripts. Pour la gestion de vos complments de pilotage, vous pouvez utiliser le Gestionnaire dOSAX, freeware crit intgralement en langage AppleScript et disponible ladresse suivante : <http://homepage.mac.com/danva/>

Les types de commandes

T2 - 11

Chapitre 2

Tome 2

Les commandes dfinies par lutilisateur


Les commandes dfinies par lutilisateur sont des commandes qui dclenchent lexcution dune collection dinstructions, appeles routines, ailleurs dans le mme script. La cible dune commande dfinie par lutilisateur est le script courant, cest dire, le script partir duquel la commande est excute. Il existe deux faons de spcifier le script courant comme la cible dune commande dfinie par lutilisateur. En dehors dune structure Tell, utiliser simplement la commande pour spcifier le script courant comme sa cible. Par exemple, supposons que valeurMinimale est une commande dfinie par lutilisateur dans le script courant. Le gestionnaire pour la commande valeurMinimale est une routine qui retourne de deux valeurs la plus petite. La cible de la commande valeurMinimale dans lexemple suivant est le script courant :
set monNombre to valeurMinimale(12,105)

A lintrieur dune instruction Tell, utiliser les mots of me, ou my pour indiquer que la cible de la commande est le script courant et non la cible par dfaut de linstruction Tell. Par exemple, lextrait de script suivant montre comment appeler la routine valeurMinimale lintrieur dune instruction Tell :
tell application "Finder" set nombreFichiers to count files in front window set monNombre to my valeurMinimale (nombreFichiers, 100) --fait quelquechose en fonction de la valeur retourne end tell

Sans le mot my avant la commande valeurMinimale, AppleScript enverrait la commande valeurMinimale au Finder et il en rsulterait une erreur. Les gestionnaires (T6 - p.6) dcrit dans le dtail la syntaxe pour dfinir et appeler les routines comme valeurMinimale. Note Vous pouvez aussi dfinir les routines dans les scripts-objets. La cible dune commande dfinie par lutilisateur dont la routine est dfinie dans un scriptobjet est le script-objet. Pour plus dinformations sur les scripts-objets, voir le T7 - p.6. x

T2 - 12

Les types de commandes

Chapitre 3

Tome 2

Utilisation des dfinitions de commande

Chacune des dfinitions de commande de ce chapitre fournit des informations sur ce que fait une commande et comment lutiliser dans un script. Linformation est divise selon les sections suivantes : Syntaxe Paramtres Rsultat Exemples De plus, certaines dfinitions de commande donnent des informations sur les messages derreur.

Syntaxe
Chaque dfinition de commande commence par une description de la syntaxe, la syntaxe est un gabarit pour lutilisation de la commande dans une instruction. La section Syntaxe respecte la mme convention typographique que celle dcrite dans la section Conventions en dbut de guide. Pour crer une instruction de commande Move (T2 - p.50) description de la syntaxe indique pour cette commande, remplacer referenceToObject par une rfrence lobjet referenceToLocation par une rfrence lemplacement vers souhaitez le dplacer. Par exemple : partir de la vous devez dplacer et lequel vous

move file "Bob" of startup disk to folder "Joe" of startup disk

Le terme startup disk est dcrit dans Visualiser un rsultat dans la fentre rsultat de lditeur de scripts (T2 - p.20). Les rfrences sont dcrites dans Les objets et les rfrences (T3 - p.6). Lusage du caractre de continuation () dans une description de syntaxe

Utilisation des dfinitions de commandes

T2 - 13

Chapitre 3

Tome 2

indique que llment suivant de langage doit tre plac sur la mme ligne que llment prcdent. Le caractre de continuation, lui-mme, nest pas indispensable dans la syntaxe il est simplement un mcanisme permettant dcrire une instruction sur plusieurs lignes.

Paramtres
Les paramtres sont des valeurs qui sont incluses avec une commande. La section Paramtres dune dfinition de commande numre les paramtres dune commande particulire et les informations dont vous avez besoin pour les utiliser correctement. La plupart des commandes comportent un paramtre direct qui indique lobjet de laction. Si une commande comporte des paramtres autres que le paramtre direct, ils sont identifis par des tiquettes. Les paramtres qui sont identifis par des tiquettes sont appels des paramtres tiquets. Le paramtre direct suit immdiatement la commande ; les paramtres tiquets peuvent tre numrs dans nimporte quel ordre. Lexemple suivant est la syntaxe de la commande Move (T2 - p.50) :
move referenceToObject to referenceToLocation

La commande Move a un paramtre direct (referenceToObject) qui indique lobjet dplacer et un paramtre tiquet (referenceToLocation dont ltiquette est to) qui indique lemplacement o dplacer lobjet. Une instruction Move ressemblera ce qui suit :
move currentReport to ReportFolder

Chaque valeur de paramtre doit appartenir une classe particulire, laquelle est liste dans la description de la commande. Pour la commande Move, le paramtre direct appartient la classe Reference. Sa valeur, une rfrence, est une phrase qui identifie lobjet qui doit tre dplac. Le paramtre to appartient aussi la classe Reference. Il indique lemplacement vers lequel dplacer lobjet. Les rfrences sont dcrites dans Les objets et les rfrences (T3 - p.6). Les paramtres peuvent tre obligatoires ou optionnels. Les paramtres obligatoires doivent tre inclus avec la commande ; les paramtres optionnels nont pas besoin de ltre. Les paramtres optionnels sont mis

T2 - 14

Utilisation des dfinitions de commandes

Chapitre 3

Tome 2

entre crochets dans la descritpion de la syntaxe. Pour les paramtres optionnels, la description de la section Paramtres indique une valeur par dfaut qui est utilise si vous nindiquez rien. Pour plus dinformations sur les paramtres directs, voir Les commandes dapplication (T2 - p.7). Pour plus dinformations sur lutilisation des paramtres, voir Utilisation des paramtres (T2 - p.17).

Rsultat
Beaucoup de commandes , mais pas toutes, retournent des rsultats. Le rsultat dune commande est la valeur gnre quand la commande est excute. La section Rsultat dune dfinition de commande indique si un rsultat est retourn, et si oui, liste sa classe. Par exemple, le rsultat de la commande Count (T2 - p.36) est une valeur Integer qui indique le nombre dlments dnombrs pour une classe spcifie. Pour plus dinformations sur les rsultats, voir Utilisation des rsultats (T2 - p.20).

Exemples
Chaque dfinition de commande comporte un ou plusieurs petits exemples montrant comment utiliser la commande.

Erreurs
Les commandes peuvent retourner des messages derreur aussi bien que des rsultats. Un message derreur est un message qui est retourn par une application, par AppleScript, ou par le Systme si une erreur se produit durant la gestion dune commande. La section Erreurs dune dfinition de commande, si elle est prsente, liste les erreurs probables qui sont retournes par une commande particulire. Cette information peut vous aider si vous avez besoin dcrire des gestionnaires derreur pour rpondre aux messages derreur qui peuvent tre retourns. Les gestionnaires derreur sont dcrits dans Les gestionnaires (T6 -p.6). Quelques erreurs ne sont pas le rsultat de conditions anormales mais sont la
Utilisation des dfinitions de commandes T2 - 15

Chapitre 3

Tome 2

voie normale pour obtenir des informations sur ce qui sest pass durant lexcution de la commande. Par exemple, vous utiliserez la commande Choose File du complment standard pour demander lutilisateur de choisir un fichier. Quand AppleScript excute cette commande, il affiche une bote de dialogue identique celle que vous obtenez quand vous choisissez le menu Ouvrir du menu Fichier. Si lutilisateur clique sur le bouton Annuler dans la bote de dialogue, AppleScript retourne une erreur numro -128 et la chane de caractres derreur "Annul par lutilisateur.". Votre script devra grer cette erreur pour que lexcution du script puisse continuer. Pour une complte description de la gestion des erreurs qui se produisent durant lexcution dun script, voir Les Gestionnaires (T6 -p.6).

T2 - 16

Utilisation des dfinitions de commandes

Chapitre 4

Tome 2

Utilisation des paramtres

Les sections suivantes donne des informations pour travailler avec les paramtres : Les coercitions de paramtres (T2 - p.17) dcrit les mthodes utilises pour la conversion dun paramtre dune classe dans une autre. Les paramtres qui spcifient des emplacements (T2 - p.18) dcrit les situations dans lesquelles une commande utilise un paramtre pour spcifier linsertion ou le remplacement de donnes. Les donnes brutes (raw data) dans les paramtres (T2 - p.19) dcrit comment AppleScript affiche les donnes qui nappartiennent aucune des classes de valeur basiques.

Les coercitions de paramtres


Si un paramtre nappartient pas la bonne classe, il peut tre possible de le contraindre, cest dire, de le transformer en une valeur dune autre classe. Par exemple, vous pouvez contraindre un entier comme 2 en chane de caractres correspondante "2" en utilisant loprateur As :
2 as string -- rsultat : "2"

AppleScript excute quelques coercitions, y compris celle ci-dessus, automatiquement. Par exemple, linstruction suivante utilise la commande Copy pour rgler le nom dun dossier :
tell application "Finder" copy 12 to name of folder 1 of disk "Ram disk" end tell

Comme un nom de dossier est obligatoirement une chane de caractres, le paramtre direct de la commande Copy devra aussi tre une chane de caractres. Quand AppleScript excute ce script, il contraint automatiquement lentier 12 en une chane de caractres "12" et utilise cette

Utilisation des paramtres

T2 - 17

Chapitre 4

Tome 2

chane de caractres pour rgler le nom du premier dossier. Les coercitions quAppleScript peut excuter sont numres dans le T1 p.24. Les applications peuvent aussi excuter des coercitions supplmentaires, comme les coercitions pour les classes qui sont spcifiques une application. Ces coercitions sont numres dans la documentation de lapplication. Les complments de pilotage peuvent aussi excuter des coercitions.

Les paramtres qui spcifient des emplacements


Plusieurs commandes ont des paramtres qui spcifient des emplacements. Un emplacement peut tre un point dinsertion ou un autre objet. Un point dinsertion est un emplacement o un objet peut tre ajout. Un objet, quand il est utilis comme un paramtre demplacement, est un objet qui doit tre remplac par un autre objet. Par exemple, dans linstruction suivante, le paramtre to spcifie lemplacement vers lequel le premier mot doit tre dplac. La valeur du paramtre to de la commande Move est la rfrence before word 10 of text body, laquelle est un point dinsertion.
tell front document of application "AppleWorks" move word 1 of text body to before word 10 of text body end tell

Lexemple suivant obtient la rfrence dun texte slectionn dans un document, puis il remplace le texte slectionn par le premier mot du document. La valeur du paramtre to de la commande Move est un objet, selectedText, lequel est remplac par word 1 :
tell application "AppleWorks" tell document "Simple" set selectedText to selection move word 1 of text body to selectedText end tell end tell

Les phrases comme word 1 et before word 10 sont appeles respectivement rfrence Index et rfrence Relative. Ces types de rfrence spcifient des emplacements. Pour plus dinformations sur les types de rfrence, voir Les objets et les rfrences (T3 - p.6).

T2 - 18

Utilisation des paramtres

Chapitre 4

Tome 2

Les donnes brutes (raw data) dans les paramtres


Certaines commandes dapplication retournent des valeurs qui nappartiennent aucune des classes de valeur normales dAppleScript. Par exemple, la commande Edit Graphic, supporte par certaines applications graphiques, retourne des valeurs qui appartiennent la classe de valeur Data, dcrite dans le T1 - p.35. Dans sa fentre de rsultat, lditeur de scripts affiche les valeurs de la classe Data entre des chevrons ( ). Vous pouvez stocker de telles donnes dans des variables et les envoyer comme paramtres dautres commandes. Par exemple, sil est ncessaire dutiliser deux applications diffrentes pour diter un graphique, vous pouvez envoyer la valeur retourne par la premire commande Edit Graphic, en donnes brutes, comme paramtre direct lautre commande Edit Graphic. Lditeur de scripts affiche aussi les valeurs Unicode Text dans la fentre rsultat sous forme de donnes brutes. Lexemple suivant montre comment la chane "Hello" est affiche comme valeur Unicode Text :
set myString to "Hello" as Unicode text -- rsultat : data utxt00680065006C006C006F

Si une application retourne des valeurs de la classe Data, sa documentation devrait lindiquer. Pour plus dinformations sur les autres places o AppleScript utilise des chevrons, voir Les Chevrons dans les rsultats et les scripts (T2 - p.23). Pour plus dinformations sur la classe de valeur Unicode Text, voir T1 - p.68.

Utilisation des paramtres

T2 - 19

Chapitre 5

Tome 2

Utilisation des rsultats

Les sections suivantes dcrivent comment travailler avec les rsultats gnrs par AppleScript lors de lexcution dune commande : Visualiser un rsultat dans la fentre rsultat de lditeur de scripts (T2 p.20) Utiliser la variable prdfinie result (T2 - p.21) Pour des informations apparentes, voir Linstruction Return (T6 - p.8).

Visualiser un rsultat dans la fentre rsultat de lditeur de scripts


Le rsultat dune commande est la valeur gnre quand la commande est excute. Vous pouvez visualiser le rsultat dune commande, dans lditeur de scripts, en utilisant le menu Afficher le rsultat de son menu Commandes pour ouvrir la fentre rsultat. Par exemple, si vous lancez le script suivant,
tell application "Finder" duplicate folder "Complments Apple" of startup disk end tell

et que vous choisissiez alors le menu Afficher le rsultat de lditeur de scripts, vous verriez une valeur similaire
folder "Complments Apple copie" of disk "Disque Dur" of application "Finder"

Le terme startup disk est un des multiples noms de disque et de dossier particuliers que le Finder connat bien. Ceux-ci incluent apple menu items folder (Dossier Menu Pomme), control panels folder (Dossier Tableaux de Bords), desktop (Bureau), extensions folder (Dossier Extensions), fonts folder (Dossier Polices), preferences folder (Dossier Prfrences), startup disk (Disque de dmarrage), et system folder (Dossier Systme). Vous pourrez en apprendre plus sur le pilotage du Finder
T2 - 20 Utilisation des rsultats

Chapitre 5

Tome 2

dans le Centre daide Mac OS. Certaines commandes retournent un rsultat sous forme de valeur. Par exemple, la commande Count, dans linstruction suivante, retourne une valeur : le nombre de fichiers (non-compris les dossiers ou les fichiers contenus dans les dossiers) dans le dossier indiqu.
tell application "Finder" count files in folder "Complments Apple" of startup disk end tell

Vous pouvez utiliser cette instruction partout o une valeur est requise, en mettant linstruction entre parenthses. Par exemple, linstruction suivante rgle la valeur de numFiles sur la valeur retourne par la commande Count.
tell application "Finder" set numFiles to (count files in folder "Complments Apple" of startup disk) end tell

Pour plus dinformations sur comment utiliser lditeur de scripts, voir la section AppleScript du Centre daide Mac OS.

Utiliser la variable prdfinie result


En plus dafficher le rsultat dune commande dans la fentre rsultat, AppleScript met le rsultat dans une variable prdfinie appele result. La valeur reste stocke jusqu ce que la commande suivante soit excute. Si la commande suivante ne retourne pas un rsultat, la valeur de result est indfinie. Les deux commandes suivantes montrent comment utiliser la variable result pour rgler la valeur de numFiles sur la valeur retourne par la commande Count :
tell application "Finder" count files in folder "Complments Apple" of startup disk set numFiles to result end tell

Utilisation des rsultats

T2 - 21

Chapitre 5

Tome 2

Quand un paramtre direct spcifie plus quun objet, le rsultat est une liste qui contient une valeur pour chaque objet gr. Voici un exemple, une commande dont le rsultat est une liste :
tell application "Finder" get name of every file in folder "Complments Apple" of startup disk end tell

Le rsultat est une liste de chanes de caractres, une pour chaque fichier (non-compris les dossiers ou les fichiers contenus dans des dossiers). Suivant le contenu du dossier Complments Apple, la liste ressemblera en gros ce qui suit :
{"Enregistrement Apple", "Son"}

La premire chane de caracres est le nom du premier fichier, la seconde chane est le nom du second fichier du dossier Complments Apple.

T2 - 22

Utilisation des rsultats

Chapitre 6

Tome 2

Les Chevrons dans les rsultats et les scripts

Quand vous saisissez des instructions dans un script, dans la fentre de lditeur de scripts, AppleScript est capable de compiler le script, car les termes utiliss sont dcrits, soit dans la terminologie intgre au langage AppleScript, ou, soit dans le dictionnaire de lapplication pilotable ou du complment de pilotage disponible. Quand AppleScript compile votre script, il le convertit dans un format interne excutable. Quand vous ouvrez, compilez, ditez, ou excutez des scripts avec lditeur de scripts, vous pouvez occasionnellement voir des termes entre chevrons ( ), dans la fentre de lditeur de scripts ou dans sa fentre rsultat. Par exemple, vous pouvez voir le terme event sysodlog comme partie dun script. Vous verrez du texte entre chevrons pour une de ces trois raisons : AppleScript ne peut pas reformater un terme dans la fentre de lditeur de scripts car le terme ne fait pas partie du langage AppleScript et aucun dictionnaire qui dfinit ce terme nest disponible. Cette situation est dcrite dans Quand un dictionnaire nest pas disponible (T2 - p.23). AppleScript ne peut pas afficher les donnes dans le format natif des donnes dans la fentre rsultat. Cette situation est dcrite dans Quand AppleScript affiche les donnes en format brut (raw) (T2 - p.25). Vous saisissez intentionnellement des chevrons (en appuyant sur option + et maj. + option + ) (Avec un clavier franais. Pour dautres claviers, utilisez lutilitaire Clavier ou le freeware PopChar Lite). Cette situation est dcrite dans Saisir les informations dun script en format brut (raw) (T2 p.26).

Quand un dictionnaire nest pas disponible


AppleScript utilise les chevrons dans un script, quand il ne peut pas identifier un terme ou quand il ne peut pas afficher une valeur dans son format dorigine. Le premier mot lintrieur des chevrons peut tre nimporte lequel des mots suivants : event, property, class, data, preposition,

Les Chevrons dans les rsultats et les scripts

T2 - 23

Chapitre 6

Tome 2

keyform, constant, ou script. Le second mot varie suivant le contexte.

AppleScript ne peut pas afficher un terme sil ne fait pas partie du langage AppleScript et sil nest pas dfini dans un dictionnaire dapplication ou de complment de pilotage disponible quand le script est ouvert ou compil. Cela arrive gnralement pour une de ces deux raisons : Le dictionnaire de lapplication ou du complment de pilotage requis nest pas physiquement prsent quand le script est ouvert ou compil (peut-tre parce que le script a t compil sur une machine et ouvert sur une autre). Le dictionnaire de lapplication ou du complment de pilotage requis est disponible, mais ne supporte pas un terme utilis dans le script (probablement parce que le dictionnaire est obtenu partir dune version trop ancienne de lapplication ou du complment). Comme exemple de dictionnaire absent ; supposons que vous criez un script qui utilise la commande Display dialog, vous ouvrez ce script alors que le complment de pilotage Complments standard (lequel inclut la commande Display dialog) nest pas prsent. AppleScript remplace les mots display dialog, dans le script, par event sysodlog. Dans ce cas, vous devez tre sr que le complment de pilotage Complments standard est prsent dans le dossier Complments de pilotage (localis dans le Dossier Systme) avant dessayer de compiler ou dexcuter le script. Comme exemple de terme absent ; supposons que vous criez le script suivant, lequel utilise la commande Delay du complment de pilotage Complments standard, disponible uniquement depuis Mac OS 8.5 :
display dialog "Prt pour tester votre patience ?" set myDate to current date delay 4 display dialog "4 secondes de retard avec " & (time string of myDate) & "."

Ce script affiche un premier dialogue, attend que lutilisateur le renvoie, le script retarde alors de 4 secondes laffichage du second dialogue qui indique lheure courante. Si vous compilez ce script sur une machine tournant avec Mac OS 8.5 puis que vous louvrez sur une machine tournant avec Mac OS 8.1, lditeur de scripts affichera ceci :
display dialog "Prt pour tester votre patience ?"

T2 - 24

Les Chevrons dans les rsultats et les scripts

Chapitre 6

Tome 2

set myDate to current date event sysodela 4 display dialog "4 secondes de retard sur " & (time string of myDate) & "."

AppleScript convertit le terme delay en event sysodela car la commande Delay nest pas disponible avec Mac OS 8.1. Sans le terme Delay disponible dans un dictionnaire, AppleScript na pas de terme en langage courant afficher. Le script compile, mais ne sexcute pas correctement sur la machine avec Mac OS 8.1 car la commande Delay nest pas disponible. Si vous enregistrez le script compil, le dplacez vers une machine avec Mac OS 8.5, il sexcutera correctement. Si vous recompilez le script sur la machine avec 8.5, AppleScript reconvertit event sysodela en delay. Pour des informations apparentes, voir Saisir les informations dun script en format brut (raw) (T2 - p.26).

Quand AppleScript affiche les donnes en format brut (raw)


Les chevrons peuvent aussi tre prsents dans les rsultats. Par exemple, si la valeur dune variable est un script-objet nomm Joe, AppleScript reprsente le script-objet comme ci-dessous :
script Joe property theCount : 0 end script set x to Joe x -- rsultat : script Joe

Pour plus dinformations propos des scripts-objets, voir T7 - p.6. De mme, si la valeur dune variable est de la classe de valeur Data et que lditeur de scripts ne peut pas afficher les donnes directement dans leur format natif, il utilise les chevrons pour encadrer ensemble le mot data et une squence de valeurs numriques reprsentant les donnes.
"Hello" as Unicode text -- rsultat : data utxt00680065006C006C006F

Bien que cette faon de faire ne permette pas de visualiser rellement les

Les Chevrons dans les rsultats et les scripts

T2 - 25

Chapitre 6

Tome 2

donnes, le format dorigine des donnes est prserv. Vous pouvez traiter les donnes comme nimporte quelle autre valeur, except que vous ne pouvez pas les visualiser directement dans leur format dorigine dans la fentre de lditeur de scripts.

Saisir les informations dun script en format brut (raw)


Vous pouvez saisir des chevrons ( ) directement dans un script en appuyant simultanment sur Option + () et Maj. + Option + () (Avec un clavier franais. Pour dautres claviers, utilisez lutilitaire Clavier ou le freeware PopChar Lite). Vous pouvez tre amen le faire pour plusieurs raisons : Vous crez un script chez vous, pour lutiliser sur lordinateur de votre lieu de travail qui fonctionne avec une version plus rcente de Mac OS ou de lapplication pilotable ou du complment de pilotage. Tir de lexemple de Quand un dictionnaire nest pas disponible (T2 - p.23), supposons que vous vouliez utiliser la commande Delay du Complments standard, mais que votre ordinanteur fonctionne sous Mac OS 8, lequel ne supporte pas cette commande. Chez vous, vous pouvez crire event sysodela 4 dans votre script. Quand vous ouvrirez le script sur votre lieu de travail, AppleScript convertira le terme en delay 4 . Le problme avec cette approche est que vous ne pouvez pas vrifier la validit de votre script tant que vous ne lavez pas essay sur lordinateur final. Vous savez quune application supporte un certain Apple Event mais elle ne fournit pas la terminologie pour cet event dans son dictionnaire. Par exemple, si vous tes un dveloppeur crant une application pilotable, vous pouvez vouloir tester une caractristique que vous avez ajoute au code mais pas encore ajoute dans le dictionnaire de lapplication. Vous pouvez aussi utiliser AppleScript pour insrer des chevrons dans un script, en utilisant le pas pas suivant : 1. Crez un script en utilisant les termes standards dune application ou dun complment de pilotage disponible. 2. Enregistrez le script dans un format compil (script compil, scriptapplication) et quittez lditeur de scripts.

T2 - 26

Les Chevrons dans les rsultats et les scripts

Chapitre 6

Tome 2

3. Sauvegardez lapplication ayant servi lcriture du script sur un autre support ou sous forme darchive. Supprimez loriginal. Le but tant quAppleScript ne puisse pas lire le dictionnaire. Pour le complment de pilotage, vous avez juste le dplacer du dossier Complments de pilotage vers un autre emplacement sur votre disque dur. 4. Ouvrez de nouveau votre script et compilez le. 5. Quand AppleScript vous demande de localiser lapplication, choisissez un fichier qui ne contient pas cette terminologie. Le script compilera avec succs, mais lditeur de scripts affichera le script avec des termes entre chevrons, ceux pour lesquels lditeur de scripts na pas obtenu le dictionnaire demand. Pour compiler de nouveau le script et fournir le bon dictionnaire, il suffit de rinstaller lapplication. Pour le complment de pilotage, il suffit de le remettre dans le dossier Complments de pilotage. chaque compilation, AppleScript rafrachit sa liste de complments de pilotage. Il y a plusieurs situations pour lesquelles vous pouvez souhaiter la recompilation dun script : Vous crez un script qui visera une application sur un ordinateur distant. AppleScript nautorise pas actuellement la compilation dun script avec le dictionnaire de lapplication ou du complment de pilotage sur un ordinateur distant ( partir de AS 1.4 (OS 9.0), de nouvelles possibilits sont apparues. Veuillez consulter la documentation ce sujet comme <http://devworld.apple.com/technotes/tn/tn1176.html#applescript>). Si vous compilez en utilisant une copie locale de lapplication, vous nallez pas seulement utilis son dictionnaire (lequel peut tre le mme que celui de lapplication distante), mais vous allez aussi crer une rfrence cette application locale dans votre script. Toutefois, vous pouvez crire et compiler le script avec la version locale de lapplication, insrer des chevrons comme dcrit plus haut afin que la cible du script ne soit pas lapplication locale, puis saisir la rfrence lapplication distante. Pour plus dinformations sur les rfrences dapplication distante, voir Les rfrences aux applications distantes (T3 - p.45). Vous voulez une instruction Tell avec une instruction Repeat sur des lments se trouvant sur une machine distante. Comme dcrit

Les Chevrons dans les rsultats et les scripts

T2 - 27

Chapitre 6

Tome 2

prcdemment, vous pouvez compiler votre script en utilisant une copie locale de lapplication, insrer des chevrons, puis saisir la rfrence la machine distante.

Envoi dApple Events bruts partir dun script


La section Saisir les informations dun script en format brut (raw) (T2 p.26) dcrit comment vous pouvez utiliser les chevrons pour saisir des informations au format brut (raw) directement dans un script. En utilisant les chevrons, vous pouvez saisir directement un terme comme event sysodlog (quivalent la commande Display Dialog) dans un script. Si la commande Display dialog est disponible, AppleScript convertira event sysodlog en display dialog quand vous compilerez le script. Le terme event sysodlog est actuellement la forme brute dun Apple Event avec comme classe event syso et classe ID dlog. Vous pouvez utiliser la syntaxe brute pour saisir et excuter des Events quand il ny a pas de dictionnaire pour les supporter. Toutefois, ce guide ne fournit pas de documentation dtaille sur la syntaxe brute.

T2 - 28

Les Chevrons dans les rsultats et les scripts

Chapitre 7

Tome 2

Les dfinitions de commandes

Le chapitre qui suit prsente les commandes AppleScript et quelques commandes standards dapplication, classes par ordre alphabtique. Les caractristiques gnrales de ces types de commandes sont dcrites dans Les types de commandes (T2 - p.7). Le type de commande de chaque dfinition de commande est indique brivement au dbut de chaque dfinition. Les commandes dapplication dfinies dans ce chapitre sont les commandes standards supportes par la plupart des applications pilotables. Leurs dfinitions dcrivent comment elles travaillent avec les applications pilotables les supportant. Certaines applications peuvent tendre ou modifier la faon de travailler de ces commandes dapplication. Les dictionnaires dapplication listent les commandes dapplication par suite. Chaque suite dfinit la structure des Apple Events (dfinitions de classe dobjet, types de descripteur, et plus) requis pour lexcution de certaines activits de pilotage. Les diffrentes catgories de suites comprennent Standard suite, Internet suite, Text suite, etc... Diffrentes applications peuvent supporter diffrentes commandes de la Standard suite, mais toutes les applications supportent les commandes Open, Print, Quit, Run et Reopen, elles taient autrefois dans une suite spare, Required suite.
Note

Si une application supporte juste les cinq commandes nommes ci-dessus, elle nest pas considre pilotable et elle na pas besoin davoir un dictionnaire. Si elle supporte ces cinqs commandes de faon standard plus dautres commandes, elle na pas besoin dinclure dans son dictionnaire la Standard suite. Pour les autres cas, les commandes de la Standard suite sont disponibles (les scripts compileront et sexcuteront depuis lditeur de scripts). x Beaucoup dapplications dfinissent aussi leur propre suite de commandes spcialises. Le dictionnaire dapplication fournit les dfinitions de toutes les commandes supportes par lapplication (avec lexception mentionne cidessus dans la section Note concernant les commandes de la Required suite). Vrifier le dictionnaire dapplication appropri avant dutiliser les commandes dapplication. Vous pouvez visualiser le dictionnaire dune
Les dfinitions de commandes T2 - 29

Chapitre 7

Tome 2

appplication ou dun complment de pilotage en dposant leurs icones sur celle de lditeur de scripts, ou par le menu Ouvrir un dictionnaire... du menu Fichier de lditeur de scripts. Le tableau, ci-dessous, rsume les commandes AppleScript prsentes en dtail par la suite et renvoie aux pages les dtaillant. Certaines de ces commandes sont aussi gres comme des commandes dapplication. Commande Description

Copy (T2 - p.34) Assigne une valeur une variable ou un objet Count (T2 - p.36) Compte les lments dune valeur compose Get (T2 - p.43) Run (T2 - p.56) Retourne la valeur dune expression Excute les instructions, autres que les gestionnaires et les dfinitions de proprit, dans une dfinition de script-objet Assigne une valeur une variable ou un objet

Set (T2 - p.59)

Une autre commande AppleScript, la commande Error, est dcrite dans Les instructions Try (T5 - p.31). Le tableau, ci-dessous, rsume les commandes standards dapplication prsentes en dtail par la suite et renvoie aux pages les dtaillant.

T2 - 30

Les dfinitions de commandes

Chapitre 7

Tome 2

Commande Description Commandes devant tre supportes par toutes les applications Launch (T2 - p.45) Lance une application sans dclencher ses procdures internes de dmarrage. Cette commande est gre diffremment que les autres commandes de ce tableau. Ouvre un ou plusieurs fichiers. Imprime un ou plusieurs objets. Termine une application. Amne lavant-plan une application dj ouverte et relance ses procdures internes de dmarrage. Lance une application et dclenche procdures internes de dmarrage. ses

Open (T2 - p.51) Print (T2 - p.52) Quit (T2 - p.53) Reopen (T2 - p.54)

Run (T2 - p.56)

Commandes gnralement supportes par les applications pilotables Close (T2 - p.32) Count (T2 - p.36) Ferme un ou plusieurs objets. Compte les lments dune classe particulire dans un objet. Supprime un ou plusieurs objets.

Delete (T2 - p.40)

Duplicate (T2 - p.41) Copie un ou des objets un nouvel emplacement. Exists (T2 - p.42) Get (T2 - p.43) Make (T2 - p.48) Move (T2 - p.50) Save (T2 - p.58) Set (T2 - p.59) Dtermine si un objet existe. Retourne la valeur dun objet. Cre un nouvel objet. Dplace un ou des objets. Enregistre un objet en fichier. Assigne une valeur un objet.

Les dfinitions de commandes

T2 - 31

Chapitre 7

Tome 2

Close
Close est une commande dapplication qui demande la fermeture dun ou de plusieurs objets, gnralement des fentres dapplications ou de documents.

Syntaxe close referenceToObject [saving in referenceToFile] [saving saveOption]

Paramtres

referenceToObject

Une rfrence lobjet ou aux objets fermer, gnralement des fentres dapplication ou de documents. classe : Reference Une rfrence de la forme file nameString ou alias nameString (voir Notes ci-dessous). classe : Reference valeur par dfaut : Le fichier dans lequel lobjet a t enregistr la dernire fois. Si lobjet na pas t enregistr avant, lapplication suit sa procdure normale denregistrement pour un nouveau fichier, laquelle est de demander sil faut enregistrer le document et, si oui, de laisser lutilisateur indiquer un nom et un emplacement pour le fichier. Un paramtre indiquant sil faut enregistrer un objet qui a t modifi avant de le fermer. La constante yes spcifie que lobjet doit tre enregistr. La constante no spcifie que lobjet ne doit pas tre enregistr. La constante ask spcifie que lutilisateur doit tre consult avant, pour indiquer si oui ou non lobjet doit tre enregistr. Voir Notes ci-dessous pour plus dinformations. classe : Constant valeur par dfaut : la valeur par dfaut est ask, moins que vous spcifiez un fichier dans lequel enregistrer lobjet. Dans ce cas, la valeur par dfaut est yes.

referenceToFile

saveOption

T2 - 32

Les dfinitions de commandes

Chapitre 7

Tome 2

Rsultat

Aucun

Exemples tell application "AppleWorks" close front window saving in file "Disque Dur:Documents:Report" saving yes end tell tell application "Finder" close front window end tell

Notes

Pour spcifier le nom (nameString) dun fichier dans lequel enregistrer lobjet, utilisez une chane de caractres telle que "Disque:Dossier1:.....:NomFichier" ; pour plus de dtails, voir Les rfrences aux fichiers (T3 - p.39). Vous pouvez aussi spcifier une chane de caractres avec seulement un nom de fichier (nomFichier). Dans ce cas, lapplication essaie de trouver le fichier dans le rpertoire courant. Si elle ne le trouve pas, lapplication cre un fichier avec le nom spcifi dans le rpertoire courant ou, si le nom inclut un chemin, alors dans le rpertoire spcifi par le chemin. Le rpertoire courant est le rpertoire do lapplication a t lance ou ouverte, ou le rpertoire dans lequel un document de cette application a t enregistr prcdemment, ou un autre rpertoire spcifi par lapplication. Le rpertoire courant peut tre affect par les rglages du tableau de bord Gnral. La commande Close enregistrera seulement un fichier qui a t modifi depuis le dernier enregistrement. Quand saveOption est rgl sur ask, la commande Close demande, pour chaque document modifi, sil faut enregistrer le document. En fonction de la manire dont lapplication gre la commande Close, cette commande peut craser un fichier existant portant le mme nom que le fichier spcifi sans demander lautorisation.

Les dfinitions de commandes

T2 - 33

Chapitre 7

Tome 2

Copy
La commande Copy est une commande AppleScript qui fait une copie dune ou plusieurs valeurs et stocke le rsultat dans une ou plusieurs variables. Pour plus dinformations sur la diffrence entre la commande Copy et la commande Set, voir Le partage de donnes (T4 - p.15). La commande Set est dcrite T2 - p.59. Pour effectuer des copies lintrieur dune application, vous pouvez utiliser la commande Duplicate (T2 - p.41). Pour effectuer des copies entre applications, vous utiliserez les commandes lies au Presse-papier (The Clipboard et Set The Clipboard To ) fournies avec le complment de pilotage Complments standard. Comme il est montr dans la section Syntaxe, put et into sont des synonymes de copy et to. Quand vous compilez un script, put et into sont automatiquement remplacs par respectivement copy et to.

Syntaxe

( copy put) expression ( to into) variablePattern

Paramtres

expression

Lexpression dont la valeur doit tre assigne. Si expression est une rfrence ou une liste ou un enregistrement de rfrences, AppleScript obtient les valeurs des objets spcifis par leurs rfrences. classe : nimporte quelle classe Le nom de la variable dans laquelle la valeur est stocke, ou une liste de variables schmatiques, ou un enregistrement de variables schmatiques. classe : celle de lidentificateur de la variable, List, ou Record

variablePattern

Rsultat

Si la commande Copy est utilise pour assigner une valeur une variable, le rsultat est la valeur qui a t stocke dans la variable. Si la commande est
T2 - 34 Les dfinitions de commandes

Chapitre 7

Tome 2

utilise pour copier un objet, le rsultat est une rfrence lobjet copi. classe : divers

Exemples

Lexemple suivant copie une chane de caractres dans la variable monOccupation :


copy "Traduire AppleScript" to monOccupation monOccupation -- rsultat : "Traduire AppleScript" class of monOccupation -- rsultat : "string"

Le prochain exemple obtient la rfrence dune fentre, la copie dans une autre rfrence et obtient alors le nom de la fentre de la rfrence copie :
set windowRef to a reference to window 1 of application "Finder" copy windowRef to currentWindow name of currentWindow -- rsultat : "dossier Script testing

En plus de copier une valeur dans une simple variable ou un objet, vous pouvez copier des schmas de valeurs ou de variables. Par exemple, ce script copie la position de la fentre en avant-plan dans une liste deux variables :
tell application "Finder" copy position of front window to {x,y} -- rsultat : {13,47} end tell

Comme le Finder retourne position of front window sous la forme dune liste de deux entiers, lexemple prcdent copie le premier lment de la liste dans x et le second lment dans y. Les schmas copis avec la commande Copy peuvent aussi tre plus complexes. Par exemple :
set x to {8, 94133, {Prnom:"Alain", Nom:"Tesrieur"}} copy x to {p, q, {Nom:r}} return (p, q, r) -- rsultat : {8, 94133, "Tesrieur"}

Comme cet exemple le dmontre, les proprits dun enregistrement ont besoin dtre donnes dans le mme ordre et nont pas besoin dtre toutes utilises quand vous copiez un schma dans un autre schma, pourvu que le

Les dfinitions de commandes

T2 - 35

Chapitre 7

Tome 2

schma apparie. Lutilisation de la commande Copy avec des schmas est identique lutilisation de la commande Set avec les schmas. Pour des informations sur la commande Set, voir T2 - p.59.

Notes

Pour plus dinformations sur lutilisation de la commande Copy pour crer ou modifier les valeurs des variables, voir Les variables (T4 - p.9).

Count
La commande Count peut fonctionner comme une commande AppleScript ou une commande dapplication. La commande AppleScript compte le nombre dlments dune classe particulire dans une liste, un enregistrement, ou une chane de caractres. La commande dapplication compte le nombre dlments dune classe particulire dans un objet ou des objets.

Syntaxe de la commande AppleScript count [ [ each every ] className pluralClassName ( in of ) ] compositeValue number of [ className pluralClassName ( in of ) ] compositeValue

Syntaxe de la commande dapplication count [ each every ] className pluralClassName [ ( in of ) referenceToObject ] number of className pluralClassName [ ( in of ) referenceToObject ]

T2 - 36

Les dfinitions de commandes

Chapitre 7

Tome 2

Paramtres

className

Le nom de la classe des lments dnombrer. Si vous utilisez les termes each ou every, vous devez utiliser seulement la forme au singulier du nom de la classe, bien que, dans certains cas, AppleScript ou une application peuvent grer la forme plurielle quand elle est utilise tort. Les lments des listes, des enregistrements, et des chanes de caractres sont numrs dans les dfinitions de classes de valeur correspondantes dans le tome 1. Les lments des objets dapplication sont numrs dans leurs dfinitions de classe dobjet dans le dictionnaire de lapplication. classe : classe de lidentificateur valeur par dfaut : Item pour les listes, les enregistrements, et les objets dapplication ; Character pour les chanes de caractres (voir Notes) Le nom au pluriel de la classe des lments dnombrer. Vous devez utiliser la forme plurielle quand cest appropri, bien que, dans certains cas, AppleScript ou une application peuvent grer la forme plurielle quand elle est utilise tort. Les lments des listes, des enregistrements, et des chanes de caractres sont numrs dans les dfinitions de classe de valeur correspondantes dans le tome 1. Les lments des objets dapplication sont numrs dans leurs dfinitions de classe dobjet dans le dictionnaire de lapplication. classe : classe de lidentificateur valeur par dfaut : Item pour les listes, les enregistrements, et les objets dapplication ; Character pour les chanes de caractres (voir Notes)

pluralClassName

Les dfinitions de commandes

T2 - 37

Chapitre 7

Tome 2

CompositeValue

Une expression qui value une valeur compose dont les lments doivent tre dnombrs. classe : List, Record, Reference, ou String Une rfrence lobjet ou aux objets dont les lments doivent tre dnombrs. Si vous ne spcifiez pas ce paramtre, lapplication dnombre les lments de la cible par dfaut de linstruction Tell. classe : List, Record, Reference, ou String

referenceToObject

Rsultat

Le rsultat de la commande AppleScript est un entier qui spcifie le nombre dlments dune classe prcise dans une valeur compose. Le rsultat de la commande dapplication est un entier. Voir Notes pour les dtails. classe : Integer

Exemples

Dans lexemple suivant, compositeValue est une liste. La commande ne spcifie pas explicitement une classe dlments dnombrer, aussi AppleScript dnombre tous les lments de la liste sans distinction de classe.
count {"Oui", "Non", "Peut-tre", 5, 6} -- rsultat : 5

Dans lexemple suivant, className est Integers et referenceToObject est une liste de chanes de caractres et de nombres entiers. La premire instruction dnombre les nombres entiers de la liste. La seconde, les chanes de caractres.
count the integers in {"Oui", "Non", "Peut-tre", 5, 6} -- rsultat : 2 count the strings in {"Oui", "Non", "Peut-tre", 5, 6} -- rsultat : 3

A noter que dans les exemples prcdents, le terme the est crit juste pour
T2 - 38 Les dfinitions de commandes

Chapitre 7

Tome 2

faire plus correct, il nest pas obligatoire dans la syntaxe. Les exemples suivants montrent une autre faon de dnombrer les entiers de la liste :
count each integer of {"Oui", "Non", "Peut-tre", 5, 6} -- rsultat : 2 count every integer of {"Oui", "Non", "Peut-tre", 5, 6} -- rsultat : 2

Vous pouvez aussi utliser le terme number of pour dnombrer les lments dune liste :
number of integers in {"Oui", "Non", "Peut-tre", 5, 6} -- rsultat : 2

Note des traducteurs francophones Notez que dans lexemple prcdent, si vous mettez number of integer (au singulier) au lieu de number of Integers (au pluriel), vous obtiendrez un message derreur. q Dans lexemple suivant, every file of disk 1 value une liste de fichiers. Le Finder compte les fichiers de la liste.
tell application "Finder" count every file of disk 1 end tell -- rsultat : nombre de fichiers sur le disque 1

Linstruction suivante est quivalente lexemple prcdent :


tell application "Finder" count files of disk 1 end tell

Dans lexemple suivant, referenceToObject est windows of application "Finder", laquelle est une liste de fentres. Le Finder compte les fentres de la liste.
count windows of application "Finder"

Les dfinitions de commandes

T2 - 39

Chapitre 7

Tome 2

Notes

Si vous utilisez la commande Count sur une chane de caractres sans spcifier la classe dnombrer, AppleScript compte les caractres.
count "Cest une chane" --rsultat : 16 count words in "Cest une chane" --rsultat : 3

Si vous dnombrez une liste ou un enregistrement sans spcifier une classe prcise, la commande Count compte les items :
count {1, 2, 5, 8, 12} --rsultat : 5 count {nom:Toto, taille:1.02 , poids : 24} --rsultat : 3

Delete
Delete est une commande dapplication qui supprime un ou plusieurs objets.

Syntaxe delete referenceToObject

Paramtres

referenceToObject

Une rfrence ou aux objets qui doivent tre supprims. Classe : Reference

Rsultat

Aucun

T2 - 40

Les dfinitions de commandes

Chapitre 7

Tome 2

Exemples tell application "Finder" delete file "Old report" of startup disk end tell tell document "Simple" of application "AppleWorks" delete words 1 through 5 of text body end tell

Duplicate
Duplicate est une commande dapplication qui duplique lidentique un ou plusieurs objets, et qui les insre soit lemplacement spcifi dans la commande, soit lemplacement immdiatement suivant celui de lobjet ou des objets dupliquer.

Syntaxe duplicate referenceToObject [ to newLocation ]

Paramtres

referenceToObject

Une rfrence lobjet ou aux objets qui doivent tre dupliqus. Classe : Reference Le nouvel emplacement de lobjet dupliqu. Classe : Reference Valeur par dfaut : Si vous nindiquez pas de nouvel emplacement, lobjet est insr lemplacement immdiatement suivant celui de lobjet spcifi dans le paramtre direct.

newLocation

Rsultat

Une rfrence au nouvel objet Classe : Reference

Les dfinitions de commandes

T2 - 41

Chapitre 7

Tome 2

Exemples

Le script suivant indique au Finder de dupliquer un fichier se trouvant sur le disque de dmarrage, vers un dossier de ce disque. Si un fichier portant le mme nom existe dj, il nest pas remplac.
tell application "Finder" duplicate first file of startup disk to first folder of startup disk replacing no end tell

Exists
Exists est une commande dapplication qui dtermine si lobjet spcifi par une rfrence existe.

Syntaxe

referenceToObject exists
exists referenceToObject

Paramtres

referenceToObject

Une rfrence lobjet ou aux objets trouver. Classe : Reference

Rsultat

Le rsultat est true si tous les objets se rapportant referenceToObject existent, false si un ou plusieurs des objets se rapportant referenceToObject nexistent pas. Classe : Boolean

Exemples

Lexemple suivant vrifie si un dossier existe avant dessayer de compter les fichiers du dossier.
tell application "Finder"
T2 - 42 Les dfinitions de commandes

Chapitre 7

Tome 2

if folder "Apple Extras" of startup disk exists then count files in folder "Apple Extras" of startup disk end if end tell

Lexemple suivant supprime le premier paragraphe du document Mon rapport, si le paragraphe existe.
tell document "Mon rapport" of application "AppleWorks" if paragraph 1 of text body exists then delete paragraph 1 of text body end if end tell

Get
La commande Get peut fonctionner comme une commande AppleScript ou comme une commande dapplication. La commande AppleScript retourne la valeur dune expression. La commande dapplication retourne la valeur dun objet. Dans les deux cas, la commande assigne la valeur retourne la variable prdfinie result, cette variable est dcrite dans Utiliser la variable prdfinie result( T2 - p.21).

Syntaxe de la Commande AppleScript [ get ] expression [ as className ]

Syntaxe de la Commande dapplication [ get ] referenceToObject [ as className ]

Les dfinitions de commandes

T2 - 43

Chapitre 7

Tome 2

Paramtres

expression

Une expression dont la valeur doit tre retourne dans la variable result. Classe : nimporte quelle expression AppleScript Un identificateur de classe qui indique la classe de valeur dsire pour la donne retourne. Classe : Class Valeur par dfaut : La classe de valeur de lobjet ou des objets Une rfrence un objet dont la valeur doit tre retourne dans la variable prdfinie result. Classe : Reference

className

referenceToObject

Rsultat

Si aucune erreur nest gnre, le rsultat est la valeur de la rfrence indique ou de lexpression. Si le paramtre referenceToObject spcifie seulement un seul objet ( comme word 1 ou the last word ), le rsultat est une valeur simple. Si lobjet spcifi nexiste pas, par exemple si la refrence est word 12 et quil y a moins de 12 mots dans le container indiqu, AppleScript gnre une erreur. Si le paramtre referenceToObject utilise une clause Whose ( comme the words whose first character is "B" ) pour spcifier lobjet ou les objets obtenir, le rsultat est toujours une liste. Si les objets spcifis nexistent pas, par exemple si la rfrence est the words whose first character is "B" et quaucun mot ne commence par la lettre B, le rsultat est une liste vide ({}). Classe : La classe spcifie par le paramtre className ou une liste de valeurs de cette classe. Lapplication peut utiliser ce paramtre pour dterminer le type de donnes retourner. Par exemple, une application peut retourner du texte dans diffrents formats. Notez que si cest ncessaire, AppleScript essaie de contraindre le rsultat dans la classe spcifie par ce paramtre.

T2 - 44

Les dfinitions de commandes

Chapitre 7

Tome 2

Exemples tell document "Simple" of application "AppleWorks" get paragraph 3 of text body end tell -- rsultat : "Cest le paragraphe trois."

Notes

Le terme get de la commande Get est optionnel, car AppleScript obtient automatiquement la valeur des expressions et des rfrences quand elles apparaissent dans les scripts. Par exemple, les instructions suivantes sont quivalentes :
item 1 of {"Salut,", "comment", "allez", "vous ?" } -- rsultat : "Salut," get item 1 of {"Salut,", "comment", "allez", "vous ?" } -- rsultat : "Salut,"

Les instructions suivantes sont aussi quivalentes :


tell application "AppleWorks" word 1 of text body of document "Introduction" end tell tell application "AppleWorks" get word 1 of text body of document "Introduction" end tell

Erreur

Error number -1728

Message derreur Impossible dobtenir <reference>.

Launch
Launch est une commande dapplication. Si une application nest pas dj lance, lui envoyer une commande Launch, la lance sans lenvoi dune commande Run. Si lapplication est dj lance, la commande Launch naura aucun effet. La commande Launch permet une application de souvrir sans

Les dfinitions de commandes

T2 - 45

Chapitre 7

Tome 2

avoir excuter ses procdures internes de dmarrage, comme louverture dune nouvelle fentre ou, dans le cas dun script-application, dexcuter le script. Par exemple, vous pouvez utiliser la commande Launch lorsque vous ne voulez pas quun script ouvre et ferme une application de faon visible. Bien que la cible de la commande Launch soit toujours une application, la commande Launch est gre par le Finder. la diffrence des autres commandes dapplication dfinies dans ce guide, cette commande na pas besoin dtre explicitement supporte par les applications et elle napparat pas dans les dictionnaires.

Syntaxe launch [ referenceToApplication ]

Paramtres

referenceToApplication

Une rfrence de la forme application nameString (voir Notes). Ce paramtre est optionnel si la commande launch est utilise lintrieur dune instruction Tell approprie. Classe : Reference

Rsultat

Aucun

Exemples launch application "SimpleText" tell application "SimpleText" launch end tell

Notes

Pour spcifier le nom (nameString) dune application lancer, utiliser une chane de caractres de la forme Disque:Dossier1:Dossier2:...:nomApplication ; pour plus de dtails, voir Les rfrences aux applications (T3 - p.43).

T2 - 46

Les dfinitions de commandes

Chapitre 7

Tome 2

Vous pouvez aussi spcifier une chane de caractres avec seulement un nom dapplication (nomApplication). Dans ce cas, AppleScript essaie de trouver lapplication en utilisant la base de donnes du Bureau tenue par le Finder. AppleScript envoie, de faon implicite, une commande Run sil commence excuter une instruction Tell dont la cible est une application qui nest pas dj ouverte. Cela peut occasionner des problmes avec des applications, comme SimpleText qui excute automatiquement des tches au dmarrage, comme louverture dune nouvelle fentre. Considrez lexemple suivant :
tell application "SimpleText" open file "Disque Dur:Document" end tell

Avant quAppleScript dise SimpleText douvrir le fichier Document, il lui envoie, de faon implicite, une commande Run. Si lapplication nest pas encore ouverte, la commande Run provoque le lancement de SimpleText mais aussi lexcution de ses tches internes de dmarrage, y compris louverture dune fentre sans-titre. Par consquent, lexcution de ce script ouvre deux fentres : une fentre sans-titre et une fentre pour le fichier Document. Si vous ne voulez pas quAppleScript envoye, de faon implicite, une commande Run quand il excute une instruction Tell dapplication, utiliser la commande Launch au dbut de linstruction :
tell application "SimpleText" launch open file "Disque Dur:Document" end tell

Dans ce cas, AppleScript lance lapplication sans lui envoyer une commande Run, et lapplication ouvre seulement la fentre requise par le fichier Document. La commande Launch est particulirement utile pour les tableaux de bords comme Apparence. Par exemple, si le tableau de bord Apparence nest pas dj lanc, de faon visible ou en arrire-plan, le script suivant provoquera son ouverture et laffichage de son interface :

Les dfinitions de commandes

T2 - 47

Chapitre 7

Tome 2

tell application "Apparence" set themeName to name of theme 1 display dialog "Le nom du premier thme est " & themeName end tell

Par contre, le script suivant affiche les informations de thmes sans provoquer louverture de linterface du tableau de bord Apparence. Simplement parce que la commande Launch est crite sur la premire ligne de linstruction Tell, par consquent AppleScript lance louverture du tableau de bord Apparence sans envoyer une commande Run.
tell application "Apparence" launch set themeName to name of theme 1 display dialog "Le nom du premier thme est " & themeName end tell

Pour les mmes raisons, il est parfois important dutiliser la commande Launch avant denvoyer la commande Run un script-application. Pour plus dinformations, voir Appeler un script-application depuis un script (T6 p.40). Pour plus dinformations sur Les gestionnaires Run voir T6 - p.33.

Make
Make est une commande dapplication qui cre un nouvel objet. La commande peut comporter des valeurs soit pour les proprits de lobjet, soit pour les donnes de lobjet, ou les deux.

Syntaxe make [ new ] className at referenceToLocation [ with properties { propertyLabel : propertyValue [, propertyLabel : propertyValue ]...} ] [ with data dataValue ]

Le caractre de continuation indique que la syntaxe de la commande doit scrire sur une seule ligne (ou sur plusieurs lignes mais avec le caractre de continuation).

T2 - 48

Les dfinitions de commandes

Chapitre 7

Tome 2

Paramtres

className

La classe de lobjet qui doit tre cr. Classe : Identificateur de classe

referenceToLocation Lemplacement o doit tre cr le nouvel objet. Classe : Reference propertyLabel Le nom de la proprit dont la valeur est rgler pour le nouvel objet. Classe : String La valeur assigner la proprit. Classe : La classe de valeur de la proprit, comme il est spcifi dans la dfinition de la classe de lobjet crer dans le dictionnaire de lapplication, ou une valeur qui peut tre contrainte dans la classe de la proprit. Valeur par dfaut : La valeur par dfaut de la proprit, comme il est indiqu dans la dfinition de la classe de lobjet crer dans le dictionnaire de lapplication. La valeur assigner lobjet. Classe : La classe de valeur par dfaut de lobjet, ou une valeur qui peut tre contrainte dans la classe de valeur par dfaut. Les classes de valeur par dfaut des objets sont listes dans les sections Default Value Class Returned des dfinitions dobjets du dictionnaire. Valeur par dfaut : Aucune

propertyValue

dataValue

Rsultat

Une rfrence lobjet nouvellement cr. Classe : Reference

Exemples

Lexemple suivant cre un document nomm Nouveau dans le rpertoire courant. Le rpertoire courant est le rpertoire do lapplication a t lance ou ouverte, ou le rpertoire dans lequel un document de cette application a

Les dfinitions de commandes

T2 - 49

Chapitre 7

Tome 2

t enregistr prcdemment, ou un autre rpertoire spcifi par lapplication. Le rpertoire courant peut tre affect par les rglages du tableau de bord Gnral.
tell application "AppleWorks" make new document at beginning with properties {name:"Nouveau"} end tell

Move
Move est une commande dapplication qui dplace un ou des objets.

Syntaxe move referenceToObject to referenceToLocation

Paramtres

referenceToObject

Une rfrence ou aux objet dplacer Classe : Reference Une rfrence lemplacement vers lequel le ou les objets doivent tre dplacs Classe : Reference

referenceToLocation

Rsultat

Une rfrence lobjet qui doit tre dplac. Classe : Reference

Exemples tell application "Finder" move file "StdLog" of startup disk to folder "Saved Error Logs" of startup disk end tell

T2 - 50

Les dfinitions de commandes

Chapitre 7

Tome 2

tell document 1 of application "AppleWorks" move word 1 of text body to before paragraph 2 of text body end tell

Open
Open est une commande dapplication qui ouvre un ou des fichiers.

Syntaxe open referenceToFile

Paramtres

referenceToFile

rfrence de la forme file nameString ou alias nameString, ou une liste des mmes rfrences (voir Notes). Classe : Reference ou une liste de rfrences Une

Rsultat

Aucun

Exemples

Ouverture dun simple fichier.


tell application "AppleWorks" open file "Disque Dur:Lettre" end tell

Ouverture dune liste de fichiers.


tell application "AppleWorks" open {file "Disque Dur:Lettre", file "Disque Dur:Courrier"} end tell

Les dfinitions de commandes

T2 - 51

Chapitre 7

Tome 2

Notes

Pour spcifier le nom (nameString) dun fichier ouvrir, utilisez une chane de caractres telle que Disque:Dossier1:Dossier2:...:nomFichier ; pour plus de dtails, voir Les rfrences aux fichiers (T3 - p.39). Vous pouvez aussi spcifier une chane de caractres avec seulement le nom du fichier (nomFichier). Dans ce cas, lapplication essaie de trouver le fichier dans le rpertoire courant. Le rpertoire courant est le rpertoire do lapplication a t lance ou ouverte, ou le rpertoire dans lequel un document de cette application a t enregistr prcdemment, ou un autre rpertoire spcifi par lapplication. Le rpertoire courant peut tre affect par les rglages du tableau de bord Gnral. Si le ou les fichiers spcifis par referenceToFile sont dj ouverts, ils restent ouverts mais leurs fentres respectives viennent lavant-plan (si elles ne ltaient pas dj).

Print
Print est une commande dapplication qui imprime un ou plusieurs objets.

Syntaxe print referenceToObject

Paramtres

referenceToObject

Une rfrence ou aux objets imprimer - un ou plusieurs fichiers, documents ou fentres. Classe : Reference ou liste de rfrences

Rsultat

Aucun

T2 - 52

Les dfinitions de commandes

Chapitre 7

Tome 2

Exemples

Impression dun document ouvert :


tell application "Apple System Profiler" print report "Control Panel Report" end tell

Le script suivant demande au Finder dimprimer deux documents AppleWorks. Cela quivaut slectionner les deux documents dans le Finder et choisir le menu Imprimer du menu Fichier.
tell application "Finder" print {file "Disque Dur:Fichier1", file "Disque Dur:Fichier2"} end tell

Notes

Pour spcifier le nom dun fichier imprimer, utilisez le terme file ou alias suivi par une chane de caractres telle que Disque:Dossier1:...nomFichier ; pour plus de dtails, voir Les rfrences aux fichiers (T3 - p.39). Vous pouvez aussi spcifier une chane de caractres avec seulement le nom du fichier (nomFichier). Dans ce cas, lapplication essaie de trouver le fichier dans le rpertoire courant. Le rpertoire courant est le rpertoire do lapplication a t lance ou ouverte, ou le rpertoire dans lequel un document de cette application a t enregistr prcdemment, ou un autre rpertoire spcifi par lapplication. Le rpertoire courant peut tre affect par les rglages du tableau de bord Gnral.

Quit
Quit est une commande dapplication qui termine une application. Si aucun paramtre optionnel nest mentionn, la commande Quit a le mme effet que de choisir le menu Quitter du menu Fichier de lapplication.

Syntaxe quit referenceToApplication [ saving saveOption ]

Les dfinitions de commandes

T2 - 53

Chapitre 7

Tome 2

Paramtres

referenceToApplication

Une rfrence de la forme application nameString, o nameString est une chane de caractres qui correspond au nom de lapplication que vous voulez quitter, orthographi comme dans le slecteur dapplications. Classe : Reference Une constante qui indique sil faut enregistrer les documents qui ont t modifis avant de quitter. Les valeurs possibles sont yes, no, et ask. La valeur yes indique enregistrer les documents. La valeur no indique ne pas enregistrer les documents. La valeur ask indique demander lutilisateur si, oui ou non, il faut enregistrer les documents. Classe : Constant Valeur par dfaut : ask

saveOption

Rsultat

Aucun

Exemples

Le premier exemple qui suit, quitte une application sans enregistrer les documents modifis. Le second exemple demande lautorisation avant denregistrer les documents modifis.
tell application "AppleWorks" quit saving no end tell quit application "AppleWorks" saving ask

Reopen
Reopen est une commande dapplication qui ractive une application lance. Cela quivaut double-cliquer sur licone de lapplication dans le Finder quand lapplication est dj ouverte. Comme il peut ne pas tre vident pour
T2 - 54 Les dfinitions de commandes

Chapitre 7

Tome 2

lutilisateur de voir lincidence davoir double-cliqu sur licone dune application dj ouverte, quand aucune fentre de cette application n est ouverte, lapplication peut choisir douvrir une fentre sans-titre ou dexcuter dautres oprations pour montrer son activation. Si une application nest pas dj lance, lui envoyer une commande Reopen quivaut lui envoyer une commande Run - voir Run (T2 - p.56). Chaque application dtermine comment elle implmentera la commande Reopen. Certaines applications peuvent excuter leurs procdures internes de dmarrage, comme louverture dun document sans-titre, pendant que dautres nexcutent pas doprations supplmentaires.

Syntaxe reopen [ referenceToApplication ]

Paramtres

referenceToApplication

Une rfrence de la forme application nameString (voir Notes). Ce paramtre est optionnel si la commande Reopen est utilise lintrieur dune instruction Tell. Classe : Reference

Rsultat

Aucun

Exemples reopen application "Nom de lapllication" tell application "Nom de lapplication" reopen end tell

Notes

Pour spcifier le nom (nameString) dune application ractiver, utilisez une chane de caractres telle que Disque:Dossier1:...:ApplicationName ; pour plus de dtails, voir Les rfrences aux applications (T3 - p.43). Vous

Les dfinitions de commandes

T2 - 55

Chapitre 7

Tome 2

pouvez aussi spcifier une chane de caractres avec juste un nom dapplication (ApplicationName). Dans ce cas, AppleScript essaie de trouver lapplication en utilisant la base de donnes du Bureau tenue par le Finder.

Run
La commande Run peut fonctionner comme une commande AppleScript ou comme une commande dapplication. La commande dapplication Run lancera une application si elle nest pas dj lance. Lapplication doit tre sur un disque local ou distant. Si lapplication est dj lance, lincidence de la commande Run dpend de lapplication. Certaines applications ne sont pas affectes ; dautres, comme SimpleText, rptent leurs procdures internes de dmarrage chaque fois quelles reoivent une commande Run. La commande AppleScript Run agit sur les scripts-objets. Elle fait excuter les instructions contenues dans une dfinition de script-objet, autre quun gestionnaire et des dfinitions de proprits. Vous nutiliserez pas la commande Run pour excuter directement des instructions de script ou, pour excuter AppleScript ou un complment de pilotage.

Syntaxe commande AppleScript run [ scriptObjectVariable ]

Syntaxe commande dapplication run [ referenceToApplication ]

T2 - 56

Les dfinitions de commandes

Chapitre 7

Tome 2

Paramtres

scriptObjectVariable

Un identificateur de variable dont la valeur est un script-objet. Ce paramtre est optionnel si la commande Run est utilise lintrieur dune instruction Tell approprie. Classe : Script Une rfrence de la forme application nameString (voit Notes). Ce paramtre est optionnel si la commande Run est utilise lintrieur dune instruction Tell approprie. Classe : Reference

referenceToApplication

Rsultat

La commande AppleScript Run retourne le rsultat, sil y a, retourn par le gestionnaire Run du script-objet spcifi. La commande dapplication Run ne retourne pas de rsultat.

Exemples run application "SimpleText" tell application "SimpleText" run end tell

Vous nutiliserez pas la commande Run pour excuter directement des instructions de script ou, pour excuter AppleScript ou un complment de pilotage :
run (save) --TUUT ! script ne comprend pas le message save. run (beep) (*Beeee.........eeeeeep ! saturation de la pile (une bonne minute de beep !:-)*)

Notes

Pour spcifier le nom (nameString) dune application lancer, utilisez une chane de caractres telle que Disque:Dossier1:Dossier2:...:ApplicationName ;

Les dfinitions de commandes

T2 - 57

Chapitre 7

Tome 2

pour plus de dtails, voir Les rfrences aux applications (T3 - p.43). Vous pouvez aussi spcifier une chane de caractres avec juste un nom dapplication (ApplicationName). Dans ce cas, AppleScript essaie de trouver lapplication en utilisant la base de donnes du Bureau tenue par le Finder. AppleScript envoie, de faon implicite, une commande Run sil commence excuter une instruction Tell dont la cible est une application qui nest pas dj ouverte. Cela peut occasionner des problmes avec certaines applications, comme SimpleText qui normalement excute des tches au dmarrage, comme louverture dune nouvelle fentre. Pour lancer une application sans activer ses procdures internes de dmarrage, utiliser la commande Launch, dcrite T2 - p.45. Pour plus dinformations sur lutilisation des commandes Run et Launch avec les scripts-applications, voir Appeler un script-application depuis un script (T6 - p.40). Pour plus dinformations sur les gestionnaires Run, voir Les gestionnaires Run (T6 - p.33). Pour plus dinformations sur lutilisation de la commande Run avec les scripts-objets, voir Les scripts-objets (T7 - p.6).

Save
Save est une commande dapplication qui enregistre un ou des objets.

Syntaxe save referenceToObject [ in referenceToFile ]

Paramtres

referenceToObject Une rfrence ou aux objets qui doivent tre enregistrs. Classe : Reference referenceToFile Une rfrence de la forme file nameString ou alias nameString qui spcifie le fichier dans lequel enregistrer les objets (voir Notes). Classe : Reference Valeur par dfaut : Le fichier dans lequel lobjet a t enregistr la dernire fois. Si lobjet na pas encore t enregistr, lapplication cre un nouveau fichier.

T2 - 58

Les dfinitions de commandes

Chapitre 7

Tome 2

Rsultat

Aucun

Exemples tell application "AppleWorks" save document "Essai" in file "Disque Dur:Guide AppleScript" end tell

Notes

Pour spcifier le nom dun fichier (nameString) dans lequel enregistrer le ou les objets spcifis, utilisez une chane de caractres similaire Disque:Dossier1:Dossier2:...nomFichier ; pour plus de dtails, voir Les rfrences aux fichiers (T3 - p.39). Vous pouvez aussi spcifier une chane de caractres avec seulement le nom du fichier (nomFichier). Dans ce cas, lapplication essaie de trouver le fichier dans le rpertoire courant. Le rpertoire courant est le rpertoire do lapplication a t lance ou ouverte, ou le rpertoire dans lequel un document de cette application a t enregistr prcdemment, ou un autre rpertoire spcifi par lapplication. Le rpertoire courant peut tre affect par les rglages du tableau de bord Gnral. Si vous utilisez la forme file nameString et que le fichier indiqu nest pas prsent lemplacement spcifi, lapplication cre un fichier avec le nom spcifi cet emplacement. Si vous utilisez la forme alias nameString et que le fichier indiqu nest pas prsent lemplacement spcifi, le script ne compilera pas. La commande Save crasera, sans pravis, un fichier dj existant portant le mme nom que celui du fichier spcifi (sil existe).

Set
La commande Set peut fonctionner comme une commande AppleScript ou comme une commande dapplication. La commande AppleScript assigne une ou plusieurs valeurs une ou plusieurs variables. Elle peut aussi tre utilise pour partager des donnes entre listes, enregistrements ou scripts-objets - voir la section Notes et Le partage de donnes (T4 - p.15).

Les dfinitions de commandes

T2 - 59

Chapitre 7

Tome 2

La commande dapplication rgle les valeurs dun ou de plusieurs objets.

Syntaxe de la commande AppleScript set variablePattern to expression

expression returning variablePattern

Syntaxe de la commande dapplication set referencePattern to expression

expression returning referencePattern

Paramtres

variablePattern

Le nom de la variable dans laquelle est enregistre la valeur, ou une liste de variables schmatiques, ou un enregistrement de variables schmatiques. Classe : Identifier, List ou Record Lexpression dont la ou les valeurs doivent tre assignes. Si expression est une rfrence ou, une liste ou un enregistrement de rfrences, AppleScript obtient les valeurs des objets spcifis par les rfrences. Classe : Pour une variable, nimporte quelle classe. Une rfrence lemplacement dont la valeur doit tre rgle, ou une liste de rfrences schmatiques, ou un enregistrement de rfrences schmatiques. Classe : Reference, List, ou Record

expression

referencePattern

Rsultat

La valeur assigne

Exemples

Vous pouvez utiliser la commande Set pour rgler une variable avec nimporte quelle valeur :

T2 - 60

Les dfinitions de commandes

Chapitre 7

Tome 2

set x to 5 -- rsultat : 5 set maListe to { 1, 2, "trois" } -- rsultat : { 1, 2, "trois" } tell application "AppleWorks" set x to word 1 of text body of front document end tell

Ces deux instructions sont quivalentes :


set x to 3 3 returning x -- rsultat : 3

De mme, les exemples suivants sont quivalents :


tell front document of application "AppleWorks" set x to word 1 of text body end tell tell front document of application "AppleWorks" word 1 of text body returning x end tell

En plus de rgler une variable avec une valeur simple, vous pouvez rgler des schmas de variables avec des schmas de valeurs. Par exemple, ce script rgle une liste de deux variables avec la position de la fentre en avant-plan.
tell application "Finder" set { x, y } to position of front window end tell

Comme le Finder retourne position of front window sous la forme dune liste de deux entiers, lexemple prcdent rgle x avec le premier lment de la liste et y avec le second lment. Les instructions avec la commande Set peuvent tre aussi plus complexes, comme dans lexemple suivant :
set x to {8, 94133, {prenom:"Albert", nom:"Dugenou" } } set {p, q, r } to x (* maintenant p, q, et r ont ces valeurs : p = 8
Les dfinitions de commandes T2 - 61

Chapitre 7

Tome 2

q = 94133 r = {prenom:"Albert", nom:"Dugenou" } *) set { p, q, {nom:r } } to x (* maintenant p, q, et r ont ces valeurs : p = 8 q = 94133 r = "Dugenou" *)

Comme dans le dernier exemple, les proprits dun enregistrement nont pas besoin dtre donnes dans le mme ordre et elles nont pas besoin dtre toutes utilises quand vous rglez un schma avec un schma, tant que les schmas correspondent. Lutilisation de la commande Set avec des schmas est similaire lutilisation de paramtres schmatiss avec des routines (voir Les routines avec des paramtres positionns (T6 - p.25).

Notes

Si vous utilisez la commande Set pour rgler une variable avec une liste, un enregistrement ou un script-objet, la variable partage les donnes avec la liste initiale, lenregistrement initial ou le script-objet initial. Si vous modifiez les donnes de loriginal, la valeur de la variable change aussi. Voici un exemple :
set maListe to { 1, 2, 3 } set votreListe to maListe -- rsultat : { 1, 2, 3 } set item 1 of maListe to 4 votreListe -- rsultat : { 4, 2, 3 }

Le rsultat de ces instructions est que item 1 of maListe et item 1 of votreListe sont rgls sur 4. Avec cette manire de faire, les changes de donnes avec une grande structure de donnes sont plus efficaces. Plutt que de faire des copies des donnes changes, une mme donne peut appartenir plusieurs structures. Quand une structure est mise jour, les autres le sont aussi automatiquement. Important Pour viter lchange de donnes pour les listes, les enregistrements, et les scripts-objets, vous copierez ces lments avec la commande AppleScript Copy (T2 - p.34), plutt que dutiliser la commande Set. x

T2 - 62

Les dfinitions de commandes

Chapitre 7

Tome 2

Seules les donnes dans les listes, les enregistrements, et les scripts-objets peuvent tre changes ; vous ne pouvez pas changer dautres valeurs. De plus, vous ne pouvez changer des donnes que sur le mme ordinateur et les structures dchange doivent toutes tre dans le mme script.

Les dfinitions de commandes

T2 - 63

Tome 3

Les objets et les rfrences

Chapitre 1

Tome 3

Introduction

Ce chapitre dcrit comment interprter les dfinitions des classes dobjet et comment utiliser les rfrences pour spcifier les objets. Les objets sont des choses dans des applications, Mac OS, ou AppleScript qui peuvent rpondre aux commandes en excutant des actions. Par exemple, les objets dapplication sont des objets stocks dans les applications et leurs documents. Gnralement, ce sont des lments identifiables que les utilisateurs peuvent manipuler dans les applications, comme par exemple, les fentres, les mots, les caractres, les paragraphes dans une application de traitement de texte. Les objets peuvent contenir des donnes, sous forme de valeurs, de proprits, et dlments, qui peuvent changer dans le temps. Chaque objet appartient une classe dobjet, qui est une catgorie dobjets ayant des caractristiques identiques et rpondant aux mmes commandes. Vous pourrez obtenir plus de dtails sur les classes dobjet supportes par une application, en examinant son dictionnaire. Pour se rfrer un objet dans un script, vous utiliserez une rfrence, un nom compos, similaire une adresse ou un chemin, qui identifie un objet ou un groupe dobjets. Les objets et les rfrences sont dcrits dans les chapitres suivants : Les dfinitions des classes dobjet (T3 - p.8) dcrit les diffrentes informations que vous pouvez vous attendre trouver dans une dfinition de classe dobjet et o obtenir ces dfinitions. Les rfrences (T3 - p.12) dfinit une rfrence, dcrit les rfrences compltes et partielles, et explique comment utiliser les containers dans les rfrences. Les formes de rfrence (T3 - p.16) numre les formes de rfrence que vous pouvez utiliser pour identifier les objets et fournit une description dtaille de chaque forme de rfrence. Utilisation de la forme de rfrence Filter (T3 - p.36) dcrit les filtres optionnels que vous pouvez ajouter une rfrence pour spcifier
Introduction T3 - 6

Chapitre 1

Tome 3

uniquement les objets qui remplissent un ou plusieurs critres. Les rfrences aux fichiers et aux applications (respectivement T3 - p.39 et T3 - p.43) dcrit comment spcifier les fichiers et les applications, ou les deux ensemble, localement ou sur une machine distante. Beaucoup dobjets sont contenus dans les applications, mais vous pouvez aussi crer des objets dun autre type, appels des scripts-objets, qui peuvent tre, soit stocks dans les scripts, soit enregistrs dans des fichiers. Pour plus dinformations sur les scripts-objets, voir Les scripts-objets (T7 - p.6).

T3 - 7

Introduction

Chapitre 2

Tome 3

Les dfinitions des classes dobjet

Une dfinition de classe dobjet dcrit les caractristiques communes des objets qui appartiennent la mme classe. Par exemple, tous les objets document crs par lapplication AppleWorks ont certaines proprits (comme une proprit name) et certains lments (comme un lment window) en commun. Un dictionnaire dapplication dcrit les classes que lapplication supporte. Le tableau, ci-dessous, montre un chantillon de dfinition, la dfinition de la classe dobjet window, extraite du dictionnaire du Finder. La dfinition contient trois types dinformation : la forme plurielle de la classe, ses lments (aucun dans cet exemple) et ses proprits. Chaque description de proprit comporte le nom, la classe et la description de la proprit, elle peut aussi prciser si la proprit est en lecture seule ( read only [r/o] ).
Dfinition de la classe dobjet window extraite du dictionnaire du Finder

Forme plurielle lments : Aucun Proprits : Nom position bounds titled name index closeable floating modal resizable

windows

Classe point rectangle boolean [r/o]

Description Coordonnes du coin gauche de la fentre Le rectangle pour la fentre A-t-elle une barre de titre ? suprieur

international text Le nom de la fentre [r/o] integer boolean [r/o] boolean [r/o] boolean [r/o] boolean [r/o] Le numro de la fentre dans lordre premier plan vers arrire-plan A-t-elle une case fermeture ? Est-elle fixe ? Est-elle modale ? Est-elle redimensionnable ?

plus dautres proprits non dtailles

Les dfinitions des classes dobjet

T3 - 8

Chapitre 2

Tome 3

Des applications diffrentes peuvent supporter des classes identiques de diffrentes faons. Le tableau, ci-dessous, montre la dfinition de la classe dobjet window extraite du dictionnaire de lapplication AppleWorks. La classe window dfinie par AppleWorks utilise la mme forme plurielle que la classe window du Finder et partage certaines proprits, comme name et bounds. Toutefois, la version AppleWorks a des lments, comme pane, que le Finder na pas, et il y a de nombreuses proprits que les deux classes ne partagent pas.
Dfinition de la classe dobjet window extraite du dictionnaire dAppleWorks

Forme plurielle lments : Nom split pane

windows

Description par numro dindex, comme une suite dlments, satisfaisant un test par numro dindex, comme une suite dlments, satisfaisant un test

plus dautres lments non dtaills

Proprits : Nom name document bounds position scale ruler Classe international [r/o] document [r/o] bounding rectangle point real ruler Description text Le nom de la fentre Le document fentre associ avec la

Le rectangle pour la fentre Coordonnes du coin suprieur gauche de la fentre Lchelle de (pourcentage) la visualisation

La rgle pour cette fentre

plus dautres proprits non dtailles

Comme vous vous en doutiez, ces deux applications dfinissent leurs classes dobjet window en fonction de la manire dont elles travaillent avec les fentres. AppleWorks utilise les fentres pour laisser lutilisateur entrer et manipuler des donnes dans des documents de traitement de texte, des cellules de tableur, des enregistrements de base de donnes, et plus. Par contre, le Finder utilise les fentres pour afficher les disques, les dossiers, les
T3 - 9 Les dfinitions des classes dobjet

Chapitre 2

Tome 3

fichiers et pour laisser lutilisateur manipuler ces lments. Quand excutez les instructions dun script sur une fentre dune de ces applications, vous avez accs la plupart des oprations possibles, aussi, dans certains cas, des capacits inaccessibles directement linterface de lapplication.

vous deux mais avec

Les composants dune dfinition de classe dobjet sont dcrits dans les sections suivantes : Les proprits (T3 - p.10) Les classes dlment (T3 - p.10) Les classes de valeur retournes par dfaut (T3 - p.11) Pour plus dinformations sur comment AppleScript travaille avec les dictionnaires dapplication, voir Les Dictionnaires tome 1. Pour plus dexemples de dfinitions de classe, voir les dfinitions des classes de valeur dans le tome 1.

Les proprits
Une proprit dobjet est une caractristique qui a une valeur simple, comme le nom dune fentre ou la police dun caractre. Les proprits dun objet se distinguent les unes des autres par leur tiquette unique. Par exemple, la dfinition de la classe window dAppleWorks comporte la proprit Position. Son tiquette unique est Position. La dfinition indique aussi la classe laquelle chaque proprit appartient. Par exemple, la classe de la proprit Position est Point, Point indique que la valeur de la proprit est un point deux dimensions. Comme il nest pas mentionn [ r/o ] ct de la proprit Position, vous pouvez rgler sa valeur. La classe dune proprit peut tre une classe de valeur simple comme String ou Number, une classe de valeur compose comme Point, ou une classe plus complexe, avec peut-tre ses propres proprits.

Les classes dlment


Les lments sont des objets contenus lintrieur dun objet. Les classes dlment numres dans une dfinition de classe dobjet indiquent les types

Les dfinitions des classes dobjet

T3 - 10

Chapitre 2

Tome 3

dlments que cette classe dobjet peut contenir. Un objet peut contenir beaucoup dlments ou aucun, et le nombre dlments quil contient peut varier tout moment. Par exemple, il peut arriver quun objet Paragraph ne contienne pas de mots un moment donn, mais un peu plus tard, le mme paragraphe pourrait en contenir beaucoup. Beaucoup dobjets dapplication ou systme peuvent contenir des lments. La dfinition de la classe dobjet window extraite du dictionnaire du Finder (T3 - p.8) na pas dlments, alors que la dfinition de la classe dobjet window extraite du dictionnaire dAppleWorks (T3 - p.9) comporte Panes, Splits et dautres lments non-lists ici.

Les classes de valeur retournes par dfaut


Chaque objet a une valeur. Par exemple, la valeur dun objet Word est une chane de caractres qui peut comporter des informations de style et de police. Vous pouvez obtenir la valeur dun objet dapplication ou systme en lui envoyant une commande Get ou simplement en sy rfrant dans un script. Si la commande Get nindique pas prcisment une classe de valeur pour la valeur retourne, la classe de valeur par dfaut est utilise. Pour beaucoup de classes dobjet, la classe de valeur par dfaut est une rfrence un objet de ce type de classe. Par exemple, la valeur par dfaut dun objet Window comme dfini prcdemment est une rfrence un objet Window. Les rfrences sont dcrites en dtails dans le chapitre suivant.

T3 - 11

Les dfinitions des classes dobjet

Chapitre 3

Tome 3

Les rfrences

Une rfrence est une phrase qui spcifie un ou plusieurs objets. Vous utiliserez les rfrences pour identifier des objets dans des applications. Un exemple de rfrence :
tell application "Finder" file 1 of folder 1 of startup disk end tell

Cette rfrence identifie le premier fichier du premier dossier du disque de dmarrage. Le terme startup disk et dautres termes spciaux comprhensibles par le Finder sont dcrits dans Visualiser un rsultat dans la fentre rsultat de lditeur de scripts (T2 - p.20). Une rfrence dcrit quel type dobjet vous recherchez, o rechercher lobjet, et comment distinguer lobjet des autres objets du mme type. Ces trois types dinformation - la class, ou type ; le container, ou lemplacement ; et le reference form, ou la caractristique - vous permettent de spcifier nimporte quel objet dune application. En gnral, vous listez le type et la caractristique au dbut dune rfrence, suivis par lemplacement. Dans lexemple prcdent, la classe de lobjet est file. Lemplacement est la phrase folder 1 of startup disk. La caractristique est la combinaison de la classe, file, et dune valeur dindex, 1, lesquelles, ensemble, indiquent le premier fichier. Les rfrences vous permettent didentifier les objets de manire flexible et intuitive. De mme quil peut y avoir plusieurs faons didentifier un objet sur le bureau, AppleScript a diffrentes formes de rfrence qui vous permettent de spcifier le mme objet de diffrentes manires. Par exemple, une autre faon de spcifier le premier fichier du premier dossier du disque de dmarrage :
tell application "Finder" file before file 2 of first folder of startup disk end tell

Comme le premier fichier du premier dossier du disque de dmarrage peut changer (si les fichiers ou le dossier sont ajouts ou supprims, ou ont leurs

Les rfrences

T3 - 12

Chapitre 3

Tome 3

noms modifis, ou si le disque de dmarrage est modifi), vous pourriez avoir besoin dutiliser une rfrence plus spcifique :
tell application "Finder" file "SimpleText" of folder "Applications" of disk "Disque dur" end tell

Pour plus dinformations dtailles sur les spcifications de fichiers, voir Les rfrences aux fichiers (T3 - p.39). Pour crire des scripts, vous devrez tre familier avec les formes de rfrence dAppleScript et savoir comment utiliser les containers et les formes de rfrence pour identifier lobjet que vous voulez manipuler. Ces sujets sont dcrits tout au long de ce chapitre.

Les containers
Un container est un objet qui contient un ou plusieurs objets. Dans une srie, lobjet le plus petit est list en premier, suivi par les objets plus grands qui le contiennent. Utiliser les mots of ou in pour sparer chaque objet en fonction de sa grandeur. Dans lexemple suivant, le corps du texte est contenu dans un objet plus gnral document, le paragraphe trois est contenu dans lobjet plus gnral text, et le quatrime mot dans lobjet plus gnral paragraph.
tell application "AppleWorks" word 4 in paragraph 3 of text body of front document end tell

Vous pouvez aussi utiliser la forme possessive (s) pour spcifier les containers. Si vous utilisez la forme possessive, crivez le container avant lobjet quil contient. Dans lexemple suivant, le container est first window . Lobjet quil contient est une proprit Name.
tell application "AppleWorks" first windows name end tell

Toutes les proprits et tous les lments ont des containers. Lexemple prcdent spcifie la proprit Name dune fentre, proprit contenue dans un objet window. De mme, lexemple suivant spcifie la proprit Style, contenue dans un objet text.
T3 - 13 Les rfrences

Chapitre 3

Tome 3

tell application "AppleWorks" style of text body of front document end tell

Les rfrences compltes ou partielles


Une rfrence complte a assez dinformations pour identifier un objet ou exceptionnellement des objets. Pour quune rfrence un objet dapplication soit complte, lultime container doit tre lapplication elle-mme, comme dans
version of application "Finder" --rsultat : "8.6" version US --rsultat : "FU1-8.6" version FR

Notes des traducteurs francophones Notez que si vous avez besoin dcrire une instruction devant vrifier la compatibilit de votre script avec une version dun fichier Apple install (Systme, Finder, etc...), les versions franaises comportent trs souvent FU1. en dbut. (merci Daniel ;-) ). q Par contre, les rfrences partielles nont pas assez dinformations pour identifier un objet ou exceptionnellement des objets ; par exemple :
delete file 1 of disk 4

Quand AppleScript rencontre une rfrence partielle, il essaie dutiliser la cible par dfaut spcifie dans linstruction Tell pour complter la rfrence. La cible par dfaut dune instruction Tell est lobjet qui reoit les commandes si aucun autre objet nest indiqu. Par exemple, linstruction Tell suivante demande au Finder de supprimer le premier fichier du quatrime disque, en utilisant la rfrence partielle prcdente.
tell application "Finder" delete file 1 of disk 4 end tell

De mme, linstruction Tell suivante demande au document AppleWorks lavant-plan dobtenir le style de son texte.
tell document 1 of application "AppleWorks" get style of text body -- ou style of text body end tell

Les rfrences

T3 - 14

Chapitre 3

Tome 3

Les instructions Tell peuvent contenir dautres instructions Tell, situation appele instructions imbriques. Quand AppleScript rencontre une rfrence partielle dans une instruction Tell imbrique, il essaie de complter la rfrence en commenant par linstruction Tell la plus proche. Si cette opration ne lui fournit pas assez dinformations, AppleScript utilise alors lobjet direct de linstruction Tell suivante, et ainsi de suite. Par exemple, linstruction Tell suivante est quivalente lexemple prcdent avec le Finder.
tell application "Finder" tell file 1 of disk 4 delete end tell end tell

Cet exemple fonctionne car toutes les instructions imbriques visent la mme application, le Finder. Pour plus dinformations concernant les restrictions de lutilisation des instructions Tell imbriques, voir Les instructions Tell (T5 p.11).

T3 - 15

Les rfrences

Chapitre 4

Tome 3

Les formes de rfrence

Une forme de rfrence est la syntaxe, ou la rgle, pour crire une phrase qui identifie un objet ou un groupe dobjets. Par exemple, la forme de rfrence Index vous autorise identifier un objet par son numro dindex, comme dans :
word 5 of paragraph 10

Applescript inclut dautres formes de rfrence pour identifier des objets dans les applications. Le tableau, ci-dessous, rsume les formes de rfrence que vous pouvez utiliser pour identifier des objets et fournit des liens vers les sections qui les dcrivent en dtails. Chaque section comporte une brve explication, un rsum de la syntaxe, et des exemples sur lutilisation de cette forme de rfrence pour spcifier les objets dapplication. La forme de rfrence Filter est dcrite de faon plus dtaille dans Utilisation de la forme de rfrence Filter (T3 - p.36).

Les formes de rfrence


Rfrence But

Arbitrary Element (T3 - p.17)

spcifie un objet arbitraire dans un container (rarement utilise)

Every Element (T3 - spcifie chaque objet dune classe particulire dans un p.18) container Filter (T3 - p.20) spcifie chaque objet dans un container particulier qui remplit les conditions imposes par une expression boolenne spcifie un objet par sa proprit ID spcifie la position dun objet par rapport au dbut ou la fin dun container

ID (T3 - p.21) Index (T3 - p.24)

Middle Element (T3 spcifie lobjet qui est au milieu dun container - p.26) (rarement utilis)

Les formes de rfrence

T3 - 16

Chapitre 4

Tome 3

Les formes de rfrence (suite)


Rfrence But

Name (T3 - p.27)

spcifie un objet par sa proprit Name

Property (T3 - p.29) spcifie une proprit dun objet dapplication, dun enregistrement, dun script-objet, ou une date Range (T3 - p.30) spcifie une srie dobjets

Relative (T3 - p.32) spcifie la position dun objet en fonction dun autre objet dans un mme container

Arbitrary Element
La forme de rfrence Arbitrary Element spcifie un objet arbitraire dans un container. Si le container est une valeur (comme une liste), AppleScript choisit un objet de faon alatoire (il utilise un gnrateur de nombre alatoire pour choisir lobjet). Si le container est un objet dapplication, il a la qualit dapplication pour choisir un objet et il peut choisir un objet au hasard ou pas du tout. Cette forme est rarement utilise.

Syntaxe some className

o className est lidentificateur de classe de lobjet dsir.

Exemples

Les exemples suivants retournent un fichier dun disque et un mot dun document, tous les deux de faon alatoire. Comme un lment arbitraire est, par sa nature, alatoire, cette forme est rarement utilise dans le traitement des groupes de fichiers, de mots, ou dautres objets.

T3 - 17

Les formes de rfrence

Chapitre 4

Tome 3

tell application "Finder" some file of startup disk end tell tell application "AppleWorks" some word of text body of front document end tell

Every Element
La forme de rfrence Every Element spcifie chaque objet dune classe particulire dans un container.

Syntaxe every className

pluralClassName o className est un nom de classe au singulier(comme word ou paragraph). pluralClassName est la forme plurielle (comme words ou paragraphs) dfinie par AppleScript ou une application. La forme plurielle dun nom de classe dobjet a le mme effet que le mot every avant un nom de classe dobjet. Les formes plurielles sont listes dans les dictionnaires des applications.

Valeur

La valeur dune rfrence Every Element est une liste des objets du container. Si le container ne contient aucun objet de la classe spcifie, la liste est une liste vide. Par exemple, la valeur de lexpression
every word of {1, 2, 3}

est une liste vide :


{}

Les formes de rfrence

T3 - 18

Chapitre 4

Tome 3

Exemples

Lexemple suivant assigne une chane de caractres la variable maChaine, puis utilise la forme de rfrence Every Element pour spcifier chaque mot contenu dans la chane.
set maChaine to "Cest tout, Albert!" every word of maChaine

La valeur de la rfrence every word of maChaine est une liste avec trois lments :
{"Cest", "tout", "Albert"}

La rfrence suivante produit la mme liste :


words of maChaine

Lexemple suivant spcifie une liste de tous les fichiers contenus dans le dossier Tableaux de bord :
tell application "Finder" every file in control panels folder end tell

Lexemple suivant spcifie la mme liste que lexemple prcdent :


tell application "Finder" files in control panels folder end tell

Notes

Si vous spcifiez une rfrence Every Element comme le container dune proprit ou dun objet, le rsultat est une liste contenant la proprit spcifie ou lobjet spcifi pour chaque objet du container. Le nombre dlments de la liste est le mme que le nombre dobjets dans le container. Par exemple, la valeur de la rfrence
length of every word

est une liste comme

T3 - 19

Les formes de rfrence

Chapitre 4

Tome 3

{2, 3, 6}

Le premier lment de la liste est la longueur du premier mot, le second lment est la longueur du second mot et ainsi de suite.
Notes des traducteurs francophones

Sous rserve, il semblerait que cette particularit ne fonctionne quavec certaines applications. q

Filter
La forme de rfrence Filter spcifie tous les objets dun container qui remplissent une ou plusieurs conditions imposes par une expression boolenne. La forme de rfrence Filter spcifie uniquement des objets dapplication. Elle ne peut pas tre utilise pour filtrer des objets AppleScript : listes, enregistrements ou chanes de caractres. Pour plus dinformations, voir Utilisation de la forme de rfrence Filter (T3 - p.36).

Syntaxe

referenceToObject ( whose | where ) boolean o referenceToObject est une rfrence qui spcifie un ou plusieurs objets. boolean est une expression boolenne quelconque. Les termes whose et where ont la mme signification.

Exemples

Lexemple suivant spcifie une liste des rfrences des fichiers du dossier Tableaux de bord dont le type de fichier est APPL.
tell application "Finder" every file in control panels folder whose file type is "APPL" end tell

Lexemple suivant spcifie toutes les fentres dAppleWorks qui ne

Les formes de rfrence

T3 - 20

Chapitre 4

Tome 3

correspondent pas un nom donn :


tell application "AppleWorks" every window whose name is not "Rature" end tell

Vous trouverez plus dexemples de la forme de rfrence Filter dans le chapitre Utilisation de la forme de rfrence Filter (T3 - p.36).

Notes

Sauf pour la forme de rfrence Every Element, lapplication retourne une erreur si aucun objet ne passe le test ou les tests. Pour la forme de rfrence Every Element, lapplication retourne une liste vide, {}, si aucun objet ne passe le test ou les tests. Pour spcifier un container aprs un filtre, vous devez mettre le filtre et la rfrence vise par le filtre entre parenthses. Par exemple, les parenthses autour de files whose file type is "APPL", dans la rfrence suivante, sont requises car le container in control panels folder suit le filtre.
tell application "Finder" (files whose file type is "APPL") in control panels folder end tell

ID
La forme de rfrence ID (ID vient de identification) spcifie un objet par la valeur de sa proprit ID. Vous pouvez utiliser cette forme de rfrence uniquement avec des objets qui ont une proprit ID.

Syntaxe

className id IDvalue o className est lidentificateur de classe de lobjet spcifi. IDvalue est la valeur de la proprit ID de lobjet.

T3 - 21

Les formes de rfrence

Chapitre 4

Tome 3

Exemples tell application "Finder" id of every disk -- rsultat : {-1, -2, -3} id of disk "Disque Dur" -- rsultat : -2 end tell

Notes

Bien que les proprits ID soient la plupart du temps des nombres entiers, une proprit ID peut appartenir nimporte quelle classe. Une application qui inclut des proprits ID doit garantir que les IDs sont uniques lintrieur dun container. Quelques applications peuvent aussi fournir des garanties supplmentaires, comme assurer lunicit dun ID parmi tous les objets. La valeur dune proprit ID nest pas modifiable. Elle ne change pas, mme si lobjet est dplac lintrieur du container. Cette particularit vous permet de sauvegarder lID dun objet et de lutiliser pour se rfrer lobjet tant quil existe. Dans certains scripts, vous pouvez souhaiter vous rfrer un objet par son ID, plutt que par une proprit qui peut tre modifie, comme son nom. Les deux exemples suivants montrent lavantage utiliser lID quand vous crez un nouveau dossier et que vous le renommez. Le prochain script gnre une erreur car ce script obtient la rfrence dun dossier nouvellement cr, le rebaptise, puis essaie dutiliser la rfrence (laquelle se rfre encore en utilisant le nom dorigine) pour ouvrir le dossier :
tell application "Finder" set nouveauDossier to make new folder at startup disk -- rsultat : folder "Dossier sans titre" of startup disk -of application "Finder" set name of nouveauDossier to "Nouveau Nom" open nouveauDossier -- rsultat : Erreur, car le dossier a t rebaptis mais -la rfrence se rfre toujours loriginal, -le dossier "Dossier sans titre" end tell

Les formes de rfrence

T3 - 22

Chapitre 4

Tome 3

Le script suivant cre un nouveau dossier, le rebaptise, et louvre avec succs car il utilise lID du dossier, lequel ne change pas quand on modifie le nom du dossier :
tell application "Finder" set nouveauDossier to make new folder at startup disk -- rsultat : folder "Dossier sans titre" of startup disk -of application "Finder" set nouveauDossierID to id of nouveauDossier -- rsultat : un ID, comme 27568 set name of nouveauDossier to "Nouveau Nom" open folder nouveauDossierID of startup disk -- rsultat : le nouveau dossier nomm "Nouveau Nom" -souvre avec succs en utilisant lID -du dossier, lequel est unique et permanent. end tell

Au lieu dutiliser un nom, vous pourriez suivre la trace dun fichier ou dun dossier par son index, en utilisant des instructions comme open file 1 ou open the first folder. Toutefois si un fichier est dplac/slectionn manuellement dans la fentre du dossier (ouverte donc), lindex est modifi (le fichier se retrouve dernier). Donc les rfrences dindex risquent de se rfrer un lment diffrent aprs la manipulation. Vous pouvez utiliser un ID pour suivre la trace dun fichier ou dun dossier, pourtant comme le Finder ne supporte pas gnralement louverture dun fichier ( et certains dossiers) par son ID, vous devrez utiliser une approche similaire celle prsente dans le script suivant :
tell application "Finder" set fichierID to the id of the first file of disk "Disque Dur" -- le script excute certaines commandes qui, -- directement ou indirectement, provoque la -- rednomination du fichier en "Nouveau fichier" set nomFichier to the name of the first file of disk "Disque Dur" whose ID is fichierID -- rsultat : "Nouveau fichier" open file nomFichier of disk "Disque Dur" -- ouverture du fichier de dpart end tell

La meilleur faon de suivre la trace des fichiers ou des dossiers est dutiliser une rfrence dalias, comme dcrit dans Les rfrences aux fichiers (T3 p.39).

T3 - 23

Les formes de rfrence

Chapitre 4

Tome 3

Les applications ne sont pas obliges de supporter les proprits ID. Pour savoir si une application utilise les proprits ID ou comment elle le fait, rfrez-vous sa documentation.

Index
La forme de rfrence Index spcifie un objet ou un emplacement en dcrivant sa position par rapport au dbut ou la fin dun container. Plus plus dinformations, voir Relative (T3 - p.32).

Syntaxe

className [ index ] integer integer ( st | nd | rd | th ) className


( first | second | third | fourth | fifth | sixth | seventh | eighth | ninth | tenth ) className ( last | front | back ) className

o className est lidentificateur de classe de lobjet vis. integer est un nombre entier qui dcrit la position de lobjet en fonction du dbut du container (si integer est un nombre entier positif) ou en fonction de la fin du container (si integer est un nombre entier ngatif). Les formes first, second et suivantes, sont quivalentes aux rangs numriques correspondants (par exemple, second word est quivalent 2nd word). Pour les objets dont lindex est suprieur 10, vous pouvez utiliser les formes 12th, 23rd, 101st, etc...(Notez que nimporte quel nombre entier suivi par nimporte lequel des suffixes lists plus haut est valide ; par exemple, vous pouvez utiliser 11rd pour vous rfrer au onzime objet). La forme front (par exemple, front window) est quivalente className 1 ou first className. Les formes last et back (par exemple, last word et back window) se rfrent au dernier objet du container. Elles sont quivalentes className -1.

Les formes de rfrence

T3 - 24

Chapitre 4

Tome 3

Exemples

La plupart des exemples de cette section requirent dtre encadrs par une instruction Tell, visant le Finder ou une application de traitement de texte comme AppleWorks, pour tre compils. Chacune des rfrences suivantes spcifie le premier fichier du disque de dmarrage :
file 1 of the startup disk file index 1 of the startup disk the first file of the startup disk

Les rfrences suivantes spcifient le second mot partir du dbut du troisime paragraphe :
word 2 of paragraph 3 2nd word of paragraph 3 second word of paragraph 3

Les rfrences suivantes spcifient le dernier mot dans le troisime paragraphe :


word -1 of paragraph 3 last word of paragraph 3

La rfrence suivante spcifie lavant-dernier mot du troisime paragraphe :


word -2 of paragraph 3

Lexemple suivant contient deux rfrences. La premire fait rfrence au quatrime mot du document Introduction. La seconde fait rfrence au dernier point dinsertion dans ce mme document.
tell application "AppleWorks" move word 4 of text body of document "Introduction" to end of text body of document "Introduction" end tell

La rfrence suivante spcifie le premier fichier du premier dossier du disque de dmarrage :


tell application "Finder" file 1 of folder 1 of startup disk

T3 - 25

Les formes de rfrence

Chapitre 4

Tome 3

end tell

Notes

Un index peut tre volatile. Modifier certaines proprits dun objet peut entraner la modification de son index, ainsi que lindex des autres objets contenus dans le mme container. Par exemple, aprs la suppression du fichier 4 dans un dossier, le fichier nexiste plus. Mais il peut encore y avoir un fichier 4 (le fichier qui tait, avant la suppression, le numro 5). Aprs la suppression du fichier 4, tous les fichiers avec un index suprieur 4 ont reu un nouvel index. Aussi lobjet vis par la rfrence dindex peut changer. Pour une unique et persistante rfrence un objet, vous pouvez utiliser la forme de rfrence ID (T3 - p.21), bien sr si lapplication la supporte avec les classes dobjet vises. Par exemple, le Finder supporte la forme de rfrence ID avec les fichiers, les dossiers, les disques et plus. La meilleur faon de garder le chemin dun fichier est dutiliser une rfrence dalias, comme dcrit dans Les rfrences aux fichiers (T3 - p.39).

Middle Element
La forme de rfrence Middle Element spcifie lobjet dune classe particulire qui est au centre dun container. Cette forme est rarement utilise.

Syntaxe middle className

o className est lidentificateur de classe de lobjet vis.

Exemples tell application "AppleWorks" middle paragraph of text body of front document end tell

Les formes de rfrence

T3 - 26

Chapitre 4

Tome 3

middle item of {1, 2, 3} -- rsultat : 2 middle item of {"France", 20, "Angleterre", 15} -- rsultat : 20 middle item of {1, 2, 3, 4, 5} -- rsultat : 3

Notes

AppleScript dtermine lobjet au centre avec lexpression ((n+1)div 2), o n reprsente le nombre dobjets et div est loprateur de division. Sil y a un nombre pair dobjets dans le container, le rsultat est arrondi au nombre entier immdiatement infrieur. Par exemple, le mot au centre dun paragraphe contenant 20 mots est le dixime mot.

Name
La forme de rfrence Name spcifie un objet par son nom.

Syntaxe

className [ named ] nameString o className est lidentificateur de classe de lobjet vis. nameString est la valeur de la proprit Name de lobjet (voir Notes).

Exemples

Les instructions suivantes identifient un objet par son nom :


close document "Rapport" close window named "Aide"

Notez la distinction entre une instruction qui spcifie le nom actuel dun objet, une instruction qui spcifie un objet par son nom et une instruction qui spcifie une rfrence au nom de lobjet :
-- spcification du nom dun fichier :

T3 - 27

Les formes de rfrence

Chapitre 4

Tome 3

tell application "Finder" name of first file in extensions folder end tell (* rsultat : "LaserWriter 8" (une chane de caractres reprsentant le nom du fichier) *) -- spcification dun fichier par son tell application "Finder" file "LaserWriter 8" in extensions end tell (* rsultat : file "LaserWriter 8" of folder "System 8.5.1" of startup disk (une rfrence dun objet fichier) *) nom : folder folder "Extensions" of of application "Finder"

-- spcification dune rfrence au nom dun fichier : tell application "Finder" a reference to name of first file in extensions folder end tell (* rsultat : name of file 1 of extensions folder of application "Finder" (une rfrence au nom de lobjet) *)

Notes

Dans certaines applications, il est possible davoir de multiples objets de la mme classe dans le mme container avec le mme nom. Par exemple, sil y a deux disques nomms Disque Dur, linstruction suivante est ambigu (du moins pour le lecteur) :
tell application "Finder" file 1 of disk "Disque Dur" end tell

Dans ce cas, cest lapplication qui dtermine quel objet est spcifi par la rfrence Name. Pour les applications et les fichiers, le paramtre nameString peut tre une chane de caractres telle que Disque:Dossier1:Dossier2:...Fichier ; pour plus de dtails, voir Les rfrences aux fichiers (T3 - p.39) et Les rfrences aux applications (T3 - p.43). Pour plus dinformations sur les proprits Name des diffrentes sortes dobjets, voir les dfinitions des classes dobjet fournies par la documentation AppleScript ou la documentation des applications.

Les formes de rfrence

T3 - 28

Chapitre 4

Tome 3

Property
La forme de rfrence Property spcifie une proprit dun objet dapplication, dun script-objet, dun enregistrement ou dune date.

Syntaxe

propertyLabel o propertyLabel est ltiquette de la proprit.

Exemples

Lexemple suivant est une rfrence la proprit Name de la fentre se trouvant lavant-plan. Elle liste ltiquette de la proprit (name) et son container (front window).
name of front window

Lexemple suivant est une rfrence la proprit PrixUnitaire dun enregistrement. Un enregistrement est une valeur AppleScript qui consiste en une collection de proprits. Pour plus dinformations sur les enregistrements, voir Record (T1 - p.50). Ltiquette de la proprit est PrixUnitaire et le container est lenregistrement.
PrixUnitaire of {Produit:"CDR", PrixUnitaire:1.5, Quantite:10}

Notes

Les tiquettes des proprits sont listes dans les dfinitions de classe dobjets dans les dictionnaires dapplication. Comme une tiquette de proprit est unique dans un objet, ltiquette suffit pour distinguer une proprit parmi toutes les autres proprits dun objet. la diffrence des autres formes de rfrence, il nest pas ncessaire de spcifier la classe de lobjet.

T3 - 29

Les formes de rfrence

Chapitre 4

Tome 3

Range
La forme de rfrence Range spcifie une suite dobjets de la mme classe dans le mme container. Vous pouvez spcifier les objets avec une paire dindex (comme words 12 thru 24) ou avec une paire dobjets limitatifs (comme words from paragraph 3 to paragraph 5).

Syntaxe every className from boundaryReference1 to boundaryReference2

pluralClassName from boundaryReference1 to boundaryReference2 className startIndex ( thru | through ) stopIndex pluralClassName startIndex ( thru | through ) stopIndex o className est une classe dID au singulier (comme word ou paragraph). pluralClassName est le pluriel de lidentificateur de classe dfini par AppleScript ou une application (comme words ou paragraphs). boundaryReference1 et boundaryReference2 sont des rfrences aux objets qui limitent la zone dintervention de la rfrence. Cette zone dintervention inclut les objets limitatifs. Vous pouvez utiliser le terme rserv beginning la place de boundaryReference1 pour indiquer la position avant le premier objet du container. De mme, vous pouvez utiliser le terme rserv end la place de boundaryReference2 pour indiquer la position aprs le dernier objet du container. startIndex et stopIndex sont les index du premier et du dernier objet de la zone dintervention (comme 1 et 10 dans words 1 thru 10).

Valeur

La valeur dune rfrence Range est une liste des objets de la zone dintervention. Si le container spcifi ne contient pas tous les objets spcifis dans la rfrence, une erreur est retourne. Par exemple, le rsultat de la

Les formes de rfrence

T3 - 30

Chapitre 4

Tome 3

rfrence suivante est une erreur.


words 1 thru 3 of {1, 2, 3} -- rsultat : erreur

Exemples

Dans lexemple suivant, la phrase folders 3 thru 4 est une rfrence Range qui spcifie une liste de deux dossiers dans le container startup disk.
tell application "Finder" folders 3 thru 4 of startup disk end tell (* rsultat : {folder "AppleScript" of startup disk of application "Finder", folder "Apple Extras" of startup disk of application "Finder"} *)

Dans lexemple suivant, files est une rfrence synonyme de every file, et la phrase folders 3 thru 4 of startup disk est un container rfrence constitu de la rfrence Range folders 3 thru 4 et du container startup disk.
tell application "Finder" files of folders 3 thru 4 of startup disk end tell

Pour obtenir le rsultat, AppleScript obtient en premier la valeur du container, une liste de deux dossiers sur le disque de dmarrage. AppleScript obtient alors tous les fichiers de chacun des dossiers, une simple liste de noms de fichiers. Le rsultat dpendra du contenu de votre disque de dmarrage.

Notes

Si vous spcifiez une rfrence Range comme le container pour une proprit ou un objet, comme dans
name of files 2 thru 3 of startup disk

le rsultat est une liste contenant la proprit spcifie ou lobjet de chaque objet du container. Le nombre dlments dans la liste est le mme que le nombre dobjets dans le container. Par exemple, la valeur de cette rfrence pourrait tre

T3 - 31

Les formes de rfrence

Chapitre 4

Tome 3

{"ASP memory report", "BBEdit 5.0.2 Update.img"}

Le premier lment de la liste est le nom du second fichier du disque de dmarrage, et le second lment est le nom du troisime fichier. Pour se rfrer une srie continue de caractres - au lieu dune liste - quand vous spcifiez une range dobjets de texte, utilisez llment Text. Text est un lment de la plupart des objets de texte et il est aussi un lment des chanes de caractres AppleScript. Par exemple, comparez les valeurs des rfrences suivantes :
words 1 thru 4 of "En fin de compte, finalement" -- rsultat : {"En", "fin", "de", "compte"} text from word 1 to word 4 of "En fin de compte, finalement" -- rsultat : "En fin de compte" text of words 1 thru 4 of "En fin de compte, finalement" -- rsultat : {"En", "fin", "de", "compte"}

Relative
La forme de rfrence Relative spcifie un objet ou un emplacement en dcrivant sa position par rapport un autre objet, connu comme la rfrence, dans le mme container.

Syntaxe [ className ] ( before | [in] front of ) baseReference [ className ] ( after | [in] back of | behind ) baseReference

o className est lidentificateur de classe de lobjet spcifi. Si vous omettez ce paramtre, AppleScript suppose que vous voulez un point dinsertion. baseReference est une rfrence lobjet rfrence.

Les formes de rfrence

T3 - 32

Chapitre 4

Tome 3

Les formes before et in front of, qui sont quivalentes, se rfrent lobjet prcdant immdiatement lobjet rfrence. Les formes after, in back of, et behind sont quivalentes et se rfrent lobjet suivant immdiatement lobjet rfrence. Les formes suivantes se rfrent des points dinsertion :
beginning | front end | back

Les formes beginning et front sont quivalentes et se rfrent au premier point dinsertion du container (insertion point 1). Les formes end et back sont quivalentes et se rfrent au dernier point dinsertion du container ( insertion point -1). Bien que les termes comme beginning et end ressemblent des positions absolues, ils sont relatifs au contenu existant dans le container ( avant ou aprs le contenu existant).

Exemples

Les deux rfrences dans linstruction Tell suivante spcifient le mme fichier par lidentification de sa position relative par rapport un autre fichier sur le disque.
tell application "Finder" file before file 3 of startup disk file in front of file 3 of startup disk end tell

Lexemple suivant contient trois rfrences. Les deux premires sont des rfrences Index qui spcifient le document lavant-plan et le premier mot. La troisime est une rfrence Relative qui spcifie le point dinsertion avant le troisime paragraphe. La commande Move dplace le premier mot vers le point dinsertion avant le troisime paragraphe.
tell front document of application "AppleWorks" move word 1 of text body to before paragraph 3 of text body end tell

T3 - 33

Les formes de rfrence

Chapitre 4

Tome 3

Lexemple suivant dplace le premier mot dun document appel Introduction vers le dernier point dinsertion du document, puis il dplace le dernier mot du document vers le premier point dinsertion ( la place du premier mot en fait).
tell application "AppleWorks" move word 1 of text body of document "Introduction" to end of text body of document "Introduction" move last word of text body of document "Introduction" to beginning of text body of document "Introduction" end tell

Lexemple suivant est le mme que lexemple prcdent, except quil utilise in front et in back au lieu de beginning et end.
tell application "AppleWorks" move word 1 of text body of document "Introduction" to in back of text body of document "Introduction" move last word of text body of document "Introduction" to in front of text body of document "Introduction" end tell

De plus, afin de simplifier lcriture du script et dviter la rptition de of document "Introduction", vous pouvez insrer cette rfrence ds la premire ligne de linstruction Tell comme
tell document "Introduction" of application "AppleWorks"

Pour plus dinformations sur les instructions Tell, voir Les instructions Tell (T5 - p.11).

Notes

Vous ne pouvez spcifier quun seul objet avec la forme Relative. Vous pouvez utiliser cette forme pour spcifier un objet qui est soit avant ou soit aprs lobjet rfrence. Sil arrive que lobjet spcifi contienne lobjet rfrence (comme dans lexpression paragraph before word 99), la rfrence ne visera pas le container mais lobjet immdiatement avant le paragraphe contenant le 99me mot. Toutes les applications autorisent la spcification dun objet rfrence

Les formes de rfrence

T3 - 34

Chapitre 4

Tome 3

appartenant la mme classe que lobjet dsir (comme window in back of window "Big"). Par contre, toutes nautorisent pas la spcification dun objet rfrence nappartenant pas la mme classe que lobjet dsir (comme word before figure 1 ). Les classes de rfrence possibles pour une classe particulire sont propres chaque application.

T3 - 35

Les formes de rfrence

Chapitre 5

Tome 3

Utilisation de la forme de rfrence Filter

Quand vous spcifiez un ou plusieurs objets contenus dans un objet dapplication, vous pouvez utiliser la forme de rfrence Filter pour ajouter un filtre optionnel. Un filtre restreint les objets viss ceux qui remplissent une ou plusieurs conditions.
Note

Pour compiler les exemples de ce chapitre, vous devrez les inclure dans une instruction Tell. Les exemples avec file et window supposent une instruction Tell Finder ; les exemples avec paragraph supposent une instruction Tell AppleWorks. Si la condition spcifie par une instruction nest pas satisfaite, excuter le script peut retourner une liste vide ( {} ) ou provoquer une erreur. Pour plus dinformations sur les gestionnaires derreur, voir Les gestionnaires (T6 - p.6). x Comparez cette rfrence sans filtre
every file of extensions folder

la mme rfrence avec filtre


every file of extensions folder whose creator type is "OMGR"

La premire rfrence spcifie tous les fichiers du dossier Extensions du dossier systme. La seconde rfrence, qui comporte le filtre whose creator type is "OMGR", spcifie tous les fichiers du mme dossier dont le type de crateur est "OMGR". Les fichiers qui ne passent pas ce test sont ignors. En effet, un filtre rduit le nombre dobjets dans le container. Au lieu de spcifier chaque fentre dans le Finder, la rfrence suivante spcifie chaque mot dun container plus petit, les fentres qui sont ce moment l agrandies.
every window whose zoomed is true

Linstruction suivante est quivalente la prcdente :


windows where zoomed is true

Utilisation de la forme de rfrence Filter

T3 - 36

Chapitre 5

Tome 3

Pour dterminer les objets dans le plus petit container, lapplication applique le filtre tous les objets de la classe spcifie dans le container vis - dans ce cas, les fentres qui sont ce moment l agrandies. Rajouter une clause restrictive peut significativement augmenter le temps de traitement du script pour valuer la rfrence, car cette clause force lapplication tester chaque objet du type spcifi. Dans un filtre, la variable prdfinie it se rfre lobjet gnralement en cours de test. Par exemple, dans la rfrence suivante, le terme it se rfre chaque paragraphe dans le document Product Intro.
second paragraph of text body of document "Product Intro" where it contains "dynamo"

Le filtre, where it contains "dynamo", est appliqu chaque paragraphe du document, aboutissant un plus petit container dont les paragraphes contiennent tous la chane de caractres "dynamo". La rfrence spcifie le second paragraphe de ce plus petit container. Une rfrence Filter comporte un ou plusieurs tests. Chaque test est une expression boolenne qui compare une proprit ou un lment de chaque objet tester, ou les objets eux-mmes, avec un autre objet ou une autre valeur. Le tableau, ci-dessous, montre quelques rfrences Filter, lexpression boolenne quelles contiennent, et ce qui a t test dans chaque rfrence.
Expressions boolennes et tests dans des rfrences Filter

Rfrence Filter windows whose zoomed is true

Expression boolenne zoomed is true

Ce qui a t test

La proprit zoomed de chaque fentre La proprit name de chaque fentre La proprit creator type de chaque fichier

windows whose name isnt "Hard Disk" files whose creator type is "OMGR"

name isnt "Hard Disk"

creator type is "OMGR"

Un test peut tre nimporte quelle expression boolenne (comme files where 1 < 2 ), mais seules les expressions qui testent vraiment les objets ou leurs contenus sont utiles pour le filtrage des objets.

T3 - 37

Utilisation de la forme de rfrence Filter

Chapitre 5

Tome 3

Pour inclure plus dun test dans un filtre, liez les tests avec les oprateurs boolens, comme dans :
windows whose zoomed is true and floating is false

Ici loprateur boolen and indique que chaque fichier doit passer les deux tests pour tre inclu dans le container plus petit.
windows whose zoomed is true or floating is true

L loprateur boolen or indique que les fichiers peuvent ne passer quun seul des deux tests pour tre inclus dans le container plus petit. Comme chaque test est une expression boolenne, il peut aussi inclure loprateur boolen not. Par exemple, la rfrence suivante se rfre seulement aux fentres qui nont pas t agrandies et qui ne se nomment pas Disque Dur.
windows whose zoomed is false and not its name is "Disque Dur"

Lexpression its name is "Disque Dur" est une expression boolenne valide, et lui appliquer loprateur boolen not, comme dans
not (its name is "Disque Dur")

inverse la valeur de lexpression, ainsi une valeur true devient false, et une valeur false devient true. Une manire plus lgante dappliquer loprateur boolen not lexpression its name is "Disque Dur" est
its name isnt "Disque Dur"

Lexpression its name isnt "Disque Dur" est un synonyme de lexpression not (its name is "Disque Dur"). AppleScript supporte des synonymes pour beaucoup de ses oprateurs. Utiliser un synonyme ne modifie pas la signification dune expression, mais cette pratique peut rendre les expressions plus faciles lire. Pour plus dinformations sur les oprateurs et les synonymes, voir Les expressions (T4 - p.6).

Utilisation de la forme de rfrence Filter

T3 - 38

Chapitre 6

Tome 3

Les rfrences aux fichiers

Vous pouvez utiliser au choix une de ces formes pour vous rfrer nimporte quel fichier :
file nameString alias nameString

o nameString est une chane de caractres telle que Disque:Dossier1:Dossier2:...:Fichier qui spcifie exactement o le fichier est enregistr, ou une chane de caractres qui se compose seulement du nom du fichier. Disque: spcifie le disque dur de lordinateur sur lequel est enregistr le fichier. Dossier1:Dossier2:... spcifie la squence de dossiers que vous devez ouvrir pour accder au fichier sur le disque dur. Fichier spcifie le nom du fichier. Les systmes de fichier dans Mac OS, normalement, ne font pas de distinction entre les majuscules et les minuscules dans le nom des fichiers, bien que les applications comme AppleWorks peuvent distinguer la casse dans un document, une fentre ou dautres noms dobjet. Si nameString correspond uniquement au nom du fichier, AppleScript essaie de localiser le fichier dans le rpertoire courant de lapplication partir de laquelle le script est en train de tourner (par exemple, lditeur de scripts). Le rpertoire courant est le dossier ou le volume dont le contenu peut tre vu quand vous choisissez Open, Save, ou une commande apparente du menu Fichier de lapplication. Le rpertoire courant est le rpertoire do lapplication a t lance ou ouverte, ou le rpertoire dans lequel un document de cette application a t enregistr prcdemment, ou un autre rpertoire spcifi par lapplication. Le rpertoire courant peut tre affect par les rglages du tableau de bord Gnral.

Spcifier un fichier par son nom ou par son chemin daccs


Pour tre sr quune commande agit bien sur le bon fichier, spcifiez son chemin daccs en entier, y compris les noms du volume et des diffrents dossiers que vous devriez ouvrir pour accder au fichier.
T3 - 39 Les rfrences aux fichiers

Chapitre 6

Tome 3

Si vous utilisez une rfrence de la forme file nameString, AppleScript nessaie pas de localiser le fichier avant que le script soit effectivement lanc. Quand AppleScript excute linstruction qui accde au fichier, le fichier doit exister dans le dossier indiqu (ou, si seul le nom du fichier est fourni, dans le rpertoire courant) pour quAppleScript le localise. Certaines commandes, comme Save, cre un fichier avec le nom spcifi lemplacement indiqu si le fichier nexiste pas dj. Certaines commandes, comme Close et Save, peuvent remplacer un fichier existant dj avec le mme nom que le fichier spcifi (sil existe, bien sr).
tell application "Finder" open file "Disque Dur:Ventes Juin" end tell

Un des dsavantages de spcifier un fichier par son nom ou par son chemin daccs, est que si lutilisateur dplace le fichier ou le rebaptise, ou cre un dossier avec le mme nom au mme endroit, AppleScript ne pourra pas retrouver le fichier et le script ne sachvera pas correctement. Pour une approche plus robuste, voir Spcifier un fichier par un alias (T3 - p.41). Pour un exemple de script qui montre comment un script-application peut grer les chemin daccs des fichiers dposs sur son icone, voir Les gestionnaires Open (T6 - p.35).

Spcifier un fichier par une rfrence


Pour enregistrer une rfrence telle que file nameString dans une variable, vous pouvez utiliser loprateur A reference To comme dans lexemple qui suit :
tell application "Finder" set fileRef to a reference to file "Disque Dur:Ventes" -- rsultat : file "Disque Dur:Ventes" of application "Finder" end tell tell application "AppleWorks" open fileRef end

Quand vous spcifiez un fichier avec une rfrence de fichier, le fichier doit exister lorsque linstruction, qui utilise la rfrence, est excute. Vous ne pouvez pas contraindre un nom ou un chemin de fichier, sous la
Les rfrences aux fichiers T3 - 40

Chapitre 6

Tome 3

forme dune chane de caractres, en une rfrence de fichier. Par exemple, vous ne pouvez pas remplacer la seconde ligne du script prcdent avec la ligne suivante :
set fileRef to ("Disque Dur:Ventes" as file) -- rsultat : erreur !

Toutefois, vous pouvez excuter une contrainte avec la forme alias, comme dcrit dans la section suivante.

Spcifier un fichier par un alias


Si vous utilisez une rfrence telle que alias nameString, AppleScript cre un alias pour le fichier - une reprsentation du fichier, comme un alias sur le bureau, qui identifie le fichier o quil soit localis. AppleScript essaie de localiser le fichier chaque fois que vous compilez le script - cest dire, chaque fois que vous modifiez le script puis que vous essayez de vrifier sa syntaxe ou de lenregistrer ou de lexcuter. AppleScript traite un alias comme une valeur qui peut tre enregistre dans une variable et manipule dans un script. Vous navez pas besoin dutiliser loprateur A reference To. Par exemple, ce script enregistre dabord un alias dans la variable fileRef, puis utilise la variable dans une instruction Tell qui ouvre le fichier.
set fileRef to alias "Disque Dur:Ventes" tell application "AppleWorks" open fileRef end tell

Si vous enregistrez ce script comme un script-application ou un script compil, puis vous renommez le fichier Ventes ou vous le dplacez un autre endroit, lorsque vous allez relancer le script, celui-ci fonctionnera correctement et ouvrira le bon fichier. Vous pouvez contraindre un nom ou un chemin de fichier, sous la forme dune chane de caractres, en un alias. Par exemple, vous pouvez remplacer la premire ligne du script prcdent avec la ligne suivante :
set fileRef to ("Disque Dur:Ventes" as alias)

T3 - 41

Les rfrences aux fichiers

Chapitre 6

Tome 3

Diffrence entre File et Alias


La diffrence entre les formes file nameString et alias nameString est apparente quand le fichier en question est localis sur un ordinateur distant. Si vous utilisez la forme file nameString, AppleScript nessaiera pas de localiser le fichier tant que vous nexcuterez pas le script. Si vous utilisez la forme alias nameString, AppleScript essaiera de localiser le fichier chaque fois que vous compilerez le script, en requrant les privilges daccs appropris et peut-tre un mot de passe chaque fois.

Spcifier un fichier par File Specification


Vous pouvez utiliser File Specification pour vous rfrer un fichier qui nexiste peut-tre pas encore. Vous pouvez obtenir une valeur de la classe File Specification partir de la commande New File du complment standard AppleScript, ou dune commande dapplication qui retourne une valeur File Specification. La classe de valeur File Specification est dcrite T1 - p.71. Vous pouvez utiliser File Specification quand vous voulez laisser lutilisateur indiquer un nom et un emplacement pour le fichier qui peut ne pas exister, mais que vous crerez ou sauvegarderez plus tard. Par exemple, la premire instruction du script suivant utilise la commande New File du complment standard, laquelle affiche la bote de dialogue standard de Mac OS pour la cration de fichier, afin dobtenir de lutilisateur un nom et un emplacement pour le fichier crer. La seconde instruction affiche juste la classe de la valeur retourne. Dans ce cas, le script fournit un nom par dfaut, Rapport :
set fileSpec to new file default name "Rapport" class of fileSpec -- rsultat : file specification

Supposons que votre script ait ouvert un nouveau document AppleWorks nomm Sans titre et ait stock ce nom dans une variable appele DocumentCourant. Le document na pas encore t enregistr par le script sur le disque, mais le script a dj excut linstruction montre plus haut, lui permettant dobtenir une File Specification pour le fichier. Plus tard, votre script pourrait utiliser linstruction Tell suivante pour enregistrer le document AppleWorks :
tell application "AppleWorks" save document DocumentCourant in fileSpec end tell -- rsultat : "Sans titre" renomm et enregistr comme "Rapport"

Les rfrences aux fichiers

T3 - 42

Chapitre 7

Tome 3

Les rfrences aux applications


Vous pouvez utiliser cette forme pour vous rfrer nimporte quelle application :
application applicationNameString [ of machine computerName [ of zone AppleTalkZoneName ] ]

o applicationNameString est soit une chane de caractres telle que Disque:Dossier1:Dossier2:...:ApplicationName qui indique lendroit o lapplication est enregistre sur lordinateur local ou une chane de caractres qui se compose juste du nom de lapplication. Disque: indique le disque dur de lordinateur local sur lequel est enregistre lapplication. Dossier1:Dossier2:... spcifie la squence de dossiers que vous devez ouvrir pour accder lapplication sur le disque dur. ApplicationName spcifie le nom de lapplication. Si lapplication est localise sur un ordinateur distant, lapplication doit tre active et applicationNameString doit tre crit exactement comme le nom de lapplication apparaissant dans le menu application de lordinateur distant. AppleScript ne fait pas de distinction entre les majuscules et les minuscules dans le nom des applications. computerName (une chane de caractres) est le nom de lordinateur inscrit dans le tableau de bord Partage de fichiers de lordinateur sur lequel lapplication spcifie est active. Cette portion de rfrence est requise si lapplication est situe sur un ordinateur distant. AppleTalkZoneName (une chane de caractres) est le nom de la zone, sil y a, dans laquelle lordinateur distant est localis. Le nom doit apparatre dans la liste des zones AppleTalk affiche dans le slecteur. Aprs la compilation du script, une rfrece lapplication sur lordinateur local identifie cette application quelque soit lendroit o elle se trouve sur cet ordinateur. Ce comportement ressemble celui des alias. Toutefois, une rfrence une application sur un ordinateur distant ne compilera pas tant que lapplication ne sera pas active et que plusieurs autres conditions ne seront pas remplies ; voir Les rfrences aux applications distantes (T3 p.45).

T3 - 43

Les rfrences aux applications

Chapitre 7

Tome 3

Les actions que vous pouvez excuter sur une application spcifique dpendent de la faon dont lapplication qui a cr le fichier dfinit lobjet dapplication. AppleScript localise toujours lapplication comme il est dcrit dans les sections qui suivent, mais utilise la dfinition du dictionnaire de lapplication pour dterminer les caractristiques de lobjet, comme ses proprits, et les commandes quil peut grer.

Les rfrences aux applications locales


Vous pouvez spcifier une application sur lordinateur local avec une chane de caractres telle que Disque:Dossier1:Dossier2:...:ApplicationName qui indique lemplacement exact de lapplication. Si AppleScript narrive pas trouver lapplication lemplacement indiqu, il affiche une bote de dialogue dans laquelle il demande lutilisateur de lui indiquer cet emplacement. Vous pouvez aussi spcifier une application sur un ordinateur local avec juste le nom de lapplication (ApplicationName). Dans ce cas, AppleScript essaie de trouver une application avec ce nom parmi les applications actives. Si lapplication nest pas active, AppleScript essaie de la localiser dans le rpertoire courant. Si lapplication nest pas dans le rpertoire courant, AppleScript affiche une bote de dialogue demandant lutilisateur de lui indiquer lemplacement de lapplication. Si le nom de lapplication que vous slectionnez est diffrent du nom spcifi dans le script, le nom dans le script est modifi et prend le nom de lapplication que vous avez slectionne. Quand vous excutez un script sur le mme ordinateur que celui qui a servi le compiler (cest dire, celui sur lequel le script a t excut ou enregistr, ou a eu sa syntaxe vrifie la dernire fois), AppleScript trouvera lapplication spcifie dans le script original si vous lavez dplace ou si vous avez modifi son nom. Si lapplication a t enleve, AppleScript cherchera une autre version de la mme application. Comme avec les alias, il est parfois prfrable de stocker une rfrence une application dans une variable :
set x to application "AppleWorks" tell x to quit

Si vous enregistrez ce script comme un script-application ou un script compil, que vous dplacez lapplication AppleWorks vers un autre emplacement, vous modifiez son nom, puis que vous ouvrez de nouveau le
Les rfrences aux applications T3 - 44

Chapitre 7

Tome 3

script. Le nom AppleWorks, dans le script, sera remplac par le nouveau nom de lapplication, mais le script fonctionnera toujours correctement.

Les rfrences aux applications distantes


Si une application est sur un ordinateur distant, vous devez spcifier le nom de lapplication tel quil est inscrit dans le menu Applications, le nom de lordinateur et, si ncessaire, le nom de la zone dans laquelle lordinateur est localis :
quit application "AppleWorks" of machine "Ottos 2nd Best Server" of zone "Customer Service"

Pour quun script envoie des commandes une application distante, les conditions suivantes doivent tre satisfaites : Lapplication distante doit tre active. AppleScript nouvre pas les applications sur des ordinateurs distants. Lordinateur qui contient lapplication et lordinateur sur lequel le script est actif doivent tre connects un rseau. Le lien entre les applications doit tre activ (rglage du tableau de bord Partage de fichiers) Un accs pour lutilisateur (rglage du tableau de bord Utilisateurs et groupes) doit tre fourni. Lapplication doit pouvoir tre partage en rseau. Pour plus dinformations sur ces menus et les tableaux de bord, voir le Centre daide Mac OS. Le script suivant envoie des commandes une application distante, y compris la commande Quit quand le scrit est fini :
tell application "AppleWorks" of machine "Paulas Mac" of zone "Publications" open file "Disque Dur:Reports:Status report" close document "Status report" saving ask quit -- quit Appleworks end tell

T3 - 45

Les rfrences aux applications

Tome 4

Les expressions

Chapitre 1

Tome 4

Introduction

Une expression est une srie de termes AppleScript quelconques qui a une valeur. Vous utiliserez les expressions pour reprsenter ou gnrer des valeurs dans les scripts. Quand AppleScript rencontre une expression, il la convertit en valeur quivalente. Cela sappelle une valuation. Les types dexpressions les plus simples, appels expressions littrales, sont les reprsentations de valeurs dans les scripts. Pour plus dinformations sur les expressions littrales, y compris des exemples, voir le tome 1. Ce tome dcrit les expressions dans les chapitres suivants : Le rsultat des expressions (T4 - p.8) dcrit comment utiliser lditeur de scripts pour valuer une expression et afficher sa valeur. Les variables (T4 - p.9) dcrit comment crer et utiliser les variables. Les sujets abords couvrent les variables rfrences, le partage de donnes, la porte des variables, et les variables prdfinies disponibles dans AppleScript. Les proprits de script (T4 - p.17) dcrit les proprits dun script, lesquelles sont appeles containers pour les valeurs, que vous pouvez utiliser de la mme faon que pour les variables. Les proprits dAppleScript (T4 - p.20) dcrit les proprits globales dAppleScript, que vous pouvez utiliser dans nimporte quel script. Certaines proprits agissent comme des constantes, mais vous pouvez modifier les Text Item Delimiters quAppleScript utilise dans lexcution de diverses oprations sur les chanes de caractres. Les expressions rfrence (T4 - p.22) dcrit les expressions composes qui se rfrent aux objets dans les applications, et que vous pouvez utiliser pour reprsenter les valeurs dans les scripts. Les oprations (T4 - p.23) prsente sous forme de tableau les oprateurs dAppleScript.

T4 - 6

Introduction

Chapitre 1

Tome 4

Les oprateurs qui grent les oprandes de diverses classes (T4 - p.33) dcrit certains oprateurs spcifiques dAppleScript. La priorit des oprateurs (T4 - p.44) dcrit lordre de priorit des oprateurs. La gestion des dates et des heures (T4 - p.47) prsente les problmes lis lutilisation des dates dans les scripts.

Introduction

T4 - 7

Chapitre 2

Tome 4

Le rsultat des expressions

Le rsultat dune expression quelconque est sa valeur. Vous pouvez utiliser lditeur de scripts pour afficher le rsultat dune expression, vous la saisissez sur une ligne puis vous excutez le script. AppleScript retournera la valeur de lexpression. Voici un exemple : Ouvrez lditeur de scripts, si ce nest dj fait. Saisissez lexpression suivante dans la fentre de lditeur de scripts :
3 + 4

Cliquez sur le bouton Excuter de lditeur de scripts. Cela provoque lvaluation de lexpression par AppleScript, qui montre le rsultat, 7, dans la fentre Rsultat. Choisissez Afficher le rsultat dans le menu Commandes. Si la fentre Rsultat est cache par une autre fentre de lditeur de scripts, la fentre Rsultat viendra lavant-plan.

T4 - 8

Le rsultat des expressions

Chapitre 3

Tome 4

Les variables

Une variable est un container nominatif dans lequel une valeur est stocke. Quand AppleScript rencontre une variable dans une instruction, il value la variable en obtenant sa valeur. Les variables sont contenues dans un script, pas dans une application, et leurs valeurs sont normalement perdues quand vous fermez le script qui les contient. Si vous avez besoin de garder les valeurs des variables mme aprs la fermeture du script ou lextinction de lordinateur, utilisez les proprits au lieu des variables. Voir Les proprits de script (T4 - p.17) pour plus dinformations. Contrairement aux variables de certains langages de programmation, les variables AppleScript peuvent recevoir des valeurs de nimporte quelle classe. Par exemple, dans les instructions suivantes, dans la variable x, une chane de caractres y est dabord stocke, puis un nombre entier et finalement une valeur boolenne :
set x to "Titre" set x to 12 set x to true -- rsultat : "Titre" -- rsultat : 12 -- rsultat : true

Le nom dune variable est une srie de caractres, appel un identificateur, que vous indiquez lorsque vous crez la variable.

La cration des variables


Pour crer une variable dans AppleScript, assignez lui une valeur. Il y a deux commandes pour le faire : Set Copy Avec la commande Set, saisissez le nom de la variable en premier, suivi par la valeur que vous voulez lui assigner :
set monPrenom to "Nicolas"

Avec la commande Copy, saisissez la valeur en premier, suivi du nom de la


Les variables T4 - 9

Chapitre 3

Tome 4

variable :
copy "Nicolas" to monPrenom

Les instructions, comme celles-ci, qui assignent des valeurs aux variables sont appeles des instructions dassignation. Le nom de la variable, une srie de caractres, est appel un identificateur. Les identificateurs AppleScript ne sont pas sensibles la casse - par exemple, les variables monnom, monNom et MONNOM reprsentent toutes la mme valeur. Les rgles pour spcifier les identificateurs sont numres dans Les identificateurs (T1 - p.18). Vous pouvez utiliser une expression au lieu dune valeur dans une instruction dassignation. AppleScript value lexpression et assigne le rsultat la variable. Par exemple, linstruction suivante cre une variable appele monNombre dont la valeur est 17.
set monNombre to 5 + 12 copy 5 + 12 to monNombre

Une variable peut aussi obtenir sa valeur partir dune rfrence. Dans ce cas, AppleScript obtient la valeur de lobjet spcifi dans la rfrence et lassigne la variable. Par exemple, linstruction suivante obtient la valeur du premier mot du document appel Report - une chane de caractres - et la stocke dans une variable appele monMot :
tell application "AppleWorks" set monMot to word 1 of text body of document "Report" end tell -- rsultat : "Ce"

Pour crer une variable dont la valeur est la rfrence elle-mme au lieu de la valeur de lobjet spcifi par une rfrence, utiliser loprateur A Reference To. Cet oprateur est dcrit dans Loprateur A Reference To (T4 - p.12).
tell application "AppleWorks" set monMot to a reference to word 1 of text body of document "Report" end tell (* rsultat : word 1 of text body of document "Report" of application "AppleWorks" *)
T4 - 10 Les variables

Chapitre 3

Tome 4

Vous pouvez utiliser la commande Copy au lieu de Set pour assigner une valeur ou une rfrence une variable, comme dans lexemple suivant :
tell application "Finder" copy name of first file of startup disk to firstFileName end tell -- rsultat : "Ouvrez-moi iMac"

Les rsultats de ces deux types dinstructions dassignation sont les mmes, dans tous les cas, except quand la valeur, qui doit tre assigne, est une liste, un enregistrement ou un script-objet. La commande Copy fait une nouvelle copie de la liste, de lenregistrement ou du script-objet. La commande Set cre une variable qui partage les donnes avec la liste initiale, lenregistrement initial ou le script-objet initial. Pour plus dinformations, voir Le partage de donnes (T4 - p.15).

Lutilisation des variables


Pour utiliser la valeur dune variable dans un script, il faut inclure la variable dans une commande ou une expression. Par exemple, la premire instruction de lexemple suivant cre une variable, appele monPrenom, dont la valeur est la chane de caractres "Steve". La seconde instruction utilise la variable monPrenom comme paramtre par dfaut de la commande Display Dialog du complment de pilotage.
set monPrenom to "Steve" display dialog "Quel est ton prnom ?" default answer monPrenom

Si vous assignez une nouvelle valeur une variable, la nouvelle valeur remplace lancienne. Le script suivant montre ce qui se produit quand vous assignez une nouvelle valeur. Il utilise la commande Display Dialog pour afficher les valeurs. Essayez de lancer ce script :
set monPrenom to "Steve" display dialog ("La valeur de mon prnom est maintenant " & monPrenom) buttons "Sr !" default button 1 set monPrenom to "John" display dialog ("La valeur de mon prnom est maintenant " & monPrenom) buttons "Tromp !" default button 1

La premire commande Display Dialog affiche la valeur stocke par la premire instruction dassignation (la chane de caractres "Steve"). La

Les variables

T4 - 11

Chapitre 3

Tome 4

commande suivante affiche la valeur stocke par la seconde instruction dassignation (la chane de caractres "John").

Loprateur A Reference To
Pour crer une variable dont la valeur est une rfrence au lieu de la valeur de lobjet spcifi par la rfrence, utilisez loprateur A Reference To. Voici un exemple :
set myWindow to a reference to window "ASP Control Panel Report" of application "Apple System Profiler"

La valeur de la variable myWindow est la rfrence


window "ASP Control Panel Report" of application "Apple System Profiler"

Aprs avoir cr une variable dont la valeur est une rfrence, vous pouvez lutiliser dans un script partout o une rfrence est requise. Quand AppleScript excute linstruction contenant la variable, il remplace la variable par la rfrence. Par exemple, quand AppleScript excute linstruction
tell myWindow get name -- rsultat : "ASP Control Panel Report" end tell

il remplace la variable myWindow par la rfrence window "ASP Control


Panel Report" of application "Apple System Profiler"

Syntaxe [ a ] ( ref [ to ] | reference to ) reference

o reference est une rfrence un objet.

Exemples

Comme il est indiqu dans la description de la syntaxe, il y a plusieurs faons de raccourcir les expressions contenant A Reference To. Par exemple, toutes ces expressions sont quivalentes :
T4 - 12 Les variables

Chapitre 3

Tome 4

set myWindow to a reference to the window "Report" of the application "Apple System Profiler" set myWindow to reference to window "Report" of application "Apple System Profiler" set myWindow to a ref window "Report" of application "Apple System Profiler" set myWindow to ref window "Report" of application "Apple System Profiler"

En utilisant labrviation app, vous pouvez mme raccourcir encore plus linstruction :
set myWindow to ref window "Report" of app "Apple System Profiler"

Comme toujours, cest vous qui choisirez la manire dcrire vos instructions dans les scripts. Ces raccourcis dcriture seront automatiquement complts lors de la compilation du script.

Notes

Vous pouvez utiliser loprateur A Reference To pour viter de lourdes oprations de copie. Par exemple, supposons que vous vouliez transfrer une trs grande image dune application une autre ou un script. Si votre script appelle la premire application pour crer une copie de limage, puis transfre la copie la seconde application ou au script, dans ce cas, la copie risque de demander beaucoup de mmoire. Au lieu de cel, votre script peut demander une rfrence de limage, transfrer cette rfrence, et laisser lapplication transfrer directement les donnes. Vous pouvez aussi utiliser loprateur A Reference To pour accder de manire efficace aux lments dune grande liste. Par exemple, le script suivant demande 26 secondes pour accder tous les lments dune liste de 4 000 nombres entiers (le temps dexcution sera variable suivant la configuration matrielle et logicielle) :
-- bigList est une liste de 4 000 nombres entiers set numItems to 4000 set t to (time of (current date)) repeat with n from 1 to numItems item n of bigList

Les variables

T4 - 13

Chapitre 3

Tome 4

end repeat set total to (time of (current date)) - t total -- rsultat : 26 (secondes)

Le script suivant excute les mmes 4 000 oprations daccs en un peu plus dune seconde :
-- bigList est une liste de 4 000 nombres entiers set bigListRef to a reference to bigList set numItems to 4000 set t to (time of (current date)) repeat with n from 1 to numItems item n of bigListRef end repeat set total to (time of (current date)) - t total -- rsultat : 1 (seconde)

Aprs avoir cr une rfrence avec loprateur A Reference To, vous pouvez utiliser la proprit Contents pour obtenir la valeur de lobjet qui sy rfre. La proprit Contents est la valeur de lobjet spcifi par une rfrence. Par exemple, le rsultat de la proprit Contents dans le script suivant est la rfrence de la fentre elle-mme.
set myWindow to a reference to window "ASP Control Panel Report" of app "Apple System Profiler" contents of myWindow (* rsultat : window "ASP Control Panel Report" of application "Apple System Profiler" *)

Lexemple suivant obtient la rfrence du nom de la fentre :


set myWindow to ref name of window "Asp Control Panel Report" of application "Apple System Profiler" (* rsultat : name of window "ASP Control Panel Report" of application "Apple System Profiler" *)

La valeur de la proprit Contents dune rfrence un nom est le nom sous forme de chanes de caractres :
contents of myWindow -- rsultat : "ASP Control Panel Report"

Pour plus dinformations sur la proprit Contents, voir Reference (T1 p.53).

T4 - 14

Les variables

Chapitre 3

Tome 4

Le partage de donnes
Le partage de donnes vous permet de crer deux variables ou plus qui partagent la mme liste, le mme enregistrement ou les mmes donnes dun script-objet. Cette particularit peut tre utilise pour amliorer lefficacit du travail avec de grandes structures de donnes. Seules les donnes des listes, des enregistrements et des scripts-objets peuvent tre partages ; vous ne pouvez pas partager dautres valeurs. De plus, les structures partages doivent toutes tre sur le mme ordinateur. Pour crer une variable partageant des donnes avec dautres variables dont la valeur est une liste, un enregistrement ou un script-objet, utilisez la commande Set. Par exemple, la seconde commande Set dans lexemple suivant cre la variable yourList, laquelle partage les donnes avec la variable, prcdemment dfinie, myList :
set myList to {1, 2, 3} set yourList to myList (* cette commande cre yourList laquelle partage les donnes avec myList *) set item 1 of myList to 4 get yourList -- rsultat : {4, 2, 3}

Si vous mettez jour myList en rglant la valeur de son premier lment sur 4, alors la valeur de myList et yourList est {4, 2, 3}. Bien que vous ayez de multiples copies des donnes partages, les mmes donnes appartiennent de multiples structures. Quand une structure est mise jour, les autres le sont automatiquement. Pour viter le partage des donnes avec les listes, les enregistrements ou les scripts-objets, utilisez la commande Copy au lieu de Set. La commande Copy fait une copie de la liste, de lenregistrement ou du script-objet. Modifier la valeur de la structure initiale ne modifie pas la valeur de la nouvelle copie.
set myList to {1, 2, 3} copy myList to yourList -- cette commande fait une copie de myList set item 1 of myList to 4 get yourList -- rsultat : {1, 2, 3}

Si vous mettez jour myList, la valeur de yourList est toujours {1, 2, 3}.

Les variables

T4 - 15

Chapitre 3

Tome 4

La porte des variables


La porte des variables dtermine quel autre endroit dans un script, vous pouvez vous rfrer la mme variable. La porte dpend do vous dclarez une variable et si vous la dclarez comme globale ou locale. Aprs avoir dfini une variable comme globale dans un script, vous pouvez vous y rfrer ultrieurement soit au niveau suprieur du script, soit dans nimporte laquelle des routines du script. Aprs avoir dfini une variable comme locale, vous pouvez vous y rfrer ultrieurement uniquement au mme niveau du script que celui o vous lavez dfinie. AppleScript suppose que toutes les variables dfinies au niveau suprieur dun script ou lintrieur de ses routines sont locales, jusqu ce que vous les dclariez explicitement globales. Pour plus de dtails et dexemples sur les variables dans les routines, voir Les routines rcursives (T6 - p.14). Vous pouvez aussi dclarer des variables lintrieur des scripts-objets. La porte des variables dans un script-objet est limite ce script-objet. Pour plus dinformations, voir Porte des variables et des proprits de script (T6 - p.43).

Les variables prdfinies


Les variables prdfinies sont des variables dont les valeurs sont fournies par AppleScript. Vous pouvez les utiliser dans les scripts sans pouvoir rgler leurs valeurs. Les variables prdfinies sont globales - cest dire que vous pouvez les utiliser nimporte o dans un script. Note Bien quAppleScript ne vous prvienne pas sur le rglage des valeurs des variables prdfinies, vous devrez les traiter comme des constantes - vous ne pourrez pas modifier leurs valeurs. x Pour un rsum des variables prdfinies dAppleScript, voir (T1 - p.78).

T4 - 16

Les variables

Chapitre 4

Tome 4

Les proprits de script

Une proprit de script est un container tiquet pour une valeur, que vous pouvez utiliser, dans beaucoup de cas, de la mme faon quune variable. La valeur dune proprit de script persiste jusqu ce que vous recompiliez le script qui la contient, et vous pouvez facilement rgler la valeur initiale dune proprit sans la rinitialiser chaque fois que le script est lanc. Vous pouvez accomplir la mme chose avec une variable globale, mais il est gnralement plus pratique dutiliser une proprit. Note La description des proprits de script, fournie dans ce guide, suppose lutilisation de lapplication diteur de scripts, fournie avec AppleScript. Les autres diteurs de scripts peuvent ne pas supporter la persistance des proprits de script. Si vous utilisez un autre diteur de script, vrifiez sa documentation pour voir comment il gre les proprits de script. x

Dfinir les proprits de script

Syntaxe ( prop | property ) propertyLabel : initialValue

o propertyLabel reprsente un identificateur. Les rgles pour spcifier des identificateurs sont numres dans Les identificateurs (T1 - p.18). initialValue reprsente la valeur qui a t assigne la proprit, lorsque vous avez lanc pour la premire fois le script, ou lorsque vous lavez enregistr, ou lorsque vous avez vrifi sa syntaxe. Aprs avoir dfini une proprit de script, vous pouvez modifier sa valeur de la mme faon que la valeur dune variable : avec les commandes Set ou Copy. Vous pouvez obtenir la valeur dune proprit de script en utilisant la commande Get ou en lutilisant dans une expression.

Les proprits de script

T4 - 17

Chapitre 4

Tome 4

Utiliser les proprits de script


Pour voir comment les proprits de script fonctionnent, essayer dexcuter le script suivant qui contient une proprit de script appele theCount.
property theCount : 0 set theCount to theCount + 1 display dialog "La valeur de theCount est: " & theCount as string

La premire fois que vous lancez le script, la valeur de theCount est rgle sur 0, la commande Set ajoute 1 theCount puis la commande Display Dialog affiche la valeur de theCount, qui est gale 1. Maintenant vous relancez une seconde fois le script. La commande Set ajoute 1 la valeur de theCount (laquelle est gale 1 car elle na pas t initialise), la commande Display Dialog affiche une valeur de 2. Si vous relancez une troisime fois le script, la valeur de theCount sera gale 3 et ainsi de suite. Maintenant enregistrez le script comme un script compil. Fermez le script, puis rouvrez-le et excutez-le sans effectuer de changement dans la syntaxe (trs important). La valeur de theCount a augment dun de plus que ce quelle tait avant la fermeture du script. Finalement, recompilez le script (par exemple, en faisant un insignifiant changement, comme en rajoutant un espace, puis en appuyant sur le bouton Vrifier). La valeur de theCount est de nouveau rgle sur la valeur initiale de la dfinition de la proprit. La commande Display Dialog affiche 1.

Porte des proprits de script


Comme la porte dune variable, la porte dune proprit de script dtermine vers quel endroit, dans un script, vous pouvez vous rfrer au mme identificateur de proprit. La porte dune proprit en fonctionnement diffre selon lendroit o vous la dclarez. Vous pouvez dclarer une proprit au niveau suprieur dun script ou dun script-objet. Si vous la dclarez au niveau suprieur dun script, un identificateur de proprit est visible partout dans le script. Si vous la dclarez au niveau suprieur dun script-objet, un identificateur de proprit
T4 - 18 Les proprits de script

Chapitre 4

Tome 4

est visible seulement lintrieur de ce script-objet. Aprs avoir dclar une proprit, vous pourrez utiliser le mme identificateur comme une variable spare, seulement si vous lavez dclar en premier comme une variable locale. Pour plus dinformations et dexemples sur lutilisation des proprits dans les routines, voir Porte des variables et des proprits de script (T6 p.43).

Les proprits de script

T4 - 19

Chapitre 5

Tome 4

Les proprits dAppleScript

Vous pouvez utiliser la variable globale AppleScript pour obtenir les proprits dAppleScript lui-mme plutt que les proprits de la cible courante. Vous pouvez vous rfrer cette variable globale nimporte o dans un script. AppleScript fournit les proprits globales suivantes que vous pouvez utiliser comme constantes : pi, return, space, tab et version. Ces valeurs sont dcrites dans Les constantes (T1 - p.78). Il nest pas recommand dessayer de modifier la valeur de ces constantes. La proprit Text Item Delimiters consiste en une liste de chanes de caractres utilises comme dlimiteurs par AppleScript, quand il contraint des listes en chanes de caractres ou quand il obtient les lments de texte dune chane de caractres. AppleScript nutilise gnralement que le premier dlimiteur de la liste. Vous pouvez obtenir ou rgler la valeur courante de la proprit Text Item Delimiters dAppleScript. Normalement, par dfaut, AppleScript nutilise aucun dlimiteur. Par exemple, si le dlimiteur na pas t explicitement modifi. Le script
{"pain", "lait", "beurre", 10.45 } as string

retourne le rsultat suivant :


"painlaitbeurre10.45"

Pour imprimer ou afficher les conditions, il est prfrable de rgler la proprit Text Item Delimiters sur quelque chose qui soit facile lire. Par exemple, le script
set AppleScripts text item delimiters to {", "} {"pain", "lait", "beurre", 10.45 } as string

retourne ce rsultat :
"pain, lait, beurre, 10.45"

T4 - 20

Les proprits dAppleScript

Chapitre 5

Tome 4

La proprit Text Item Delimiters permet aussi dextraire des parties individuelles dun chemin. Par exemple, le script
set AppleScripts text item delimiters to {":"} get last text item of "Disque Dur:CD:Notes"

retourne le rsultat "Notes". Si vous modifiez la proprit Text Item Delimiters dans lditeur de script, elle reste modifie jusqu ce que vous restauriez sa valeur initiale, ou jusqu ce que vous quittiez lditeur de script et que vous le relanciez de nouveau. Si vous modifiez la proprit Text Item Delimiters dans un script-application, elle reste modifie, dans cette application, jusqu ce que vous restauriez sa valeur initiale, ou jusqu ce que le script-application quitte; toutefois, cette proprit nest pas modifie dans lditeur de script ou dans un autre scriptapplication. Vous pourriez vouloir utiliser un gestionnaire derreur, si une erreur survenait, pour initialiser la proprit Text Item Delimiters sa valeur initiale. Pour plus dinformations sur les gestionnaires derreur, voir Les instructions Try (T5 p.31).
set savedTextItemDelimiters to AppleScripts text item delimiters try set AppleScripts text item delimiters to {"**"} -- autres instructions -- finalement, initialisation de text item delimiters : set AppleScripts text item delimiters to savedTextItemDelimiters on error m number n from f to t partial result p -- initialise aussi text item delimiters en cas derreur : set AppleScripts text item delimiters to savedTextItemDelimiters -- et resignale lerreur : error m number n from f to t partial result p end try

Les proprits dAppleScript

T4 - 21

Chapitre 6

Tome 4

Les expressions rfrence

Les rfrences sont des noms composs qui se rfrent aux objets des applications, du Systme ou dAppleScript. Comme chaque objet a une valeur, une rfrence peut tre utilise pour reprsenter une valeur dans un script. Une expression rfrence est une rfrence quAppleScript interprte comme une valeur. Une rfrence peut fonctionner comme une rfrence un objet ou comme une expression rfrence. Quand une rfrence est le paramtre direct dune commande, elle fonctionne gnralement comme une rfrence un objet, indiquant quel objet la commande doit tre envoye. Dans beaucoup dautres cas, une rfrence fonctionne comme une expression quAppleScript value en obtenant la valeur de la rfrence. Par exemple, le terme word 1 of text body of front document, dans linstruction suivante, est une rfrence un objet. Il identifie lobjet auquel la commande Copy est envoye. Linstruction copie la valeur retourne, le premier mot du document en avant plan, dans la variable myWord.
tell application "AppleWorks" copy word 1 of text body of front document to myWord end tell

Par contre, le terme word 1 of text body of front document , dans lexemple suivant, est une expression rfrence :
tell application "AppleWorks" repeat (word 1 of text body of front document) times display dialog "Hello" end repeat end tell

Quand AppleScript excute cette instruction Tell, il obtient la valeur de la rfrence word 1 of text body of front document - une chane de caractres - puis la contraint en nombre entier, si possible. Si le mot ne peut pas tre contraint en nombre entier, AppleScript renvoie une erreur. Pour plus dinformations sur les instructions Repeat, voir T5 - p.21. Pour les coercitions, voir T1 - p.74.

T4 - 22

Les expressions rfrence

Chapitre 7

Tome 4

Les oprations
Une opration est une expression qui utilise un oprateur pour gnrer une valeur partir dune autre valeur, appeles oprandes. AppleScript possde des oprateurs pour accomplir des oprations arithmtiques, comparer des valeurs, excuter des valuations boolennes et contraindre des valeurs. Chaque oprateur peut grer des oprandes appartenant des classes spcifiques, lesquelles sont dfinies dans la dfinition de loprateur. Par exemple, les oprandes pour loprateur addition (+) doivent appartenir la classe Integer ou Real, par contre, les oprandes pour loprateur Not doivent appartenir la classe Boolean. Certains oprateurs travaillent avec des oprandes de classes diverses. Par exemple, vous pouvez utiliser loprateur de concatnation (&) pour joindre deux chanes de caractres, deux listes ou deux enregistrements. Le rsultat de chaque opration est une valeur dune classe particulire. Pour la plupart des oprateurs, comme loprateur galit (=) et loprateur suprieur (>), la classe du rsultat est toujours la mme - dans ces cas, Boolean. Pour dautres oprateurs, comme loprateur de concatnation (&), la classe du rsultat dpend de la classe des oprandes. Par exemple, le rsultat de la concatnation de deux chanes de caractres est une chane de caractres, mais le rsultat de la concatnation de deux nombres entiers est une liste de nombres entiers. Si vous utilisez un oprateur avec des oprandes de la mauvaise classe, AppleScript essaie de contraindre, si possible, les oprandes dans la bonne classe. Par exemple, loprateur de concatnation (&) travaille avec les chanes de caractres, les listes et les enregistrements. Quand AppleScript value lexpression suivante, il contraint le nombre entier 66 en une chane de caractres avant de le chaner avec la chane "Route".
"Route " & 66 -- rsultat : "Route 66"

Pour plus dinformations, voir Concatnation (T4 - p.41). Quand il value des expressions comportant des oprateurs, AppleScript vrifie en premier loprande se trouvant gauche. Si loprande nappartient pas une des classes autorises pour loprateur, AppleScript le contraint, si

Les oprations

T4 - 23

Chapitre 7

Tome 4

possible. Aprs avoir contraint loprande gauche ou vrifi son appartenance la bonne classe, AppleScript vrifie loprande droit et le contraint (si cest ncessaire et possible) pour quil soit compatible avec loprande gauche. Les exceptions cette rgle sont les expressions comportant les oprateurs Is Contained By, Equal, et Is Not Equal. AppleScript vrifie dabord loprande droit dans les expressions comportant loprateur Is Contained By. AppleScript ne contraint jamais les oprandes des oprateurs Equal et Is Not Equal. Si AppleScript ne peut pas contraindre les oprandes, il renvoie une erreur. Par exemple, loprateur daddition (+) travaille uniquement avec des nombres (entiers ou rels). Si vous essayez dvaluer une expression comme 3 + "chats", vous obtiendrez une erreur, car AppleScript ne peut pas contraindre "chats" en nombre. Les oprations peuvent tre excutes, soit par AppleScript, soit par une application. La rgle est que si loprande gauche est une valeur, AppleScript excute lopration, si cest une rfrence un objet dapplication, lapplication excute lopration. Par exemple, la comparaison
tell application "AppleWorks" "Hello" contains word 1 of text body of document "Simple" end tell

est excute par AppleScript, car le premier oprande est une chane de caractres. Avant dexcuter la comparaison, AppleScript doit obtenir la valeur du premier mot. Par contre, lapplication spcifie, AppleWorks, dans linstruction Tell suivante, excute la comparaison qui suit
tell application "AppleWorks" word 1 of text body of document "Simple" contains "Hello" end tell

Loprateur Is Contained By est une exception cette rgle. Dans les expressions comportant loprateur Is Contained By, si loprande droit est une valeur, AppleScript excute lopration, si cest une rfrence un objet dapplication, lapplication excute lopration. Pour plus dinformations, voir Contains, Is Contained By (T4 - p.40).

Les oprateurs dAppleScript


Le tableau suivant, Les oprateurs dAppleScript, prsente un rsum des
T4 - 24 Les oprations

Chapitre 7

Tome 4

oprateurs AppleScript. Pour chaque oprateur, le tableau fournit une brve description de lopration, numre les classes des oprandes et celles du rsultat. Quelques uns des oprateurs sont des caractres qui, pour tre saisis, demandent un raccourci-clavier. Pour ces oprateurs, le raccourciclavier est indiqu entre parenthses. Le chapitre Les oprateurs qui grent les oprandes de diverses classes (T4 - p.33) fournit plus dinformations sur la faon dont les oprateurs traitent les diffrentes classes des oprandes, ainsi que plus dexplications dtailles et dexemples doprations. Les oprateurs dAppleScript
Oprateur and Description

Et. Oprateur binaire de logique qui retourne true si, ensemble, loprande sa gauche et loprande sa droite sont true. Les deux oprandes doivent valuer des valeurs boolennes. Quand il value des expressions comportant loprateur And, AppleScript vrifie dabord loprande gauche. Si sa valeur est false, AppleScript nvalue pas loprande droit, car il sait dj que lexpression est false. Ce comportement est parfois appel court-circuitage. Classe des oprandes : Boolean Classe du rsultat : Boolean Ou. Oprateur binaire de logique qui retourne true si loprande sa gauche ou loprande sa droite est true. Loprande gauche doit valuer une valeur boolenne car il est toujours vrifi en premier lorsquAppleScript value une expression comportant loprateur or. Si la valeur de loprateur gauche est true, AppleScript nvalue pas loprande droit, car il sait dj que lexpression est true. Ce comportement est parfois appel court-circuitage. Classe des oprandes : Boolean Classe du rsultat : Boolean Concatnation. Oprateur binaire qui chane deux valeurs. Si loprande gauche de loprateur est une chane de caractres, le rsultat est une chane. Si loprande gauche est un enregistrement, le rsultat est un enregistrement. Si loprande gauche appartient nimporte quelle autre classe, le rsultat est une liste. Pour plus dinformations, voir Concatnation (T4 - p.41). Classe des oprandes : nimporte laquelle Classe du rsultat : List, Record, String

or

&

Les oprations

T4 - 25

Chapitre 7

Tome 4

Les oprateurs dAppleScript (suite)


Oprateur Description

=
is equal equals [is] equal to

gal. Oprateur binaire de comparaison qui retourne true si loprande sa gauche et loprande sa droite ont la mme valeur. Les oprandes peuvent appartenir nimporte quelle classe. La mthode utilise par AppleScript pour dterminer lgalit dpend de la classe des oprandes. Pour plus dinformations, voir Equal, Is Not Equal To (T4 - p.33). Classe des oprandes : nimporte laquelle Classe du rsultat : Boolean Nest pas gal. Oprateur binaire de comparaison qui retourne true si loprande sa gauche et loprande sa droite ont des valeurs diffrentes. Les oprandes peuvent appartenir nimporte quelle classe. La mthode utilise par AppleScript pour dterminer lgalit dpend de la classe des oprandes. Pour plus dinformations, voir Equal, Is Not Equal To (T4 - p.33). Classe des oprandes : nimporte laquelle Classe du rsultat : Boolean Plus grand que. Oprateur binaire de comparaison qui retourne true si la valeur de loprande sa gauche est plus grande que la valeur de loprande sa droite. Les deux oprandes doivent donner des valeurs de la mme classe. Sils ne le font pas, AppleScript essaie de contraindre loprande droite de loprateur dans la classe de loprande gauche. La mthode utilise par AppleScript pour dterminer la grandeur dpend de la classe des oprandes. Pour plus dinformations, voir Greater Than, Less Than (T4 - p.37). Classe des oprandes : Date, Integer, Real, String Classe du rsultat : Boolean

(option + = )
is not isnt isnt equal [to] is not equal [to] doesnt equal does not equal

>
[is] greater than comes after is not less than or equal [to] isnt less than or equal [to]

T4 - 26

Les oprations

Chapitre 7

Tome 4

Les oprateurs dAppleScript (suite)


Oprateur Description

<
[is] less than comes before is not greater than or equal [to] isnt greater than or equal [to]

Plus petit que. Oprateur binaire de comparaison qui retourne true si la valeur de loprande sa gauche est plus petite que la valeur de loprande sa droite. Les deux oprandes doivent donner des valeurs de la mme classe. Sils ne le font pas, AppleScript essaie de contraindre loprande droite de loprateur dans la classe de loprande gauche. La mthode utilise par AppleScript pour dterminer la grandeur dpend de la classe des oprandes. Pour plus dinformations, voir Greater Than, Less Than (T4 - p.37). Classe des oprandes : Date, Integer, Real, String Classe du rsultat : Boolean Plus grand ou gal . Oprateur binaire de comparaison qui retourne true si la valeur de loprande sa gauche est plus grande ou gale la valeur de loprande sa droite. Les deux oprandes doivent donner des valeurs de la mme classe. Sils ne le font pas, AppleScript essaie de contraindre loprande droite de loprateur dans la classe de loprande gauche. La mthode utilise par AppleScript pour dterminer la grandeur ou lgalit dpend de la classe des oprandes. Classe des oprandes : Date, Integer, Real, String Classe du rsultat : Boolean

(option + > ) >=


[is] greater than or equal [to] is not less than isnt less than does not come before doesnt come before

Les oprations

T4 - 27

Chapitre 7

Tome 4

Les oprateurs dAppleScript (suite)


Oprateur Description

(option + < ) <=

Plus petit ou gal . Oprateur binaire de comparaison qui retourne true si la valeur de [is] less than or equal [to] loprande sa gauche est plus petite ou gale la is not greater than valeur de loprande sa droite. Les deux isnt greater than oprandes doivent donner des valeurs de la mme does not come after classe. Sils ne le font pas, AppleScript essaie de doesnt come after contraindre loprande droite de loprateur dans la classe de loprande gauche. La mthode utilise par AppleScript pour dterminer la grandeur ou lgalit dpend de la classe des oprandes. Classe des oprandes : Date, Integer, Real, String Classe du rsultat : Boolean
start[s] with begin[s] with

Dbute par. Oprateur binaire de contenu qui retourne true si la liste ou la chane de caractres situes sa droite correspondent au dbut de la liste ou de la chane situes sa gauche. Les deux oprandes doivent donner des valeurs de la mme classe. Sils ne le font pas, AppleScript essaie de contraindre loprande droite de loprateur dans la classe de loprande gauche. Pour plus dinformations, voir Starts With, Ends with (T4 - p.39). Classe des oprandes : List, String Classe du rsultat : Boolean Finit par. Oprateur binaire de contenu qui retourne true si la liste ou la chane de caractres situes sa droite correspondent la fin de la liste ou de la chane situes sa gauche. Les deux oprandes doivent donner des valeurs de la mme classe. Sils ne le font pas, AppleScript essaie de contraindre loprande droite de loprateur dans la classe de loprande gauche. Pour plus dinformations, voir Starts With, Ends with (T4 - p.39). Classe des oprandes : List, String Classe du rsultat : Boolean

end[s] with

T4 - 28

Les oprations

Chapitre 7

Tome 4

Les oprateurs dAppleScript (suite)


Oprateur contain[s] Description

Contient. Oprateur binaire de contenu qui retourne true si la liste, la chane de caractres ou lenregistrement situs sa droite, correspondent nimporte quelle partie de la liste, de la chane ou de lenregistrement situs sa gauche. Les deux oprandes doivent donner des valeurs de la mme classe. Sils ne le font pas, AppleScript essaie de contraindre loprande droite de loprateur dans la classe de loprande gauche. Pour plus dinformations, voir Contains, Is Contained By (T4 - p.40). Classe des oprandes : List, Record, String Classe du rsultat : Boolean Ne contient pas. Oprateur binaire de contenu qui retourne true si la liste, la chane de caractres ou lenregistrement situs sa droite, ne correspondent pas nimporte quelle partie de la liste, de la chane ou de lenregistrement situs sa gauche. Les deux oprandes doivent donner des valeurs de la mme classe. Sils ne le font pas, AppleScript essaie de contraindre loprande droite de loprateur dans la classe de loprande gauche. Classe des oprandes : List, Record, String Classe du rsultat : Boolean Est contenu par. Oprateur binaire de contenu qui retourne true si la liste, la chane de caractres ou lenregistrement situs sa gauche correspondent nimporte quelle partie de la liste, de la chane ou de lenregistrement situs sa droite. Les deux oprandes doivent donner des valeurs de la mme classe. Sils ne le font pas, AppleScript essaie de contraindre loprande gauche de loprateur dans la classe de loprande droite. Pour plus dinformations, voir Contains, Is Contained By (T4 - p.40). Classe des oprandes : List, Record, String Classe du rsultat : Boolean

does not contain doesnt contain

is in is contained by

Les oprations

T4 - 29

Chapitre 7

Tome 4

Les oprateurs dAppleScript (suite)


Oprateur is not in is not contained by isnt contained by Description

Nest pas contenu par. Oprateur binaire de contenu qui retourne true si la liste, la chane de caractres ou lenregistrement situs sa gauche, ne correspondent pas nimporte quelle partie de la liste, de la chane ou de lenregistrement situs sa droite. Les deux oprandes doivent donner des valeurs de la mme classe. Sils ne le font pas, AppleScript essaie de contraindre loprande gauche de loprateur dans la classe de loprande droite. Classe des oprandes : List, Record, String Classe du rsultat : Boolean Fois. Oprateur binaire arithmtique qui multiplie le nombre sa gauche par celui sa droite. Classe des oprandes : Integer, Real Classe du rsultat : Real Plus. Oprateur binaire arithmtique qui ajoute le nombre ou la date sa gauche au nombre ou la date sa droite. Seuls des nombres entiers (Integers) peuvent tre ajouts aux dates. Dans ce cas, AppleScript interprte les nombres entiers comme des secondes. Classe des oprandes : Date, Integer, Real Classe du rsultat : Date, Integer, Real Moins. Oprateur binaire ou unitaire arithmtique. Loprateur binaire soustrait le nombre ou la date sa droite au nombre ou la date sa gauche. Loprateur unitaire indique que le nombre sa droite est un nombre ngatif. Seuls les nombres entiers (Integers) peuvent tre soustraits aux dates. Dans ce cas, AppleScript interprte les nombres entiers comme des secondes. Classe des oprandes : Date, Integer, Real Classe du rsultat : Date, Integer, Real

T4 - 30

Les oprations

Chapitre 7

Tome 4

Les oprateurs dAppleScript (suite)


Oprateur Description

(option + : )

Divis par. Oprateur binaire arithmtique qui divise le nombre sa gauche par celui sa droite. Classe des oprandes : Integer, Real Classe du rsultat : Real Division intgrale. Oprateur binaire arithmtique qui divise le nombre sa gauche par celui sa droite et retourne la partie entire de la rponse comme rsultat. Classe des oprandes : Integer, Real Classe du rsultat : Integer Modulo. Oprateur binaire arithmtique qui divise le nombre sa gauche par celui sa droite et retourne le reste de la division comme rsultat. Classe des oprandes : Integer, Real Classe du rsultat : Integer, Real Exposant. Oprateur binaire arithmtique qui lve le nombre sa gauche la puissance indique par le nombre sa droite. Classe des oprandes : Integer, Real Classe du rsultat : Integer, Real Contraint en. Oprateur binaire qui contraint loprande sa gauche dans la classe de loprande sa droite. Toutes les valeurs ne peuvent pas tre contraintes dans une autre classe. Les coercitions quAppleScript supporte sont numres dans Les coercitions (T1 - p.74). Les coercitions supplmentaires, sil y a, fournies par les applications sont numres dans leurs dictionnaires. Classe des oprandes : Loprande droite de loprateur doit tre un identificateur de classe; loprande gauche de loprateur doit tre une valeur qui peut tre contrainte dans cette classe. Classe du rsultat : La classe spcifie par lidentificateur de classe situ droite de loprateur.

div

mod

as

Les oprations

T4 - 31

Chapitre 7

Tome 4

Les oprateurs dAppleScript (suite et fin)


Oprateur not Description

Pas. Oprateur unitaire de logique qui retourne true si loprande sa droite est false, et false si loprande sa droite est true. Classe des oprandes : Boolean Classe du rsultat : Boolean

[a] ( ref [to] | reference to ) A Reference To. Oprateur unitaire qui oblige

AppleScript interprter loprande droite de loprateur comme une rfrence au lieu dobtenir sa valeur. Pour plus dinformations, voir Loprateur A Reference To (T4 - p.12). Classe des oprandes : Reference Classe du rsultat : Reference

T4 - 32

Les oprations

Chapitre 8

Tome 4

Les oprateurs qui grent les oprandes de diverses classes

Plusieurs oprateurs peuvent grer les oprandes de diverses classes. Les sections suivantes dcrivent comment les oprateurs se comportent avec les diffrentes classes doprandes : Equal, Is Not Equal To (T4 - p.33) Greater Than, Less Than (T4 - p.37) Starts With, Ends With (T4 - p.39) Contains, Is Contained By (T4 - p.40) Concatnation (T4 - p.41)

Equal, Is Not Equal To


Les oprateurs Equal et Is Not Equal To peuvent grer les oprandes de nimporte quelle classe.

Oprandes de classes diffrentes

Deux expressions de classes diffrentes ne sont pas gales.

Expression boolenne

Deux expressions boolennes sont gales si les deux, en mme temps, sont true ou false. Elles ne sont pas gales si lune est true pendant que lautre est false.

Identificateur de classe

Deux identificateurs de classe sont gaux sils reprsentent le mme

Les oprateurs qui grent les oprandes de diverses classes

T4 - 33

Chapitre 8

Tome 4

identificateur. Ils ne sont pas gaux dans le cas contraire.

Constant

Deux constantes sont gales si elles sont identiques. Elles ne sont pas gales si elles sont diffrentes.

Data

Deux donnes sont gales si elles ont la mme taille en octets et que leurs octets sont identiques (AppleScript fait une comparaison doctets).

Date

Deux dates sont gales si les deux, ensemble, reprsentent la mme date, mme si elles sont exprimes dans des formats diffrents. Par exemple, lexpression suivante est true, car date "31/12/99" et date "Dcembre 31st, 1999" reprsentent la mme date.
date "31/12/99" = date "Dcembre 31st, 1999"

Quand vous compilez linstruction prcdente, lditeur de script la convertit dans une forme similaire la suivante (le format peut varier suivant les rglages du tableau de bord Date et Heure) :
date "vendredi 31 dcembre 1999 0:00:00" = date "vendredi 31 dcembre 1999 0:00:00"

Integer

Deux nombres entiers sont gaux sils sont identiques. Ils ne sont pas gaux sils sont diffrents.

List

Deux listes sont gales si chaque lment de la liste gauche de loprateur est gal llment la mme place dans la liste droite. Elles ne sont pas gales si les lments, la mme place dans les listes, ne sont pas gaux ou si les listes ont des nombres diffrents dlments. Par exemple,

T4 - 34

Les oprateurs qui grent les oprandes de diverses classes

Chapitre 8

Tome 4

{ (1 + 1), (4 > 3) } = {2, true}

est true, car (1 + 1) svalue 2 et (4 > 3) svalue true.

Real

Deux nombres rels sont gaux sils reprsentent le mme nombre rel, mme si les formats, dans lesquels ils sont exprims, sont diffrents. Par exemple, lexpression suivante est true.
0.01 is equal to 1e-2

Deux nombres rels ne sont pas gaux sils reprsentent des nombres rels diffrents.

Records

Deux enregistrements sont gaux sils contiennent la mme collection de proprits et si la valeur des proprits avec la mme tiquette sont gales. Ils ne sont pas gaux si les enregistrements contiennent des collections diffrentes de proprits, ou si la valeur des proprits avec la mme tiquette ne sont pas gales. Lordre dans lequel les proprits sont ranges naffecte pas lgalit. Par exemple, lexpression suivante est true.
{ nom:"Jose", distance:"125" } = { distance:"125", nom:"Jose" }

Reference

Deux rfrences sont gales si leurs classes, leurs formes de rfrence et leurs containers sont identiques. Elles ne sont pas gales si leurs classes, leurs formes de rfrence et leurs containers ne sont pas identiques, mme si elles se rfrent au mme objet. Par exemple, lexpression x = y dans linstruction Tell suivante est toujours true, car les classes (word), les formes de rfrence (Index) et les containers ( paragraph 1 of text body) des deux rfrences sont identiques.
tell document "Simple" of application "AppleWorks" set x to a reference to word 1 of paragraph 1 of text body set y to a reference to word 1 of paragraph 1 of text body x = y

Les oprateurs qui grent les oprandes de diverses classes

T4 - 35

Chapitre 8

Tome 4

end tell -- rsultat : true

Lexpression x = y dans linstruction suivante est false, sans tenir compte du texte du document, car les containers sont diffrents.
tell document set x to a set y to a x = y end tell -- rsultat : "Simple" of application "AppleWorks" reference to word 1 of paragraph 1 of text body reference to word 1 of text body

false

Quand vous utilisez les rfrences dans les expressions sans loprateur A Reference To, la valeur des objets spcifis dans les rfrences est utilise pour valuer les expressions. Par exemple, le rsultat de lexpression suivante est true si les deux documents commencent par le mme mot.
tell application "AppleWorks" word 1 of text body of document "Report" = word 1 of text body of document "Test" end tell

String

Deux chanes de caractres sont gales si elles ont toutes les deux la mme srie de caractres. Elles ne sont pas gales si elles ont des sries diffrentes. AppleScript compare les chanes, caractre par caractre. AppleScript ne fera pas de distinction entre les lettres minuscules et les majuscules, tant que vous nutiliserez pas une instruction Considering pour prendre en considration la casse. Par exemple, lexpression suivante est true.
"DUMPtruck" is equal to "dumptruck"

AppleScript examine tous les caractres et la ponctuation, y compris les espaces, les tabulations, les retour-chariots, les caractres accentus, les traits dunion, les points, les virgules, les points dinterrogation, les point-virgules, les deux-points, les points dexclamation, les backslashs, les guillemets simples et doubles, dans les comparaisons de chanes de caractres. Par contre, AppleScript ignore les styles dans les comparaisons de chanes. Toutes les comparaisons de chanes de caractres peuvent tre affectes par les instructions Considering et Ignoring, lesquelles vous permettent,

T4 - 36

Les oprateurs qui grent les oprandes de diverses classes

Chapitre 8

Tome 4

respectivement, soit de tenir compte de la casse des caractres, soit de lignorer. Pour plus dinformations, voir Les instructions Considering et Ignoring (T5 - p.46).

Greater Than, Less Than


Les oprateurs Greater Than et Less Than fonctionnent avec les dates, les nombres entiers et rels, et les chanes de caractres.

Date

Une date est plus leve quune autre date si elle reprsente une date plus rcente. Une date est plus petite quune autre date si elle reprsente une date plus ancienne.

Integer

Un nombre entier est plus grand quun nombre rel ou quun autre nombre entier sil reprsente un nombre suprieur aux autres. Un nombre entier est plus petit quun nombre rel ou quun autre nombre entier sil reprsente un nombre infrieur aux autres.

Real

Un nombre rel est plus grand quun nombre entier ou quun autre nombre rel sil reprsente un nombre suprieur aux autres. Un nombre rel est plus petit quun nombre entier ou quun autre nombre rel sil reprsente un nombre infrieur aux autres.

String

Une chane de caractres est plus grande que (vient aprs) une autre chane si, en se basant sur la classification des caractres, ses caractres, en partant de la gauche, ont un rang plus lev que ceux de lautre chane. Par exemple,
"prison" comes after "libert"

et

Les oprateurs qui grent les oprandes de diverses classes

T4 - 37

Chapitre 8

Tome 4

"prison" > "libert"

sont true. Une chane de caractres est plus petite que (vient avant) une autre chane si, en se basant sur la classification des caractres, ses caractres, en partant de la gauche, ont un rang moins lev que ceux de lautre chane. Par exemple,
"libert" comes before "prison"

et
"libert" < "prison"

sont true. AppleScript utilise les rglages du tableau de bord Texte pour dterminer la position dun caractre. Lordre des caractres, pour la langue Franaise et le script Roman, est

espace !#$%&()*+,-./
0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_"{|}~ AppleScript compare les chanes, caractre par caractre. Quand des caractres, ayant la mme place dans deux chanes, ne sont pas identiques, la chane contenant le caractre le plus loign dans la classification est plus grande que lautre chane. Si deux chanes ont des caractres identiques, mais une chane est plus petite que lautre, la petite chane, en longueur, est plus petite que la longue chane. AppleScript, par dfaut, traitera toutes les lettres comme des minuscules, jusqu ce que vous utilisiez une instruction Considering pour prendre en compte la casse. Dans ce cas, les lettres sont ordonnes comme ceci, en langue Franaise et script Roman : AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz Si vous utilisez une instruction Considering qui prend en compte les caractres diacritiques, AppleScript utilise lordre suivant pour les voyelles, en langue Franaise et script Roman : a e i o u

T4 - 38

Les oprateurs qui grent les oprandes de diverses classes

Chapitre 8

Tome 4

Pour plus dinformations sur les instructions Considering, rfrez-vous Les instructions Considering et Ignoring (T5 - p.46).

Starts With, Ends With


Les oprateurs Starts With et Ends With fonctionnent avec les listes et les chanes de caractres.

List

Une liste commence avec une autre liste si la valeur des lments de la liste droite de loprateur est gale la valeur des premiers lments de la liste gauche. Une liste finit avec une autre liste si la valeur des lments de la liste droite de loprateur est gale la valeur des derniers lments de la liste gauche. Dans ces deux cas, les lments des deux listes doivent avoir le mme ordre. Ces deux oprateurs fonctionnent si loprande droite de loprateur est une valeur simple. Par exemple, les trois expressions suivantes sont toutes true :
{ "ce", "vlo", "est", "vert" } ends with "vert" { "ce", "vlo", "est", "vert" } starts with "ce" { "ce", "vlo", "est", "vert" } starts with { "ce", "vlo" }

String

Une chane de caractres commence avec une autre chane si les caractres de la liste droite de loprateur sont les mmes que les premiers caractres de la chane gauche. Par exemple, lexpression suivante est true :
"oprande" starts with "opra"

Une chane de caractres finit avec une autre chane si les caractres de la liste droite de loprateur sont les mmes que les derniers caractres de la chane gauche. Par exemple, lexpression suivante est true :
"oprande" ends with "ande"

AppleScripts compare les chanes, caractre par caractre, en accord avec les rgles de loprateur Equal.

Les oprateurs qui grent les oprandes de diverses classes

T4 - 39

Chapitre 8

Tome 4

Contains, Is Contained By
Les oprateurs Contains et Is Contained By fonctionnent avec les listes, les enregistrements et les chanes de caractres.

List

Une liste contient une autre liste si la liste droite de loprateur est une sous-liste de la liste gauche. Une sous-liste est une liste dont les lments apparaissent dans le mme ordre et qui ont les mmes valeurs que nimporte quels lments dans lautre liste. Par exemple,
{"radio", "ratio", "5", "patio"} contains {"ratio", "3 + 2"}

est true, mais


{"radio", "ratio", "5", "patio"} contains {"3 + 2", "ratio"}

est false. Une liste est contenue par une autre liste si la liste gauche de loprateur est une sous-liste de la liste droite. Par exemple, lexpression suivante est true :
{"ratio", "5"} is contained by {"radio", "ratio", "5", "patio"}

Les deux oprateurs Contains et Is Contained By fonctionnent si la sous-liste est une valeur simple. Par exemple, les deux expressions suivantes sont true :
{"radio", "ratio", "5", "patio"} contains 5 5 is contained by {"radio", "ratio", "5", "patio"}

Record

Un enregistrement contient un autre enregistrement si toutes les proprits de lenregistrement droite de loprateur sont compris dans lenregistrement gauche, et que la valeur des proprits de lenregistrement droite est gale la valeur des proprits correspondantes dans lenregistrement gauche. Un enregistrement est contenu par un autre enregistrement si toutes les proprits

T4 - 40

Les oprateurs qui grent les oprandes de diverses classes

Chapitre 8

Tome 4

de lenregistrement gauche sont comprises dans lenregistrement droite et, que la valeur des proprits de lenregistrement gauche est gale la valeur des proprits correspondantes de lenregistrement droite. Lordre dans lequel les proprits apparaissent na aucune importance. Par exemple,
{nom:"Joe", age:"22", taille:"170"} contains {taille:"170", nom:"Joe"}

est true.

String

Une chane de caracres contient une autre chane si les caractres de la chane droite de loprateur sont gaux nimporte quelle srie contigu de caractres de la chane gauche. Par exemple,
"oprande" contains "ra"

est true, mais


"oprande" contains "dna"

est false. Une chane de caractres est contenue par une autre chane si les caractres de la chane gauche de loprateur sont gaux nimporte quelle srie de caractres de la liste droite. Par exemple, cette instruction est true :
"ra" is contained by "oprande"

Concatnation
Loprateur de concatnation (&) peut grer des oprandes de nimporte quelle classe. Le type de rsultat dune concatnation dpend du type de loprande gauche. Si loprande gauche est une chane de caractres, le rsultat sera toujours une chane, et seulement dans ce cas prcis, AppleScript essaiera de contraindre la valeur de loprande droite si elle nest pas une chane. Si loprande gauche est un enregistrement, le rsultat sera toujours un enregistrement. Si loprande gauche appartient un autre type quune chane ou un enregistrement, le rsultat sera une liste.

Les oprateurs qui grent les oprandes de diverses classes

T4 - 41

Chapitre 8

Tome 4

String

La concatnation de deux chanes de caractres est une chane de caractres qui dbute avec les caractres de la chane gauche de loprateur, immdiatement suivis par les caractres de la chane droite. AppleScript najoute pas despaces ou dautres caractres entre les deux chanes. Par exemple,
"voit" & "ure"

retourne la chane "voiture". Si loprande gauche est une chane de caractres, mais que loprande droit ne lest pas, AppleScript essaie de contraindre loprande droit en chane de caractres. Par exemple, quand AppleScript value lexpression
"route nationale " & 7

il contraint lentier 7 en chane de caractres "7", et le rsultat est


"route nationale 7"

Toutefois, vous obtiendrez un rsultat diffrent si vous inversez lordre des oprandes :
7 & "route nationale " -- rsultat : {7, "route nationale "}

Record

La concatnation de deux enregistrements est un enregistrement qui dbute par les proprits de lenregistrement gauche de loprateur, suivies par les proprits de lenregistrement droite. Si les deux enregistrements contiennent des proprits avec la mme tiquette, la valeur de la proprit de lenregistrement gauche lemporte sur celle de lenregistrement droite dans le rsultat. Par exemple, le rsultat de lexpression
{nom:"toto", age:"12"} & {nom:"simon", taille:"108"}

est
{nom:"toto", age:"12", taille:"108"}

T4 - 42

Les oprateurs qui grent les oprandes de diverses classes

Chapitre 8

Tome 4

Autres classes

La concatnation de deux oprandes autres quune chane de caractres ou un enregistrement, est une liste dont le premier lment est la valeur de loprande gauche de loprateur, et dont le second lment est la valeur de loprande droit. Si les oprandes chaner sont des listes, alors le rsultat est une liste contenant tous les lments de la liste gauche de loprateur, suivis par tous les lments de la liste droite. Par exemple,
{"dessus"} & {"et", "dessous"} -- rsultat : {"dessus", "et", "dessous"} {"dessus"} & item 1 of {"et", "dessous"} -- rsultat : {"dessus", "et"}

Dans lexemple suivant, toutefois, les deux lments spcifis sont des chanes de caractres, aussi le rsultat de la concatnation est une chane :
item 1 of {"dessus"} & item 1 of {"et", "dessous"} -- rsultat : "dessuset"

Pour de plus grandes listes, lutilisation des commandes Copy et Set sera plus efficace pour ajouter un lment une liste, que la concatnation. Pour plus dinformations sur les listes, voir List (T1 - p.43).

Les oprateurs qui grent les oprandes de diverses classes

T4 - 43

Chapitre 9

Tome 4

La priorit des oprateurs

AppleScript autorise la combinaison dexpressions. Quand il value des expressions, AppleScript utilise la priorit des oprateurs pour dterminer quelles oprations doivent tre faites en premier. Le tableau suivant montre lordre dans lequel AppleScript excute les oprations. Pour voir comment les oprateurs travaillent, considrez lexpression suivante.
2 * 5 + 12 -- rsultat : 22

Pour valuer lexpression, AppleScript excute en premier la multiplication 2 * 5, car, comme il est indiqu dans le tableau, la multiplication a une priorit plus leve que laddition. La colonne du tableau appele Associativit indique lordre dans lequel AppleScript excute les oprations sil y a plusieurs oprations avec la mme priorit dans lexpression. Le terme aucun dans cette colonne indique que vous ne pouvez pas avoir de multiples occurences conscutives de lopration dans une expression. Par exemple, lexpression 3 = 3 = 3 nest pas autorise, car lassociativit pour loprateur gal (=) est aucun. Le terme unitaire indique que loprateur est un oprateur unitaire. Pour valuer les expressions avec de multiples oprateurs unitaires de mme ordre, AppleScript value dabord loprateur le plus proche de loprande, puis loprateur immdiatement suivant, et ainsi de suite. Par exemple, lexpression not not not true est value comme not (not (not true)).

T4 - 44

La priorit des oprateurs

Chapitre 9

Tome 4

Lordre de priorit des oprateurs Ordre Oprateurs Associativit Type doprateur

1 2

( )

interne vers externe unitaire

Regroupement Signe plus ou moins pour les nombres Exponentiel Multiplication ou division

+ ^ *
/

3
4

de droite gauche de gauche droite

div mod

+ &
as < > = not and

de gauche droite

Addition et soustraction

6 7 8

de gauche droite de gauche droite aucun

Concatnation Coercition Comparaison

aucun

galit et ingalit

10 11

unitaire de gauche droite

Logique ngative Logique pour boolennes Logique pour boolennes les valeurs

12

or

de gauche droite

les

valeurs

Vous pouvez modifier lordre dans lequel AppleScript excute les oprations

La priorit des oprateurs

T4 - 45

Chapitre 9

Tome 4

en les mettant entre parenthses, car, comme vous pouvez le constater dans le tableau, AppleScript value en premier les expressions entre parenthses. Par exemple, mettre des parenthses 5 + 12 dans lexpression suivante, oblige AppleScript excuter en premier laddition, et modifie le rsultat.
2 * ( 5 + 12 ) -- rsultat : 34

T4 - 46

La priorit des oprateurs

Chapitre 10

Tome 4

La gestion des dates et des heures

Arithmtique avec les dates et les heures


AppleScript supporte les oprations sur les dates et les heures avec les oprateurs + et - : date + timeDifference -- rsultat : date date - date
-- rsultat : timeDifference

date - timeDifference -- rsultat : date o date est une valeur de date et timeDifference est une valeur entire reprsentant une diffrence de temps exprime en secondes. Pour simplifier la notation des diffrences de temps, vous pouvez aussi utiliser une ou plusieurs de ces constantes :
minutes hours days weeks

60 60 * minutes 24 * hours 7 * days

Voici un exemple :
date "15 avril 1998" + 4 * days + 3 * hours + 2 * minutes -- rsultat : date "dimanche 19 avril 1998 3:02:00"

Il est souvent utile de pouvoir spcifier une diffrence de temps entre deux dates; par exemple :
set timeInvestment to current date - date "janvier 22, 1998"

Aprs

lexcution

de

cette

instruction,

la

valeur

de

la

variable

La gestion des dates et des heures

T4 - 47

Chapitre 10

Tome 4

timeInvestment est un entier qui spcifie le nombre de secondes coules

entre les deux dates. Si vous ajoutez alors cette diffrence de temps la date de dpart (22 janvier 1998), AppleScript retourne une valeur de date gale la date courante lorsque la variable timeInvestment fut rgle. Pour exprimer une diffrence de temps dans une forme plus convenable, divisez le nombre de secondes par la constante approprie :
31449600 / weeks -- rsultat : 52.0 62899200 / (weeks * 52) -- rsultat (en annes de 364 jours) : 2.0 151200 / days -- rsultat : 1.75

Pour obtenir un nombre entier dheures, de jours, et autres, utilisez loprateur div :
151200 div days -- rsultat : 1

Pour obtenir la diffrence, en secondes, entre lheure courante et lheure de Greenwich, utilisez la commande Time to GMT du complment de pilotage Complments standards. Par exemple, si vous tes Paris, la commande Time to GMT produira ce rsultat :
time to GMT -- rsultat : 3600 (1 heure de dcalage)

Pour plus dinformations sur la commande Time to GMT, voir AppleScript Scriptting Additions Guide, pour linstant en anglais, peuttre traduit par la suite, disponible sur le site dApple <http://www.apple.com/applescript/>. Pour plus dinformations sur les dates et les heures, voir Date (T1 - p.36). Notes Le format daffichage des dates et des heures de lditeur de scripts, ainsi que les rsultats retourns par les scripts, sont bass sur les rglages du tableau de bord Date et heure. x

T4 - 48

La gestion des dates et des heures

Chapitre 10

Tome 4

Notes des traducteurs Francophones La particularit de ce systme est son extraordinaire souplesse interprter diffrentes formes de saisies. Quand il sagit de travailler (extraction/comparaison/etc...) avec les proprits de dates : Les proprits jour de la semaine (weekday) et mois (month) sont uniquement des constantes prdfinies par AppleScript et elles sont en anglais (monday, january par exemple). Cest la raison pour laquelle si vous crivez
"lundi" = weekday of date "lundi 25 mars 2002" as string -- rsultat : false

alors que
"monday" = weekday of date "lundi 25 mars 2002" as string -- rsultat : true

Par consquent, pour toute opration avec des dates, noubliez pas cette diffrence linguistique et nhsitez pas faire quelques tests pralables. q

La gestion des dates de fin de sicle


Le support dAppleScript pour les dates est bas sur le mme utilitaire systme que les applications Macintosh. Lutilitaire Mac OS de date et dheure gre correctement les questions relatives au passage lan 2000 depuis lintroduction du Macintosh. Lutilitaire de date et dheure, introduit avec le Mac 128K en 1984, utilisait un systme de codage sur 32-bit pour stocker les secondes, dbutant le 1er janvier 1904 00:00:00 et finissant le 06 fvrier 2040 06:28:15. Des utilitaires de date et dheure, plus rcents, utilise un systme de codage sur 64-bit qui permet de reprsenter les dates de 30081 avant J-C jusqu 29940 aprs J-C. Toutefois, normalement, AppleScript ne grera pas les dates antrieures au 01/01/1000 ou postrieures au 31/12/9999. Pour plus dinformations sur lutilitaire Mac OS de date et dheure, voir Inside Macintosh : Operating System Utilities, disponible sur le site dApple : <http://www.apple.com/developer/>

La gestion des dates et des heures

T4 - 49

Chapitre 10

Tome 4

Les dates deux chiffres aux limites du sicle En fin du sicle Sicle en cours

Sicle suivant

91

99 00

10

Les annes 11 99 sont dates dans le sicle en cours. Les annes 00 10 sont dates dans le sicle suivant.

En dbut du sicle Sicle prcdent Sicle en cours

91

99 00

10

Les annes 00 90 sont dates dans le sicle en cours. Les annes 91 99 sont dates dans le sicle suivant.

En milieu de sicle Sicle en cours Les annes 00 99 sont dates dans le sicle en cours. 11 90

Les dates deux chiffres proches de lanne 2000, ou de nimporte quelle limite de sicle, peuvent encore reprsenter un problme si votre script accepte les dates deux chiffres venant soit du texte dune application, soit directement de la saisie par lutilisateur. Chaque fois que votre script appelle AppleScript pour contraindre une date deux chiffres en valeur de date, AppleScript convertit le texte reprsentant la date deux chiffres en une date complte pour stockage interne, en accord avec les rgles illustres plus haut et rsumes ici : Si lanne en cours est la fin du sicle (annes 91 99) une date avec une valeur danne comprise entre 11 et 99, y compris ces deux valeurs, est dans le sicle en cours (en 1999, par exemple, 11 = 1911 et 99 = 1999) une date avec une valeur danne comprise entre 00 et 10, y compris ces deux valeurs, est dans le sicle suivant (en 1999, par exemple, 03 = 2003)

T4 - 50

La gestion des dates et des heures

Chapitre 10

Tome 4

Si lanne en cours est en dbut de sicle (annes 00 10) une date avec une valeur danne comprise entre 00 et 90, y compris ces deux valeurs, est dans le sicle en cours (en 2000, par exemple, 00 = 2000, 45 = 2045 et 90 = 2090) une date avec une valeur danne comprise entre 91 et 99, y compris ces deux valeurs, est dans le sicle prcdent (en 2000, par exemple, 99 = 1999) Si lanne en cours est en milieu de sicle (annes 11 90) une date avec nimporte quelle valeur danne, comprise entre 00 et 99, est dans le sicle en cours (en 2011, par exemple, 00 = 2000, 45 = 2045 et 99 = 2099) Aussi un script qui utilise des dates proches, par exemple, pour un planning court terme, peut utiliser les dates deux chiffres avec un certain niveau de scurit. Toutefois, un script qui effectue des calculs long terme, par exemple, pour la gnalogie ou les emprunts immobiliers, devrait requrir des dates quatre chiffres.

La gestion des dates et des heures

T4 - 51

Tome 5

Les instructions de contrle

Chapitre 1

Tome 5

Introduction

Une instruction de contrle est une instruction qui contrle quand et comment dautres instructions sont excutes. La plupart des instructions de contrle sont des instructions composes (instructions qui contiennent dautres instructions). Par dfaut, AppleScript excute, dans un script, les instructions les unes aprs les autres. Les instructions de contrle peuvent modifier lordre dans lequel AppleScript excute les instructions, en lobligeant rpter ou ignorer des instructions, ou aller dans une autre instruction. Les deux premiers chapitres de ce guide fournissent des informations gnrales sur les instructions de contrle : Caractristiques des instructions de contrle (T5 - p.8) donne un aperu des instructions de contrle. Dboguer les instructions de contrle (T5 - p.10) dcrit lutilisation de la fentre Session dtat ou Historique pour aider supprimer les erreurs dans les instructions de contrle. Les autres chapitres dcrivent les instructions de contrle dAppleScript : Les instructions Tell (T5 - p.11) dfinissent la cible par dfaut qui sont envoyes les commandes, si aucun objet direct nest spcifi. Les instructions If (T5 - p.17) permettent dexcuter ou dignorer des instructions en fonction du rsultat dun ou de plusieurs tests. Les instructions Repeat (T5 - p.21) permettent de rpter une srie dinstructions. Les instructions Try (T5 - p.31) permettent de grer les messages derreur. Les instructions Considering et Ignoring (T5 - p.46) permettent de prendre en compte ou dignorer certaines caractristiques, comme la casse, la ponctuation, les espaces dans les comparaisons de chanes de caractres.

Introduction

T5 - 6

Chapitre 1

Tome 5

Les instructions With Timeout (T5 - p.51) permettent de spcifier combien de temps AppleScript doit attendre quune commande dapplication ou un complment de pilotage ait termin, avant darrter lexcution du script ou de retourner un message derreur. Les instructions With Transaction (T5 - p.54) permettent de tirer avantage des applications qui supportent la notion de transaction (une squence dvnements apparents qui peut tre excute comme sil sagissait dune simple opration).

T5 - 7

Introduction

Chapitre 2

Tome 5

Caractristiques des instructions de contrle


La plupart des instructions de contrle sont des instructions composes qui contiennent dautres instructions. Par exemple, linstruction Tell suivante est une instruction compose qui contient deux instructions If.
tell application "Finder" -- vrification de lexistence du dossier if (exists folder "Reports" of disk "Disque Dur") then set reportsToPrint to (count every file of folder "Reports" of disk "Disque Dur") else set reportsToPrint to 0 end if -- sil y a des fichiers, impression if reportsToPrint > 0 then tell application "ReportWizard" -- instructions dimpression end tell end if end tell

Les instructions composes commencent avec un ou plusieurs termes rservs, comme Tell dans lexemple ci-dessus, qui identifient le type dinstructions composes. La dernire ligne dune instruction compose commence toujours par end, suivi facultativement par le mot commenant linstruction de contrle. Les instructions de contrle peuvent contenir dautres instructions de contrle. Par exemple, linstruction Tell prcdente contient deux instructions If. Les instructions de contrle qui sont contenues lintrieur dautres instructions de contrle sont parfois appeles des instructions de contrle imbriques. Toutes les instructions de contrle peuvent tre des instructions composes. En plus, certaines instructions de contrle peuvent tre crites comme des instructions simples. Par exemple, linstruction
if ( x > y ) then return x

Caractristiques des instructions de contrle

T5 - 8

Chapitre 2

Tome 5

est quivalente
if ( x > y ) then return x end if

Vous pouvez utiliser une instruction simple seulement lorsque vous contrlez lexcution dune instruction simple ( comme return x dans lexemple prcdent).

T5 - 9

Caractristiques des instructions de contrle

Chapitre 3

Tome 5

Dboguer les instructions de contrle

Une technique qui peut tre spcialement utile pour le dbogage des instructions de contrle est lutilisation de la fentre Session dtat ou Historique (lappellation sera diffrente suivant la version de lditeur de scripts). La fentre Session dtat ou Historique souvre soit par le menu Commandes de lditeur de scripts, soit en appuyant simultanment sur Cmd + E. La fentre Session dtat ou Historique affiche les informations de diagnostic, en mme temps que le script sexcute. Ces informations peuvent vous aider dcouvrir et corriger les erreurs en montrant les rsultats des actions du script. En plus douvrir la fentre Session dtat ou Historique pour visualiser les rsultats des actions dun script, vous pouvez insrer des instructions Log aux endroits stratgiques dun script. Une instruction Log reporte la valeur dune ou plusieurs variables dans la fentre Session dtat ou Historique. Dans le script suivant, linstruction log currentWord est une instruction de dbogage. Elle oblige laffichage du mot courant dans la fentre Session dtat ou Historique, chaque fois que linstruction Repeat fait un tour. Les instructions Log peuvent tre trs utiles lors des tests des boucles Repeat ou dautres instructions de contrle. Une fois que la boucle fonctionne correctement, vous pouvez transformer les instructions Log en commentaires ou les supprimer.
set wordList to words in "O est le marteau ?" repeat with currentWord in wordList log currentWord if currentWord as text is equal to "marteau" then display dialog "jai trouv le marteau" end if end repeat

Ce script examine une liste de mots avec la forme dinstruction Repeat With (loopVariable) in (list), affichant un dialogue si le mot marteau est trouv dans la liste. Pour plus dinformations, voir Les instructions Repeat (T5 p.21). Pour plus dinformations sur les techniques de dbogage, voir Linstruction Log (T1 - p.21).

Dboguer les instructions de contrle

T5 - 10

Chapitre 4

Tome 5

Les instructions Tell

Les instructions Tell spcifient la cible par dfaut, lobjet qui sont envoyes les commandes si elles ne comportent pas de paramtre direct. Par exemple, dans linstruction Tell suivante, la commande Close ne comporte pas de paramtre direct.
tell front window of application "AppleWorks" close end tell

La commande Close est envoye la fentre lavant-plan, la cible par dfaut spcifie dans linstruction Tell. Quand AppleScript rencontre une rfrence partielle (une rfrence qui ne spcifie pas chaque container dun objet), il utilise la cible par dfaut pour la complter. Par exemple, dans linstruction Tell suivante, la rfrence word 3 ne spcifie pas tous les containers de lobjet Word, aussi AppleScript la complte avec la cible par dfaut.
tell front document of application "AppleWorks" delete word 3 of text body end tell

Le rsultat est que la commande Delete est envoye au troisime mot du texte du document lavant-plan de lapplication AppleWorks. Une instruction Tell indique aussi quel dictionnaire AppleScript doit utiliser pour interprter les termes contenus dans linstruction. Par exemple, linstruction Tell prcdente indique AppleScript quil doit utiliser le dictionnaire dAppleWorks, lequel contient la dfinition de la commande Delete, de lobjet Word, de lobjet Text Body et plus. Si linstruction Tell navait pas spcifi lapplication, AppleScript naurait pas pu interprter la commande Delete.

Les instructions Tell imbriques


Vous pouvez imbriquer une instruction Tell lintrieur dune autre instruction Tell, tant que chaque instruction du bloc Tell peut tre gre par
T5 - 11 Les instructions Tell

Chapitre 4

Tome 5

lapplication cible, spcifie dans linstruction Tell (ou par AppleScript). Par exemple, le script suivant sera compil et tournera avec succs :
tell application "Finder" tell document 1 of application "AppleWorks" get style of text body -- gre par AppleWorks end tell set fileName to name of first file of startup disk -- gre par le Finder count characters in fileName -- gre par AppleScript end tell

Cet exemple fonctionne car un document AppleWorks peut obtenir le style de son texte, le Finder peut obtenir le nom du premier fichier du disque de dmarrage et AppleScript est capable de compter le nombre de caractres dans la chane de caractres. Notez ce qui se passe, toutefois, quand vous dplacez une instruction dans le script prcdent :
tell application "Finder" tell document 1 of application "AppleWorks" get style of text body -- gre par AppleWorks set fileName to name of first file of startup disk -- erreur -- AppleWorks ne sait pas grer cette instruction end tell count characters in fileName -- gre par AppleScript end tell

Comme le script essaie dobtenir le nom du fichier lintrieur de linstruction Tell qui spcifie AppleWorks, excuter ce script gnre une erreur.

Utiliser it, me, et my dans les instructions Tell


AppleScript dfinit les variables it et me pour une utilisation dans les instructions Tell. Il dfinit aussi le terme my que vous pouvez utiliser la place de of me. La variable it est la cible par dfaut. La valeur de it est une rfrence, comme dans
tell document "Introduction" of application "AppleWorks" get name of it -- rsultat : "Introduction" end tell

Les instructions Tell

T5 - 12

Chapitre 4

Tome 5

La valeur de la variable it est document "Introduction" of application "AppleWorks". Le rsultat de la commande Get est la chane de caractres "Introduction". La variable me se rfre au script courant, comme dans lexemple suivant. La ligne qui spcifie la proprit Name peut tre place aussi bien la fin du script quau dbut.
property name:"Script" tell document "Introduction" of application "AppleWorks" get name of me -- rsultat : "Script" end tell

La rfrence name of me se rfre la proprit Name du script courant. Le rsultat de la commande Get est la chane de caractres "Script". Le script suivant, quivalent au script prcdent, utilise le terme my comme une alternative of me.
property name:"Script" tell document "Introduction" of application "AppleWorks" get my name -- rsultat : "Script" end tell

Si vous vous rfrez une proprit dans une instruction Tell, sans utiliser soit it, me ou my, AppleScript suppose que vous voulez la proprit de la cible par dfaut de linstruction Tell. Par exemple, le rsultat de la commande Get dans linstruction Tell suivante est "Introduction".
property name:"Script" tell document "Introduction" of application "AppleWorks" get name -- rsultat : "Introduction" end tell

Si AppleScript ne peut trouver la proprit dans le dictionnaire de la cible par dfaut de linstruction Tell, alors il suppose que vous voulez la proprit du script courant. Par exemple, le rsultat de la commande Get dans linstruction Tell suivante est 1000000.
property x:1000000 tell document "Introduction" of application "AppleWorks" get x -- rsultat : 1000000 end tell

T5 - 13

Les instructions Tell

Chapitre 4

Tome 5

En plus de distinguer les proprits dun script, des proprits dun objet, me et my sont utiliss pour distinguer les commandes dfinies par lutilisateur (les routines) des commandes dapplication dans les instructions Tell. Pour plus dinformations, voir Les gestionnaires (T6 - p.6).
Note

lintrieur des tests dans les rfrences Filter, lobjet direct est lobjet qui doit tre test, aussi la variable it se rfre lobjet qui doit tre test. Pour plus dinformations, voir Utilisation de la forme de rfrence Filter (T3 p.36). x

Tell (instruction simple)


Une instruction Tell simple spcifie lobjet auquel la commande est envoye.

Syntaxe tell referenceToObject to statement

o referenceToObject est une rfrence un objet dapplication, un objet-systme ou un script-objet. statement est une instruction AppleScript quelconque.

Exemples tell front window of application "Finder" to close

Notes

Si referenceToObject spcifie une application sur un ordinateur distant, des conditions supplmentaires doivent tre satisfaites. Ces conditions sont dcrites dans Les rfrences aux applications (T3 - p.43). Si referenceToObject spcifie une application sur le mme ordinateur que le script, AppleScript lancera lapplication.

Les instructions Tell

T5 - 14

Chapitre 4

Tome 5

Tell (instruction compose)


Une instruction Tell compose spcifie la cible par dfaut de la commande quelle contient.

Syntaxe tell referenceToObject [ statement ]... end [ tell ]

o referenceToObject est une rfrence un objet dapplication, un objet-systme ou un script-objet. statement est une instruction AppleScript quelconque.

Exemples

Les trois prochains exemples montrent comment fermer une fentre en utilisant respectivement, une instruction Tell compose, une instruction Tell simple, version longue et version courte.
tell application "Finder" tell front window close end tell end tell tell front window of application "Finder" close end tell tell app "Finder" to close front window

T5 - 15

Les instructions Tell

Chapitre 4

Tome 5

Lexemple suivant ferme une fentre sur un ordinateur distant.


tell application "Finder" of machine "Steves PowerBook" of zone "Fourth Floor South" tell front window close end tell end tell

Notes

Si referenceToObject spcifie une application sur un ordinateur distant, des conditions supplmentaires doivent tre satisfaites. Ces conditions sont dcrites dans Les rfrences aux applications (T3 - p.43). Si referenceToObject spcifie une application sur le mme ordinateur que le script, AppleScript lancera lapplication.

Les instructions Tell

T5 - 16

Chapitre 5

Tome 5

Les instructions If

Les instructions If permettent de dfinir les instructions ou les groupes dinstructions qui seront excutes seulement dans certaines circonstances. Chaque instruction If contient une ou plusieurs expressions boolennes dont les valeurs peuvent tre soit true, soit false. AppleScript excute les instructions contenues dans linstruction If, seulement si la valeur de lexpression boolenne est true. Les instructions If sont aussi appeles des instructions conditionnelles. Les expressions boolennes sont aussi appeles des tests. Lexemple suivant utilise une instruction conditionnelle pour dterminer sil doit afficher une bote de dialogue.
if oeufs > 1 then display dialog "La poule a pondu !" end if

Linstruction If contient lexpression boolenne oeufs > 1. Si la valeur de cette expression est true, la commande Display Dialog est excute. Si la valeur de cette expression est false, la commande Display Dialog nest pas excute. Les instructions conditionnelles peuvent contenir plusieurs tests. Par exemple, linstruction suivante contient deux tests pour dterminer si deux fichiers existent avant de les utiliser.
tell application "Finder" if (the file "Disque Dur:Status Report" exists) then if(the file "Disque Dur:Department Status" exists) then tell application "AppleWorks" -- diverses instructions end tell -- AppleWorks end if --second fichier existe end if -- premier fichier existe end tell -- tell Finder

T5 - 17

Les instructions If

Chapitre 5

Tome 5

Les deux instructions If de lexemple prcdent peuvent tre combines en une seule instruction avec deux tests :
tell application "Finder" if (the file "Disque Dur:Status Report" exists) and (the file "Disque Dur:Department Status" exists) then tell application "AppleWorks" -- diverses instructions end tell -- AppleWorks end if --second fichier existe end if -- premier fichier existe end tell -- tell Finder

Plutt que de tester si un fichier existe avant dexcuter les oprations sur lui, vous pouvez utiliser une instruction Try qui essaie dintervenir sur le fichier et qui contient aussi une zone erreur pour grer le cas o le fichier nexisterait pas. Les instructions Try sont dcrites dans Les instructions Try (T5 p.31). Une instruction If peut contenir nimporte quel nombre de clauses de la forme if...else... ; AppleScript recherche la premire expression boolenne contenue dans la clause de la forme if... ou if...else... qui soit true, excute les instructions contenues dans son bloc, puis sort de linstruction If. Une instruction If peut aussi inclure une clause finale Else. Les instructions contenues dans son bloc sont excutes si le premier test retourne false. Considrez linstruction If suivante :
display dialog "Combien damendes ?" default answer "" set amendes to (text returned of result) as integer (* un test pour vrifier la validit de la rponse pourrait tre fait ici. *) display dialog "Navez vous jamais t contrl ?" buttons {"Non", "Oui"} if button returned of result = "Oui" then set audit to true else set audit to false end if if amendes < 9 and audit = false then display dialog " contrler cette anne" else if amendes < 9 and audit = true then

Les instructions If

T5 - 18

Chapitre 5

Tome 5

display dialog " contrler lanne prochaine" else -- nimporte quoi suprieur 9 display dialog " surveiller de trs prs" end if

Cette exemple utilise des oprateurs boolens pour crer une expression boolenne plus complexe. Par exemple, lexpression
amendes < 9 and audit = false

utilise loprateur boolen And pour combiner deux oprandes boolens ( amendes < 9 et audit = false). Si les deux expressions sont true, la valeur de lexpression entire est true. Vous pouvez utiliser aussi loprateur boolen Or (un autre oprateur binaire, si un de ses oprandes est true, lexpression entire est true) et loprateur boolen Not (un oprateur unitaire, si son oprande est true, lexpression sera false, et inversement). Pour plus dinformations sur les oprateurs, voir (T4 - p.24).

If (instruction simple)
Une instruction If simple contient une expression boolenne et une instruction excuter si la valeur de lexpression boolenne est true.

Syntaxe if boolean then statement

o boolean est une expression dont la valeur est true ou false. statement est une instruction AppleScript quelconque.

Exemples

Dans linstruction If suivante, la commande Display Dialog est excute seulement si la valeur de lexpression boolenne result > 3 est true.
if result > 3 then display dialog "Le rsultat est " & result as string

T5 - 19

Les instructions If

Chapitre 5

Tome 5

If (instruction compose)
Une instruction If compose contient une ou plusieurs expressions boolennes et des groupes dinstructions excuter si la valeur de lexpression boolenne correspondante est true.

Syntaxe if boolean [ then ] [ statement ]... [ else if boolean [ then ] [ statement ]...]... [ else [ statement ]...] end [ if ]

o boolean est une expression dont la valeur est true ou false. statement est une instruction AppleScript quelconque.

Exemples

Lexemple suivant cre une chane de caractres qui spcifie quune valeur est soit plus grande que, soit plus petite que, ou soit gale une seconde valeur.
if ( x > y ) then set monMessage to " est plus grand que " else if x < y then set monMessage to " est plus petit que " else set monMessage to " est gal " end if set monResultat to (x as string) & monMessage & (y as string)

Les instructions If

T5 - 20

Chapitre 6

Tome 5

Les instructions Repeat

Les instructions Repeat sont utilises pour crer des boucles (ensembles dinstructions rptes), dans les scripts. Il y a plusieurs types dinstructions Repeat, chacune diffrant dans la faon dexcuter la boucle. Par exemple, vous pouvez rpter un nombre prdfini de fois la boucle, rpter pour chaque lment dune liste, rpter tant quune condition est true, ou rpter jusqu ce quune condition soit true. Des formes plus labores dinstructions Repeat utilisent une variable de boucle, laquelle vous pouvez vous rfrer pour les instructions, lintrieur de linstruction Repeat ou pour contrler le nombre ditrations. Chaque type dinstructions Repeat disponible est dcrit dans les sections suivantes : Repeat (forever) (T5 - p.22) Repeat (number) Times (T5 - p.23) Repeat While (T5 - p.24) Repeat Until (T5 - p.25) Repeat With (loopVariable) From (startValue) To (stopValue) (T5 - p.26) Repeat With (loopVariable) In (list) (T5 - p.27) Il peut souvent ne pas y avoir davantage clair privilgier une forme plus quune autre, aussi il est prfrable de choisir une forme exprimant le mieux le but recherch et facilement comprhensible pour un autre lecteur. Dans certains cas, une forme de rfrence Filter peut tre plus approprie quune instruction Repeat. Par exemple, le script suivant ferme chaque fentre AppleWorks qui ne se nomme pas "Old Report (WP)".
tell application "AppleWorks" close every window whose name is not "Old Report (WP)" end tell

Vous pourriez certainement compter le nombre de fentres ouvertes et excuter une boucle qui vrifierait le nom de chaque fentre et fermerait celles
T5 - 21 Les instructions Repeat

Chapitre 6

Tome 5

dont le nom nest pas gal "Old Report (WP)". Dans ce cas, toutefois, la forme de rfrence Filter est plus rapide crire et moins complexe. Pour plus dinformations sur Filter, voir Filter (T3 - p.20) et Utilisation de la forme de rfrence Filter (T3 - p.36).

Repeat (forever)
La forme Repeat (forever) est une boucle infinie - une instruction Repeat qui nindique pas quand la rptition doit sarrter. La seule faon de quitter la boucle est dutiliser une instruction de sortie. Pour plus dinformations, voir Exit (T5 - p.30).

Syntaxe repeat [ statement ]... end [ repeat ]

o statement est une instruction AppleScript quelconque.

Exemples

Lexemple suivant imprime chaque document AppleWorks ouvert, puis ferme la fentre du document. Il utilise une instruction de sortie pour quitter la boucle.
tell application "AppleWorks" set numberOfDocuments to (count documents) set i to 1 repeat if i > numberOfDocuments then exit repeat end if print front document without one copy -- affiche le dialogue close front document saving ask -- demande avant denregistrer les modifications set i to i + 1 end repeat end tell

Les instructions Repeat

T5 - 22

Chapitre 6

Tome 5

La phrase without one copy demande au document AppleWorks dafficher linterface dimpression avant de lancer limpression.

Repeat (number) times


La forme Repeat (number) times rpte un groupe dinstructions un certain nombre de fois.

Syntaxe repeat integer [ times ] [ statement ]... end [ repeat ]

o integer est un nombre entier qui indique le nombre de fois quil faut rpter les instructions contenues dans la boucle. Le terme times aprs integer est optionnel. statement est une instruction AppleScript quelconque.

Exemples

Lexemple suivant numrote les paragraphes dun document en utilisant la forme Repeat (number) times.
tell document "Simple" of application "AppleWorks" set numParagraphs to (count paragraphs of text body) set paragraphNum to 1 repeat numParagraphs times set paragraph paragraphNum of text body to (paragraphNum as string) & " " & paragraph paragraphNum of text body set paragraphNum to paragraphNum + 1 end repeat end tell

T5 - 23

Les instructions Repeat

Chapitre 6

Tome 5

Repeat While
La forme Repeat While rpte un groupe dinstructions tant quune condition particulire, spcifie par une expression boolenne, est remplie.

Syntaxe repeat while boolean [ statement ]... end [ repeat ]

o boolean est une expression dont la valeur est true ou false. Les instructions contenues dans la boucle sont rptes jusqu ce que lexpression boolenne devienne false. Si lexpression boolenne est false en entrant dans la boucle, les instructions dans la boucle ne sont pas excutes. statement est une instruction AppleScript quelconque.

Exemples

Lexemple suivant numrote les paragraphes dun document en utilisant la forme Repeat While.
tell document "Simple" of application "AppleWorks" set numParagraphs to (count paragraphs of text body) set paragraphNum to 1 repeat while paragraphNum numParagraphs set paragraph paragraphNum of text body to (paragraphNum as string) & " " & paragraph paragraphNum of text body set paragraphNum to paragraphNum + 1 end repeat end tell

Les instructions Repeat

T5 - 24

Chapitre 6

Tome 5

Repeat Until
La forme Repeat Until rpte un groupe dinstructions jusqu ce quune condition particulire, spcifie par une expression boolenne, soit remplie.

Syntaxe repeat until boolean [ statement ]... end [ repeat ]

o boolean est une expression dont la valeur est true ou false. Les instructions contenues dans la boucle sont rptes jusqu ce que lexpression boolenne devienne true. Si lexpression boolenne est true en entrant dans la boucle, les instructions dans la boucle ne seront pas excutes. statement est une instruction AppleScript quelconque.

Exemples

Dans lexemple suivant, le script utilise la forme Repeat Until, pour copier le compte de chaque enregistrement dune base de donnes Inventory DB dans les cellules dun tableur jusqu ce que la variable de boucle excde le nombre denregistrements. Le script suppose que les fichiers de la base de donnes et du tableur soient dj ouverts.
tell application "FileMaker Pro" set numberRecords to count records of document "Inventory DB" set loopCount to 1 repeat until loopCount > numberRecords copy cell "Count" of record loopCount of document "Inventory DB" to partCount set cellName to "B" & ((loopCount + 1) as string) tell application "AppleWorks" set cell cellName of spreadsheet of document "Spreadsheet" to partCount as string end tell set loopCount to loopCount + 1 end repeat end tell

T5 - 25

Les instructions Repeat

Chapitre 6

Tome 5

Repeat With (loopVariable) From (startValue) To (StopValue)


Dans la forme Repeat With (loopVariable) From (startValue) To (StopValue), la variable de boucle est un nombre entier qui est augment par une valeur spcifie aprs chaque itration de la boucle. La boucle se termine lorsque la valeur de la variable est suprieure la valeur prdfinie darrt.

Syntaxe repeat with loopVariable from startValue to stopValue [ by stepValue ] [ statement ]... end [ repeat ]

o loopVariable est utilise pour contrler le nombre ditrations. Elle peut tre nimporte quelle variable dfinie prcdemment ou une nouvelle variable dfinie dans linstruction Repeat (voir Notes). startValue (un nombre entier) est la valeur assigne loopVariable quand la boucle a dmarr. stopValue (un nombre entier) est la valeur de loopVariable laquelle litration sarrte. Litration continue jusqu ce que la valeur de loopVariable soit suprieure la valeur de stopValue. stepValue (un nombre entier) est la valeur ajoute loopVariable chaque itration de la boucle. La valeur par dfaut de stepValue est 1. statement est une instruction AppleScript quelconque.

Exemples

Lexemple suivant numrote les paragraphes dun document en utilisant la forme Repeat With (loopVariable) From (startValue) To (StopValue).
tell document "Simple" of application "AppleWorks" set numParagraphs to (count paragraphs of text body) repeat with n from 1 to numParagraphs set paragraph n of text body to (n as string) & " " & paragraph n of text body

Les instructions Repeat

T5 - 26

Chapitre 6

Tome 5

end repeat end tell

Notes

Vous pouvez utiliser une variable dj dfinie comme variable de boucle ou en dfinir une nouvelle dans une instruction Repeat. Dans les deux cas, la variable de boucle est dfinie en dehors de la boucle. Vous pouvez modifier la valeur de la variable de boucle lintrieur de la boucle mais elle sera, lors du prochain passage dans la boucle, ractualise pour respecter la progression de litration. tant donn que la thorie ne vaut pas la pratique, lancez le script suivant, en ayant ouvert, au pralable, la fentre Session dtat ou Historique.
repeat with n from 1 to 3 log n set n to 5 log n end repeat

Lors du premier passage, la valeur de n est dabord 1 puis 5. Lors du second passage, la valeur de n est 2 puis 5. Lors du troisime passage, la valeur de n est 3 puis 5. Mais la sortie de linstruction Repeat, n vaut dfinitivement 5 pour la suite du script, loopVariable garde sa dernire valeur. AppleScript value startValue, stopValue et stepValue quand il commence lexcution de la boucle et stocke les valeurs de faon interne. Si vous modifiez les valeurs dans le texte de la boucle, cela naura aucun effet sur lexcution de la boucle.

Repeat With (loopVariable) In (list)


Dans la forme Repeat With (loopVariable) In (list), loopVariable est une rfrence un objet dans une liste. Le nombre ditrations est gal au nombre dobjets dans la liste. Dans la premire itration, la valeur de la variable est item 1 of list (o list est la liste spcifie aprs in), dans la seconde itration, sa valeur est item 2 of list, et ainsi de suite.

T5 - 27

Les instructions Repeat

Chapitre 6

Tome 5

Syntaxe repeat with loopVariable in list [ statement ]... end [ repeat ]

o loopVariable est nimporte quelle variable dfinie prcdemment ou une nouvelle variable que vous dfinissez dans la boucle (voir Notes). list est une liste ou une rfrence (comme words 1 thru 5) dont la valeur est une liste. list peut aussi tre un enregistrement. Note des traducteurs francophones Malheureusement, cette possibilit ne parat pas fonctionner avec AS, quelle que soit la version. Par consquent, lenregistrement devra tre converti en liste, avant dtre employ comme paramtre de cette instruction. q statement est une instruction AppleScript quelconque.

Exemples

Le script suivant examine une liste de mots en utilisant la forme Repeat With (loopVariable) In (list) et affiche un dialogue sil trouve le mot marteau dans la liste.
set wordList to words in "O est le marteau ?" repeat with currentWord in wordList if currentWord as text is "marteau" then display dialog "Jai trouv le marteau !" end if end repeat

Notes

Vous pouvez utiliser une variable dj dfinie comme variable de boucle ou en dfinir une nouvelle dans une instruction Repeat. Dans les deux cas, la variable de boucle est dfinie en dehors de la boucle. Vous pouvez modifier la valeur de la variable de boucle lintrieur de linstruction Repeat mais elle sera, lors du prochain passage dans la boucle, ractualise pour respecter la progression de litration (voir Notes pour plus dexplications). Mais la
Les instructions Repeat T5 - 28

Chapitre 6

Tome 5

sortie de linstruction Repeat, la variable de boucle gardera sa dernire valeur. AppleScript value loopVariable in list comme item 1 of list, item 2 of list, item 3 of list, et ainsi de suite, jusqu ce quil atteigne le dernier lment de la liste, comme dans lexemple suivant :
repeat with i in {2, 4, 6, 8} set x to i end repeat -- rsultat : item 4 of {2, 4, 6, 8}

Pour assigner la valeur dun lment dune liste une variable, plutt que la rfrence de llment, vous pouvez utiliser loprateur contents of.
repeat with i in {2, 4, 6, 8} set x to contents of i end repeat -- rsultat : 8

Note des traducteurs francophones Nous insisterons particulirement sur le fait que loopVariable est une rfrence un lment et non sa valeur. Cela peut affecter les rsultats, surtout pour les commandes sensibles aux diffrences de classes. Les galits en sont un exemple courant :
repeat with i in {2, 4, 6, 8} if i = 4 then beep -- Pas de bip !! i est une rfrence, 4 un integer end repeat repeat with i in {2, 4, 6, 8} set i to contents of i -- ou bien : set i to i as integer if i = 4 then beep -- met bien un bip end repeat
q

Vous pouvez aussi utiliser les lments de la liste directement dans des expressions :
set x to 0 repeat with i in {2, 4, 6, 8} set x to x + i end repeat -- rsultat : 20

T5 - 29

Les instructions Repeat

Chapitre 6

Tome 5

Exit
Une instruction Exit est utilise dans une instruction Repeat pour quitter cette boucle avant la fin de litration. Quand AppleScript excute une instruction Exit, il arrte lexcution de la boucle et reprend lexcution du script au niveau de la prochaine instruction suivant immdiatement linstruction Repeat. Vous ne pouvez pas utiliser les instructions Exit en dehors des instructions Repeat.

Syntaxe exit

Exemples

Pour plus dinformations sur le script suivant, voir lexemple dans Repeat (forever) (T5 - p.22).
tell application "AppleWorks" set numberOfDocuments to (count documents) set i to 1 repeat if i > numberOfDocuments then exit repeat end if print document i one copy false -- affiche le dialogue close document i saving ask -- demande avant denregistrer les modifications set i to i + 1 end repeat end tell

Les instructions Repeat

T5 - 30

Chapitre 7

Tome 5

Les instructions Try

Les scripts ne fonctionnent pas forcment de faon parfaite. Quand un script est excut, des erreurs peuvent survenir avec le Systme (par exemple, quand un fichier spcifi nest pas trouv), avec une application (par exemple, quand vous spcifiez un objet qui nexiste pas) et avec le script lui-mme. Quand une erreur survient, AppleScript envoie un message spcial appel un message derreur. Un message derreur est un message retourn par une application, par AppleScript ou par Mac OS quand une erreur survient durant la gestion dune commande. Un message derreur peut comporter un numro derreur (error number), un nombre entier identifiant lerreur, une expression derreur (error expression), gnralement une chane de caractres, qui dcrit lerreur et dautres informations. Un script, pour grer les messages derreur, peut comporter une ou plusieurs sries dinstructions appeles gestionnaires derreur. Les gestionnaires derreur sont contenus dans des instructions composes, appeles instructions Try. Ces instructions dfinissent la porte des gestionnaires derreur quelles contiennent. Une instruction Try est une instruction compose de deux parties, lune contient une srie dinstructions AppleScript, lautre un gestionnaire derreur qui sert si une des instructions provoque une erreur. Si un message derreur survient en labsence de gestionnaire derreur pour le grer, le script sarrte et affiche le message derreur. Note des traducteurs francophones partir du systme 9.0 (AS 1.4.0), la partie gestionnaire de linstruction Try est devenue optionnelle. Si on ne gre pas les erreurs, on pourra donc crire :
try [ statement ]... end [ try ]
q

Pour plus dinformations sur les gestionnaires, voir Les gestionnaires (T6 p.6).

T5 - 31

Les instructions Try

Chapitre 7

Tome 5

Les types derreurs


Note des traducteurs francophones Notez que les messages derreur, lists ci-aprs, peuvent varier avec les versions dAppleScript, dAppleEvent et de Mac OS. Les messages lists dans les tableaux, correspondent Mac OS 8.6 et AS 1.3.7q Chaque erreur de script appartient une des catgories suivantes : Les erreurs Systme surviennent lorsquAppleScript ou une application requirent les services de Mac OS. Elles sont rares, et, plus important, gnralement, il ny a rien que vous puissiez faire pour elles dans un script. Quelques-unes, comme (-43) Le fichier < name > est introuvable. ou (-600) Lapplication nest pas ouverte, ont un sens pour la gestion des scripts. Les erreurs Systme sont numres dans le tableau suivant :
Liste des erreurs Systme Numro Message derreur 0 -34 -35 -37 -38 -39 -42 -43 -44 -45 -46 -47 -48 -49 -50 -51 -61 Pas derreur Le disque <name> est satur. Le disque <name> est introuvable. Mauvais nom de fichier. Le fichier <name> na pas t ouvert. Erreur de fin de fichier. Trop de fichiers ouverts Le fichier <name> est introuvable. Le disque <name> est protg en criture. Le fichier <name> est verrouill. Le disque <name> est verrouill. Le fichier <name> est en service. Nom de fichier dupliqu. Le fichier <name> est dj ouvert. Erreur de paramtre. Erreur de numro de rfrence de fichier. Fichier non ouvert avec autorisation en criture.

Les instructions Try

T5 - 32

Chapitre 7

Tome 5

Liste des erreurs Systme (suite et fin) Numro Message derreur -108 -120 -124 -128 -192 -600 -601 -602 -605 -606 -607 -608 -609 -904 -905 -906 -915 -30720 Mmoire sature. Le dossier <name> est introuvable. Le disque <name> est dconnect. Annul par lutilisateur. Une ressource est introuvable. Lapplication nest pas ouverte. Espace insuffisant pour lancer lapplication avec des paramtres particuliers. Lapplication nest pas compatible 32 bits. Une plus grande quantit de mmoire que celle spcifie dans la ressource est ncessaire. Lapplication fonctionne en tche de fond uniquement. La mmoire tampon est insuffisante. Aucun vnement de haut niveau exceptionnel. La connexion est invalide. La mmoire systme est insuffisante pour tablir la connexion avec lapplication distance. Laccs distance nest pas autoris. <name> nest pas lanc ou le lien entre les applications nest pas activ. Impossible de localiser lordinateur distant. Date et heure invalides <date string>.

Les erreurs AppleEvent sont des erreurs Systme qui surviennent quand le systme de message sous-jacent pour AppleScript - connu sous le nom dApple Events - choue. La plupart de ces erreurs, comme Aucune interaction avec lutilisateur nest permise., ne concernent pas les scripteurs. De mme, les erreurs qui rclament des formes de rfrence, comme Impossible dobtenir <reference>, ne concernent pas les utilisateurs. Les erreurs AppleEvent sont numres dans le tableau suivant :

T5 - 33

Les instructions Try

Chapitre 7

Tome 5

Liste des erreurs AppleEvent Numro -1700 -1701 -1702 -1703 -1704 -1705 -1706 -1707 -1708 -1709 -1710 -1711 -1712 -1713 -1714 -1715 -1716 -1717 -1718 -1719 -1720 -1721 -1723 -1725 -1726 -1727 -1728 -1729 Message derreur Impossible de faire de <data> un item. Le paramtre <name> est manquant pour <commandName>. Certaines donnes ne peuvent tre lues. <data> est le mauvais type. Certains paramtres sont invalides. Lopration impliquant un lment liste a chou. Une version plus rcente du gestionnaire AppleEvent est ncessaire. Event nest pas un AppleEvent. <reference> ne comprend pas le message <commandName>. Une rponse invalide a t utilise avec AEResetTimer. Un mode denvoi invalide a t utilis. La boucle dattente de rponse ou de rception a t annule par lutilisateur. Dlai dpass pour un AppleEvent. Aucune interaction avec lutilisateur nest permise. Mauvais mot-cl pour une fonction spciale. Certains paramtres nont pas t compris. Type dadresse AppleEvent inconnu. Le gestionnaire <identifier> nest pas dfini. La rponse nest pas encore arrive. Impossible dobtenir <reference>. Index invalide. Plage invalide. <expression> ne correspond pas aux paramtres <parameterNames> pour <commandName>. Impossible dobtenir <expression>. Accs non autoris. Oprateur logique illgal appel. Comparaison ou logique illgale. Une rfrence tait attendue. Impossible dobtenir <reference>. La procdure de comptage dobjets a retourn un compte ngatif.

Les instructions Try

T5 - 34

Chapitre 7

Tome 5

Liste des erreurs AppleEvent (suite et fin) Numro -1730 -1731 -1750 -1751 -1752 -1753 -1754 -1755 -1756 -1757 -1758 -1759 -1760 Message derreur Le contenant spcifi tait une liste vide. Type dobjet inconnu. Erreur du systme de script. Numro didentification de script invalide. Le script ne semble pas tre originaire dAppleScript. Erreur de script. Le slecteur donn est invalide. Accs invalide. La source est introuvable. Pas de dialecte de la sorte. Les donnes ne peuvent tre lues car leur format est trop ancien. Les donnes ne peuvent tre lues car leur format est trop rcent. Lenregistrement est dj activ.

Une erreur de pilotage dapplication est retourne par une application quand elle gre les commandes standards dAppleScript (les commandes supportes par toutes les applications). La plupart de ces erreurs, comme Lobjet spcifi est une proprit, non un lment, ne concernent pas les utilisateurs et devraient tre gres. Les erreurs de pilotage dapplication sont numres dans le tableau suivant. Les applications peuvent dfinir des messages derreur supplmentaires pour les commandes AppleScript quelles grent. Une application qui dfinit de telles erreurs devrait les lister dans sa documentation. Les dveloppeurs peuvent dfinir de nouvelles erreurs dapplication dans la srie des -10 000 pour leurs applications.
Liste des erreurs de pilotage dapplication Numro -10000 -10001 -10002 -10003 Message derreur Le gestionnaire AppleEvent a chou. <descriptorType> est le mauvais type. Forme de cl invalide. Impossible de rgler <object ou data> <object ou data>. Accs non autoris.

T5 - 35

Les instructions Try

Chapitre 7

Tome 5

Liste des erreurs de pilotage dapplication (suite et fin) Numro -10004 -10005 -10006 -10007 -10008 -10009 -10010 -10011 -10012 -10013 -10014 -10015 Message derreur Une violation dautorisation daccs est survenue. La lecture na pas t autorise. Impossible de rgler <object ou data> <object ou data>. Impossible dobtenir <object ou data>. Index invalide. Lobjet spcifi est une proprit, non un lment. Impossible de fournir le type requis pour les donnes. Le gestionnaire ne peut grer des objets de cette classe. Impossible de grer cette commande car elle ne fait pas partie de la transaction en cours. La transaction laquelle cette commande appartient nest pas une transaction valide. Lutilisateur na fait aucune slection. Le gestionaire gre uniquement des objets simples. Impossible dannuler lAppleEvent prcdent ou laction prcdente.

Les erreurs AppleScript sont des erreurs qui surviennent quand AppleScript traite les instructions dun script. Presque toutes ces erreurs ne concernent pas les scripteurs. Les erreurs AppleScript sont numres dans le tableau suivant :
Liste des erreurs AppleScript Numro -2700 -2701 -2702 -2703 -2704 -2705 -2706 -2707 -2708 Message derreur Une erreur est survenue. Impossible de diviser <number> par zro. Le rsultat dune opration numrique tait trop lev. <reference> ne peut tre lanc car il ne sagit pas dune application. <reference> nest pas pilotable. Le dictionnaire de lapplication est corrompu. Saturation de la pile. Saturation de la table interne. Tentative de cration dune valeur plus leve que la taille disponible.

Les instructions Try

T5 - 36

Chapitre 7

Tome 5

Liste des erreurs AppleScript (suite et fin) Numro -2709 -2720 -2721 -2729 -2740 -2741 -2750 -2751 -2752 -2753 -2754 -2755 -2760 -2761 -2762 -2763 Message derreur Impossible dobtenir le dictionnaire des vnements de lapplication. Impossible de tenir compte et dignorer la fois <attribute>. Impossible deffectuer une opration sur un texte excdant 32 Ko. Le message est trop volumineux pour la version 7.0 du Finder. Un <languageElement> ne peut aller aprs ce <languageElement>. <languageElement> attendu mais <languageElement> trouv. Le paramtre <name> est spcifi plus dune fois. La proprit <name> est spcifie plus dune fois. Le gestionnaire <name> est spcifi plus dune fois. La variable <name> nest pas dfinie. Impossible de dclarer <name> la fois comme une variable locale et une variable globale. Linstruction Exit ntait pas dans une boucle de rptition. Un trop grand nombre dinstructions Tell sont embotes. <name> est illgal en tant que paramtre formel. <name> nest pas un nom de paramtre pour lvnement <event>. Aucun rsultat na t retourn partir de certaines composantes de cette expression.

Les erreurs de script sont des messages derreur envoys par un script utilisant la commande Error (T5 - p.41). Les scripts qui dfinissent des erreurs supplmentaires, souvent, comporteront la description de ces erreurs dans leur documentation.
Note

Certaines erreurs sont le rsultat de lopration normale dune commande. Par exemple, la commande Choose File retourne une erreur -128 (Annul par lutilisateur) si lutilisateur clique sur le bouton Annuler dans la bote de dialogue. Les scripts doivent habituellement grer de telles erreurs, pour assurer le bon droulement des oprations. Pour un exemple de script grant cette erreur, voir la section Exemples dans crire une instruction Try (T5 p.38). x

T5 - 37

Les instructions Try

Chapitre 7

Tome 5

Comment les erreurs sont gres


Quand une erreur survient, AppleScript vrifie si linstruction qui a provoqu lerreur, est contenue dans une instruction Try. Une instruction Try est une instruction compose de deux parties, lune contient une srie dinstructions AppleScript, lautre un gestionnaire derreur qui sert si une des instructions provoque une erreur. Si linstruction qui a provoqu lerreur est comprise dans une instruction Try, alors AppleScript passe la main au gestionnaire derreur de linstruction Try. Aprs la fin de lintervention du gestionnaire derreur, AppleScript passe linstruction suivant immdiatement la fin de linstruction Try. Si lerreur survient lintrieur dune routine et quAppleScript ne trouve pas dinstruction Try dans cette routine, AppleScript vrifie si linstruction, depuis laquelle la routine a t lance, est contenue dans une instruction Try. Si cette instruction nest pas contenue dans une instruction Try, AppleScript continue de remonter la hirarchie des instructions afin de sassurer de labsence dinstruction Try. Si effectivement, labsence dinstruction Try est constate, AppleScript arrte lexcution du script.

crire une instruction Try


Une instruction Try est une instruction compose de deux parties. La premire partie est une srie dinstructions AppleScript et dbute avec le terme try. La seconde partie commence avec le terme on error et elle est un gestionnaire derreur - une srie dinstructions qui sont excutes si une des instructions de la premire partie provoque une erreur. Linstruction Try finit avec le terme end (suivi facultativement par error ou try). Le gestionnaire derreur peut inclure au maximum 5 variables paramtres (appeles aussi paramtres formels) qui reprsentent linformation donne dans le message derreur quand lerreur survient. Quand le gestionnaire derreur est appel, les variables paramtres deviennent des variables locales dans le gestionnaire derreur.

Les instructions Try

T5 - 38

Chapitre 7

Tome 5

Syntaxe try [ statement ]... on error [ errorMessageVariable ] [ number errorNumberVariable ] [ from offendingObjectVariable ] [ partial result resultListVariable ] [ to expectedTypeVariable ] [ global variable [, variable ]...] [ local variable [, variable]...] [ statement ]... end [ error | try ]

o statement est une instruction AppleScript quelconque. errorMessageVariable (un identificateur). Vous utiliserez cette variable paramtre lintrieur du gestionnaire derreur pour vous rfrer lexpression de lerreur, gnralement une chane de caractres, qui dcrit lerreur. errorNumberVariable (un identificateur). Vous utiliserez cette variable paramtre lintrieur dun gestionnaire derreur pour vous rfrer au numro de lerreur, un nombre entier. offendingObjectVariable (un identificateur). Vous utiliserez cette variable paramtre lintrieur dun gestionnaire derreur comme une rfrence lobjet dapplication responsable de lerreur. resultListVariable (un identificateur). Vous utiliserez cette variable paramtre lintrieur dun gestionnaire derreur pour vous rfrer aux rsultats partiels des objets grs avant que lerreur ne survienne. Sa valeur est une liste pouvant contenir des valeurs de nimporte quelle classe. Ce paramtre sapplique uniquement aux commandes qui retournent des rsultats de multiples objets. Par exemple, si une application gre la commande get words 1 thru 5 et quune erreur survient lorsquelle gre le quatrime mot, le paramtre partial result contiendra les rsultats des trois premiers mots. expectedTypeVariable (un identificateur). Cette variable paramtre identifie la classe de valeur attendue (un identificateur de classe) - cest dire, la classe de valeur laquelle AppleScript a essay de contraindre la valeur de
T5 - 39 Les instructions Try

Chapitre 7

Tome 5

expectedTypeVariable. Si une application reoit des donnes de la mauvaise classe et ne peut les contraindre dans la classe correcte, la valeur de cette variable paramtre est la classe de la coercition qui a chou. Lexemple la fin de cette dfinition en montre le fonctionnement. variable (un identificateur). Cette variable paramtre est soit une variable globale, soit une variable locale, les deux pouvant tre utilises dans les gestionnaires. La porte dune variable locale se limite au gestionnaire. La porte dune variable globale peut stendre tout le script, y compris dautres gestionnaires ou scripts-objets. Pour plus dinformations sur la porte des variables locales et globales, voir Porte des variables et des proprits de script (T6 - p.43).

Exemples

Linstruction Try suivante fournit un gestionnaire derreur pour la commande Choose File. La commande Choose File retourne une erreur si lutilisateur clique sur le bouton Annuler dans la bote de dialogue. Si lutilisateur ne choisit pas un fichier, le gestionnaire derreur demande sil continue, utilisant un fichier par dfaut. Si lutilisateur choisit de continuer, un second dialogue confirme le choix et affiche le nom du fichier par dfaut.
set fileName to "Generic Prefs" -- utiliser si aucun fichier nest choisi try choose file -- demande lutilisateur de choisir un fichier (* si lutilisateur annule, linstruction suivante ne sera pas excute *) set fileName to result on error errText number errNum if (errNum is -128) then -- annulation display dialog "Aucun fichier na t choisi. " & "Jutilise le fichier par dfaut ?" if button returned of result is equal to "OK" then display dialog "Le script va continuer " & "en utilisant le fichier par dfaut \"" & fileName & "\"." end if else -- si une autre erreur, ne rien faire. end if end try

Les instructions Try

T5 - 40

Chapitre 7

Tome 5

Lexemple suivant montre lutilisation du mot cl To pour rcuprer des informations supplmentaires sur une erreur qui survient au cours dun chec de coercition.
try repeat with i from 1 to "Dijon" i end repeat on error from obj to newClass -- affichage des informations de From et To log {obj, newClass} end try

Linstruction Try choue car la chane de caractres "Dijon" est de la mauvaise classe - cest une chane de caractres et non un nombre entier. Le gestionnaire derreur crit simplement la valeur de obj (la valeur fautive, "Dijon") et de newClass (la classe de la coercition qui a chou, integer) dans la fentre Session dtat ou Historique de lditeur de scripts. Le rsultat est (*Dijon,integer*), indiquant que lerreur est survenue lors de lessai de convertir "Dijon" en nombre entier.

Signaler les erreurs dans les scripts


Un script peut signaler une erreur - laquelle peut alors tre gre par un gestionnaire derreur - avec la commande Error. Celle-ci autorise les scripts dfinir leurs propres messages pour les erreurs survenant dans le script.

Syntaxe de la commande Error error [ [ [ [ [

errorMessage ] number errorNumber ] from offendingObject ] partial result resultList ] to expectedType ]

o errorMessage est une chane de caractres dcrivant lerreur. Bien que ce paramtre soit facultatif, il est vivement conseill de fournir, si cest possible, une description des erreurs, et notamment, si le paramtre number nest pas indiqu. Si vous nindiquez pas de description, une chane de caractres vide

T5 - 41

Les instructions Try

Chapitre 7

Tome 5

("") sera envoye au gestionnaire derreur. errorNumber est le numro derreur pour lerreur. Vous ntes pas oblig dindiquer un numro, mais si vous le faites, ce numro ne doit pas dj faire partie de la liste des numros derreur rservs et numrs dans la section Les types derreur (T5 - p.32). En gnral, les nombres positifs de 500 10 000 ne rentrent pas en conflit avec les numros derreur dAppleScript, de Mac OS ou dAppleEvent. Si vous nindiquez pas de paramtre number, la valeur -2700 (erreur inconnue) sera envoye au gestionnaire derreur. offendingObject est une rfrence lobjet, sil y en a un, responsable de lerreur. Si vous fournissez une rfrence partielle, AppleScript la complte en utilisant la valeur de lobjet par dfaut (par exemple, la cible de linstruction Tell). resultList sapplique uniquement aux commandes qui retournent des rsultats pour de multiples objets. Si les rsultats pour certains objets spcifis dans la commande, mais pas tous, sont disponibles, vous pouvez les inclure dans le paramtre partial result . Si vous nincluez pas de paramtre partial result, une liste vide ( {} ) est envoye au gestionnaire derreur. expectedType est un identificateur de classe. Si un paramtre spcifi dans la commande nappartient pas la classe attendue, et quAppleScript est incapable de le contraindre dans la classe attendue, alors vous pouvez inclure la classe attendue dans le paramtre to.

Exemples

Lexemple suivant utilise la commande Error pour signaler une erreur. Le gestionnaire derreur signale lerreur exactement comme elle serait reue en temps normal, obligeant AppleScript afficher un dialogue derreur.
try word 5 of "un deux trois" on error number errNum from badObj --instructions qui grent lerreur error number errNum from badObj end try

Dans lexemple suivant, une commande Error, dans un gestionnaire derreur, signale lerreur, mais modifie le message qui apparat dans le dialogue derreur. Il modifie aussi le numro derreur en 600.

Les instructions Try

T5 - 42

Chapitre 7

Tome 5

try word 5 of "un deux trois" on error --instructions qui dterminent la cause de lerreur error "Il ny a pas assez de mots !" number 600 end try

Lexemple suivant montre comment signaler une erreur pour grer de mauvaises donnes, et comment fournir un gestionnaire qui traite dautres erreurs. La routine SumIntegersInList attend une liste de nombres entiers. Si un lment de la liste envoye nest pas un nombre entier, SumIntegersInList signale une erreur numro 750 et retourne 0. La routine comporte un gestionnaire derreur qui affiche un dialogue si le numro derreur est gal 750 ; sinon il utilise la commande Error pour signaler lerreur. Cela permet dautres instructions, dans la chane dappel, de grer le numro derreur inconnu. Si aucune instruction ne gre lerreur, AppleScript affiche un dialogue derreur et lexcution sarrte.
on SumIntegersInList from itemList try -- initialise la valeur retourne. set integerSum to 0 (* avant de faire laddition, vrifie que tous les lments dans la liste sont des nombres entiers.*) if ((count items in itemList) is not equal to (count integers in itemList)) then (* si tous les lments ne sont pas des nombres entiers, signale une erreur.*) error number 750 end if (* utilise une instruction de rptition pour additionner les nombres entiers de la liste.*) repeat with currentItem in itemList set integerSum to integerSum + currentItem as integer end repeat return integerSum --succs de la routine. on error errStr number errorNumber (* si cest notre propre numro derreur, avertir des mauvaises donnes.*) if the errorNumber is 750 then display dialog "Tous les lments de " & "la liste doivent tre des nombres entiers." return integerSum -- retourne la valeur par dfaut (0). else (* une erreur inconnue survient. Signale

T5 - 43

Les instructions Try

Chapitre 7

Tome 5

nouveau, ainsi le demandeur peut la grer, ou AppleScript peut afficher le numro.*) error number errorNumber end if end try end SumIntegersInList

Maintenant, regardons comment la routine SumIntegersInList gre diverses conditions derreur. Appel avec succs de la routine

Ce premier appel aboutit sans erreur.


set sumList to {1, 3, 5} set listTotal to SumIntegersInList from sumList -- rsultat : 9

Appel de la routine avec de mauvaises donnes

Lappel suivant envoie de mauvaises donnes - la liste contient un lment qui nest pas un nombre entier.
set sumList to {1, 3, 5, "A"} set listTotal to SumIntegersInList from sumList if listTotal is equal to 0 then -- la routine ne totalise pas la liste, gestion de lerreur set sumList2 to integers of sumList set listTotal to SumIntegersInList from sumList2 end if -- rsultat : 9

La routine SumIntegersInList vrifie la liste et signale une erreur 750 car la liste contient au moins un lment qui nest pas un nombre entier. Le gestionnaire derreur de la routine reconnat une erreur numro 750 et ouvre un dialogue pour dcrire le problme. La routine SumIntegersInList retourne 0. Le script vrifie la valeur retourne et, si elle est gale 0, refait une liste en ne gardant que les nombres entiers et la renvoie la routine.

Les instructions Try

T5 - 44

Chapitre 7

Tome 5

Une erreur inconnue survient et elle nest pas gre par le script.

Pendant que la routine SumIntegersInList est en train de traiter la liste, comme dans lexemple prcdent, supposons quune erreur inconnue survienne. Lorsque lerreur inconnue se produit, le gestionnaire derreur de la routine tait en train dappeler la commande Error pour signaler lerreur. Comme le script ne la gre pas, AppleScript affiche un dialogue derreur et arrte lexcution. La routine SumIntegersInList ne retourne pas de valeur.

Une erreur inconnue est gre par le script.

Finalement, supposons que le script ait son propre gestionnaire derreur, ainsi, si une erreur inconnue survient dans la routine, le script pourra la grer. Supposons ensuite quune erreur inconnue survienne lorsque la routine traite la liste.
try set sumList to {1, 3, 5} set listTotal to SumIntegersInList from sumList on error errMsg number errorNumber display dialog "Une erreur inconnue sest produite : " & errorNumber as string -- instructions de dpannage end try

Dans ce cas, le gestionnaire derreur de la routine appelle la commande Error pour signaler lerreur, lorsque, lerreur inconnue se produit. Comme le script a un gestionnaire derreur, il peut grer lerreur en affichant un dialogue qui reprend le numro derreur. Lexcution peut continuer si cest prvu.

T5 - 45

Les instructions Try

Chapitre 8

Tome 5

Les instructions Considering et Ignoring

Les instructions Considering permettent de contrler la faon dont AppleScript excute les oprations et les commandes, en numrant des caractristiques spcifiques, appeles attributs, devant tre prises en compte par les oprations et les commandes lors des excutions. Les instructions Ignoring fonctionnent de la mme manire, except que vous numrerez les attributs spcifiques devant tre ignors. Les attributs que vous pouvez utiliser incluent : - la casse, les espaces, etc... qui affectent les comparaisons de chanes de caractres - un attribut appel application responses qui contrle si AppleScript doit attendre ou non les rponses des commandes envoyes aux applications Lexemple suivant montre une comparaison de chanes de caractres sans instruction Considering :
"This" = "this" -- rsultat : true

La valeur de la comparaison de chanes de caractres est true, car par dfaut, AppleScript ne distingue pas les lettres majuscules des minuscules. La mme comparaison lintrieur dune instruction Considering :
considering case "This" = "this" end considering -- rsultat : false

Linstruction Considering spcifie quun attribut particulier de chanes de caractres - la casse - doit tre utilis dans la comparaison. Maintenant le rsultat de la comparaison "This" = "this" est false, car la lettre majuscule T dans "This" ne correspond plus la lettre minuscule t dans "this".

Les instructions Considering et Ignoring

T5 - 46

Chapitre 8

Tome 5

Syntaxe
considering attribute [, attribute ... and attribute ] [ but ignoring attribute [, attribute ... and attribute ] ] [ statement ]... end considering ignoring attribute [, attribute ... and attribute ] [ but considering attribute [, attribute ... and attribute ] ] [ statement ]... end ignoring

o statement est une instruction AppleScript quelconque. attribute est un attribut qui doit tre considr ou ignor. Les attributs sont lists dans la section suivante Attributs.

Attributs
Un attribut est une caractristique qui peut tre considre ou ignore dans une instruction Considering ou Ignoring. Une instruction Considering ou Ignoring peut comporter nimporte lequel des attributs suivants :
application responses : AppleScript attend une rponse de chaque

commande dapplication avant dexcuter linstruction ou lopration suivante. La rponse indique si la commande sest acheve avec succs, et retourne aussi les rsultats et les messages derreur, sil y en a. Si cet attribut est ignor, AppleScript nattend pas les rponses des commandes dapplication avant dexcuter linstruction suivante, et ignore tous les rsultats ou messages derreur retourns. Les rsultats et messages derreur des commandes AppleScript, des complments de pilotage et des expressions ne sont pas affects par lattribut application responses.
case : Dans les comparaisons de chanes de caractres, les lettres majuscules

ne sont pas distingues des minuscules. Si cet attribut est considr, les majuscules sont distingues des minuscules. Pour savoir comment AppleScript classe les lettres, les ponctuations et les autres symboles, voir Greater Than, Less Than (T4 - p.37).

T5 - 47

Les instructions Considering et Ignoring

Chapitre 8

Tome 5

diacriticals : Les signes diacritiques (comme ,",^,, et ~) sont pris en

compte dans les comparaisons de chanes de caractres. Si cet attribut est ignor, "rsum" est considr comme tant gal "resume". Pour savoir comment AppleScript classe les lettres accentues, voir Greater Than, Less Than (T4 - p.37).
expansion : Dans les comparaisons de chanes de caractres, AppleScript

classe les caractres , , , comme tant identiques respectivement aux paires de caractres ae, AE, oe, OE. Si cet attribut est ignor, AppleScript considre que ces paires de caractres sont diffrentes des caractres simples, par exemple, serait considr comme ntant pas gal oe.
hyphens : Dans les comparaisons de chanes de caractres, les mots

comportant ou relis par des traits dunion (comme arc-en-ciel, prends-le) sont considrs comme diffrents des mmes mots ne comportant pas de trait dunion (par exemple, arcenciel, prendsle). Si cet attribut est ignor, les chanes de caractres sont compares comme sil ny avait pas de traits dunion, par exemple, "arc-en-ciel" serait considr comme tant gal "arcenciel".
punctuation : Les signes de ponctuation (comme .,?:;!\ ") sont pris en

compte dans les comparaisons de chanes de caractres. Si cet attribut est ignor, les chanes de caractres sont compares comme si ces signes de ponctuation taient absents, par exemple, "Hello !" serait considr comme tant gal "Hello".
white space : Les espaces, les tabulations et les retour-chariots sont pris en

compte dans les comparaisons de chanes de caractres. Si cet attribut est ignor, les chanes de caractres sont compares comme si ces caractres taient absents, par exemple, "voiture rouge" serait considr comme tant gal "voiturerouge".

Exemples
"BOB" comes before "bob" -- rsultat : false considering case "BOB" comes before "bob" -- rsultat : true end considering "a" comes before "" -- rsultat : true ignoring diacriticals "a" comes before "" -- rsultat : false
Les instructions Considering et Ignoring T5 - 48

Chapitre 8

Tome 5

end ignoring "Babs" comes before "bbs" -- rsultat : true ignoring case "Babs" comes before "bbs" -- rsultat : true end ignoring ignoring case and diacriticals "Babs" comes before "bbs" -- rsultat : false end ignoring ignoring punctuation "Ce !,:?livre" = "Ce livre" -- rsultat : true end ignoring

Notes
La prise en compte de case, white space, diacriticals, hyphens, expansion et punctuation sapplique uniquement aux comparaisons excutes par AppleScript. Les comparaisons sont excutes par AppleScript si le premier oprande de la comparaison est une valeur dans un script ; si le premier oprande est une rfrence un objet dapplication ou systme, la comparaison est excute par lapplication ou le systme oprationnel. Au contraire, la prise en compte de Application responses sapplique uniquement aux commandes dapplication. Les commandes AppleScript, les complments de pilotage et les expressions AppleScript ne sont pas affectes. Comme avec toutes les autres instructions de contrle, vous pouvez imbriquer des instructions Considering et Ignoring. Si le mme attribut apparat en mme temps dans une instruction imbrique diffrents niveaux, le sens de lattribut nest pas influenc par les instructions des autres niveaux. Par exemple, dans linstruction suivante, la premire comparaison est true, car lattribut case est ignor (comme spcifi dans linstruction Ignoring), la seconde comparaison est false, car lattribut case est cette fois considr (comme spcifi dans linstruction Considering).
ignoring case and punctuation if "This" = "this" then beep 1 -- true considering case if "This" = "this" then beep 2 -- false end considering end ignoring

T5 - 49

Les instructions Considering et Ignoring

Chapitre 8

Tome 5

-- rsultat : beep une fois.

Lorsque les attributs dune instruction de niveau infrieur sont diffrents de ceux des instructions dun niveau suprieur, les attributs se cumulent du plus haut niveau au plus bas, en respectant le sens de linstruction, Considering ou Ignoring. Par exemple, dans linstruction suivante, la premire comparaison est false, car seul diacriticals est ignor, la seconde est galement false, car seuls diacriticals (grce au systme de cumul) et white space sont ignors. Par contre, la troisime comparaison est true, car diacriticals, white space (tous les deux grce au systme de cumul) et punctuation sont ignors.
ignoring diacriticals if "Th !" = "the" then beep 1 -- rsultat : false ignoring white space if "Th !" = "the" then beep 2 -- rsultat : false ignoring punctuation if "Th !" = "the" then beep 5 -- rsultat : true end ignoring end ignoring end ignoring -- rsultat : beep 5 fois.

Les instructions Considering et Ignoring

T5 - 50

Chapitre 9

Tome 5

Les instructions With Timeout

Quand AppleScript envoie une commande une application, il attend normalement que la commande finisse lexcution avant de continuer avec le reste du script. Si la commande met plus dune minute pour finir, AppleScript arrte lexcution du script et retourne lerreur -1712 "Dlai dpass pour un AppleEvent". AppleScript nannule pas lopration, il arrte tout simplement lexcution du script. Une instruction With Timeout permet de moduler le dlai dattente dAppleScript aprs lequel il arrte lexcution. La dure que vous spcifiez dans linstruction With Timeout ne sapplique pas aux commandes envoyes lapplication qui excute le script (comme lditeur de scripts ou le script lui-mme), mais certaines commandes lintrieur de linstruction With Timeout qui sont envoyes dautres applications. Comme avec le dlai de 1 minute par dfaut, quand linstruction With Timeout arrive en fin de dlai, AppleScript nannule pas lopration, il arrte lexcution du script. De plus, AppleScript peut vrifier le dlai seulement si lapplication recevant la commande laisse du temps au script. Si une application est passive (cliquer sur lcran ne produit pas de rsultat), le dlai peut ne pas tre vrifi. Par exemple, linstruction suivante ne sera pas hors-dlai si lutilisateur narrive pas fermer le dialogue modal denregistrement :
with timeout of 5 seconds tell application AppleWorks close front document saving ask end tell end timeout

Votre script peut utiliser une instruction With Timeout en conjonction avec une instruction Try sil a lopportunit de traiter un dlai. Toutefois, que votre script puisse envoyer ou non une commande pour annuler lopration fautive aprs le dlai, dpend de lapplication qui excute la commande. Le temps spcifi par une instruction With Timeout sapplique toutes les commandes dapplication et nimporte quelles commandes de complments de pilotage dont les cibles sont des objets dapplication, lesquelles incluent les commandes de complments de pilotage dont les paramtres directs sont

T5 - 51

Les instructions With Timeout

Chapitre 9

Tome 5

des objets dapplication et les commandes de complments de pilotage lintrieur des instructions Tell visant des objets dapplication. Le temps spcifi par une instruction With Timeout ne sapplique pas aux commandes AppleScript, aux oprations AppleScript ou aux commandes des complments de pilotage dont les cibles ne sont pas des objets dapplication.
Note

Si vous voulez quAppleScript excute linstruction suivante sans attendre que les commandes dapplication finissent, utilisez une instruction Ignoring pour ignorer lattribut application responses. Pour plus dinformations, voir Les instructions Considering et Ignoring (T5 - p.46). x

Syntaxe
with timeout [ of ] integer second[s] [ statement ]... end [ timeout ]

o integer est un nombre entier qui spcifie la dure, en secondes, quAppleScript autorise chaque commande dapplication ou chaque commande supplmentaire contenue dans linstruction With Timeout qui est envoye nimporte quelle application autre que celle qui est active. statement est une instruction AppleScript quelconque.

Exemples
Le script suivant dmarre le Finder sur une tche qui peut mettre longtemps se terminer. Dabord, il cre 40 dossiers, puis il les ouvre, puis il commence les fermer, en utilisant une instruction With Timeout pour interrompre lexcution du script une seconde aprs le dmarrage de lopration de fermeture. Si linstruction With Timeout gnre une erreur, la section erreur de linstruction Try appelle la commande Beep et crit aussi bip dans la fentre Session dtat ou Historique de lditeur de scripts.
tell application "Finder" repeat 40 times make new folder at startup disk
Les instructions With Timeout T5 - 52

Chapitre 9

Tome 5

end repeat open (every folder of startup disk whose name contains "sans titre") try with timeout of 1 second close (every folder of startup disk whose name contains "sans titre") end timeout on error (* juste bip et notification dans la fentre Session dtat. *) beep log ("bip") end try end tell

T5 - 53

Les instructions With Timeout

Chapitre 10

Tome 5

Les instructions With Transaction

Quelques applications, comme les bases de donnes, supportent la notion de transaction - cest dire, une squence dvnements apparents qui pourraient tre excuts comme sils taient une seule opration. Linstruction With Transaction permet de spcifier des transactions quelques applications. Au dbut de linstruction With Transaction, AppleScript demande un identifiant de transaction lapplication cible (tablie partir de linstruction Tell) et attache cet identifiant chaque Apple Event quil envoie lapplication cible comme un rsultat de lexcution des commandes dans le corps de linstruction With Transaction. Chaque fois quAppleScript sort dune instruction With Transaction, il informe lapplication que la transaction est finie, mme si, cause dune erreur, la sortie survient avant la fin de linstruction. Par consquent, si une erreur survient lintrieur de linstruction With Transaction mais nest pas gre par cette instruction, AppleScript sort de linstruction, lapplication est informe que la transaction est finie, et lerreur continue dans les instructions suivantes jusqu ce quelle soit gre.

Syntaxe
with transaction [ session ] [ statement ]... end [ transaction ]

o session est un objet qui spcifie une session. statement est une instruction AppleScript quelconque.

Exemples
Cet exemple utilise une instruction With Transaction pour sassurer quun
Les instructions With Transaction T5 - 54

Chapitre 10

Tome 5

enregistrement peut tre modifi par un seul utilisateur sans risquer dtre modifi, dans le mme temps, par un autre utilisateur.
tell application "Small DB" with transaction set olbName to Field "Name" set oldAddress to Field "Address" set newName to display dialog "SVP Saisissez un nouveau nom" default answer oldName set newAddress to display dialog "SVP Saisissez une nouvelle adresse" default answer oldAddress set Field "Name" to newName set Field "Address" to newAddress end transaction end tell

Les instructions Set obtiennent les valeurs courantes des champs Name et Address et invite lutilisateur les modifier. Encadrer ces instructions Set dans une instruction With Transaction informe lapplication que les autres utilisateurs ne doivent pas tre autoriss accder simultanment au mme enregistrement. Les instructions With Transaction fonctionnent seulement avec les applications qui les supportent explicitement. Certaines applications supportent uniquement les instructions With Transaction (comme celle cidessus) qui nont pas un objet session comme paramtre. Les autres applications supportent la fois les instructions With Transaction qui nont pas de paramtre session et les instructions With Transaction qui ont un paramtre session. Lexemple suivant montre comment spcifier une session une instruction With Transaction :
tell application "Super DB" set mySession to make session with data {user: "Bob", password: "Secret"} with transaction mySession .... end transaction end tell

T5 - 55

Les instructions With Transaction

Tome 6

Les gestionnaires

Chapitre 1

Tome 6

Introduction

Un gestionnaire est une srie dinstructions quAppleScript excute en rponse une commande ou un message derreur. Ce chapitre dcrit les gestionnaires dans les chapitres suivants : Les scripts-applications (T6 - p.7) dcrit les scripts-applications et leur cration. Les sections lintrieur de ce chapitre se rfrent aux scriptsapplications. propos des routines (T6 - p.8) dcrit les routines, lesquelles sont des gestionnaires pour les commandes dfinies par lutilisateur, et fournit un aperu gnral sur leur fonctionnement. Dfinir et appeler les routines (T6 - p.18) fournit une description dtaille sur le fonctionnement des routines, y compris des exemples montrant les paramtres tiquets et positionns. Les gestionnaires de commande (T6 - p.30) dcrit les routines crites pour grer des commandes dapplication ou systme. Porte des variables et des proprits de script (T6 - p.43) dcrit la porte, ou le rang, au-dessus duquel AppleScript reconnat un identificateur dclar lintrieur dun script. Pour des informations sur lcriture des gestionnaires derreur, voir Les instructions Try (T5 - p.31).

T6 - 6

Introduction

Chapitre 2

Tome 6

Les scripts-applications

Plusieurs sections de ce chapitre se rfrent aux scripts-applications. Un script-application est une application dont lunique fonction est dexcuter le script qui lui est associ. Vous pouvez excuter un script-application partir du Finder ou partir de nimporte quelle autre application. Vous pouvez utiliser la commande Enregistrer sous... de lditeur de scripts pour enregistrer un script comme script-application. Pour faire ceci, vous indiquerez Application pour le type, dans le menu droulant de la bote de dialogue denregistrement de lditeur de scripts. Par dfaut, un cran de dmarrage apparat avant lexcution du script. Lcran de dmarrage affiche la description du script crite dans la partie haute de la fentre de lditeur de scripts. Lutilisateur doit alors cliquer sur le bouton Run de lcran de dmarrage pour lancer le script. Si vous cochez la case Ne pas afficher lcran de dmarrage dans la bote de dialogue denregistrement, AppleScript sexcutera sans avoir affich cet cran. Vous pouvez aussi cocher la case Rester en arrire-plan de la bote de dialogue denregistrement de lditeur de scripts, pour indiquer que le scriptapplication doit rester en arrire-plan (Stay-open) aprs lexcution. Par dfaut, le script quitte une fois lexcution termine. Pour plus dinformations sur lditeur de scripts, voir la section AppleScript du Centre daide Mac OS. Si vous utilisez un diteur diffrent, voir avec sa documentation. Pour des informations apparentes, voir Les gestionnaires de scriptsapplications Stay-open (T6 - p.37).

Les scripts-applications

T6 - 7

Chapitre 3

Tome 6

propos des routines

Une routine est une srie dinstructions quAppleScript excute en rponse une commande dfinie par lutilisateur. Les routines sont similaires aux fonctions, aux mthodes et aux procdures dans dautres langages de programmation. Les routines sont utiles pour les scripts qui excutent les mmes actions plusieurs endroits dans leur script. Par exemple, si vous avez une srie dinstructions pour comparer des valeurs et que vous avez besoin dutiliser ces instructions plusieurs endroits dans un script, vous pouvez regrouper ces instructions dans une routine et lappeler depuis nimporte o dans le script. Votre script devient plus petit et il est plus facile de le maintenir jour. De plus, vous pouvez donner des noms parlants vos routines, ce qui amliorera la lisibilit et la comprhension de vos scripts. Les sections suivantes dcrivent comment crire et appeler les routines : Linstruction Return (T6 - p.8) Un exemple de routine (T6 - p.10) Les types de routines (T6 - p.11) Porte des appels de routine dans les instruction Tell (T6 - p.12) Vrifier la classe des paramtres de routines (T6 - p.13) Les routines rcursives (T6 - p.14) Enregistrer et charger des librairies de routines (T6 - p.15)

Linstruction Return
Une instruction Return permet darrter lexcution dun gestionnaire, avant que toutes ses instructions soient excutes, et de retourner une valeur. La plupart des exemples de ce guide utilisent des instructions Return.

T6 - 8

propos des routines

Chapitre 3

Tome 6

Une instruction Return quitte un gestionnaire et retourne une valeur. Quand AppleScript excute une instruction Return, il arrte lexcution du gestionnaire et reprend lexcution du script lendroit de la requte, utilisant comme valeur retourne, la valeur du gestionnaire.

Syntaxe return expression

o expression est une expression AppleScript. Quand AppleScript excute une instruction Return, il retourne la valeur de lexpression. Pour des informations apparentes, voir Les expressions (T4 - p.6).

Exemples

Pour retourner une valeur et sortir dune routine, incluez une instruction Return dans le corps de la routine. Par exemple, linstruction suivante retourne le nombre entier 2 :
return 2

Si vous incluez une instruction Return non suivie dune expression, AppleScript quitte la routine immdiatement et aucune valeur nest retourne.

Notes

Si une routine ne comporte pas dinstruction Return, AppleScript excute les instructions de la routine et, aprs avoir gr la dernire instruction, retourne la valeur de cette dernire instruction. Si la dernire instruction ne retourne pas de valeur, alors aucune valeur nest retourne. Quand AppleScript a fini dexcuter une routine (cest dire, lorsquil a excut une instruction Return ou la dernire instruction de la routine), il continue dexcuter le script immdiatement aprs linstruction dappel de la routine. En gnral, il est prfrable de ne mettre quune seule instruction Return et de la placer la fin de la routine ou du gestionnaire. Pour beaucoup de scripts,

propos des routines

T6 - 9

Chapitre 3

Tome 6

adopter cette ligne de conduite peut apporter les bnfices suivants : - le script est plus facile comprendre. - le script est plus facile dboguer. - vous pouvez placer du code propre un endroit et tre sr quil sera excut. Dans certains cas, toutefois, il peut tre plus sens dutiliser plusieurs instructions Return. Par exemple, la routine minimumValue, dans la section suivante, est un script tout simple qui utilise deux instructions Return.

Un exemple de routine
Voici une routine, appele minimumValue, qui retourne la valeur la plus petite de deux valeurs :
-- routine minimumValue : on minimumValue (x, y) if x < y then return x else return y end if end minimumValue -- pour appeler minimumValue : minimumValue (5, 105)

La premire ligne de la routine minimumValue spcifie les paramtres de la routine. Ceux-ci peuvent tre des paramtres positionns - comme x et y dans lexemple - o lordre des paramtres est important, ou des paramtres tiquets - comme ceux de la plupart des commandes AppleScript et dapplication dcrites dans Les dfinitions de commandes (T2 - p.29) - o lordre des paramtres autres que le paramtre direct importe peu. La routine minimumValue comporte deux instructions Return. Une instruction Return est une des manires, pour une routine, de retourner un rsultat. Quand AppleScript excute une instruction Return, il retourne la valeur (sil y en a une) indique dans linstruction et quitte immdiatement la routine. Si AppleScript excute une instruction Return sans une valeur, il quitte
T6 - 10 propos des routines

Chapitre 3

Tome 6

immdiatement la routine et ne retourne pas de valeur. Si une routine ne comporte pas dinstruction Return, AppleScript excute les instructions de la routine et, aprs avoir gr la dernire instruction, retourne la valeur de cette dernire instruction. Si cette dernire instruction ne retourne pas de valeur, alors la routine ne retourne pas de valeur. LorsquAppleScript a fini dexcuter une routine, il continue dexcuter le script immdiatement aprs linstruction dappel de la routine. Si lappel de la routine fait partie dune expression, AppleScript utilise la valeur retourne par la routine pour valuer lexpression. Par exemple, pour valuer lexpression suivante, AppleScript appelle la routine minimumValue puis value le reste de lexpression.
minimumValue (5, 105) + 50 -- rsultat : 55

Pour des informations apparentes, voir Utilisation des rsultats (T2 p.20) et Linstruction Return (T6 - p.8).

Les types de routines


Il existe deux types de routines : celles avec des paramtres tiquets et celles avec des paramtres positionns. Les paramtres tiquets sont identifis par leurs tiquettes et peuvent tre numrs dans nimporte quel ordre. Les routines avec des paramtres tiquets peuvent aussi avoir un paramtre direct. Le paramtre direct, sil existe, doit tre numr en premier. Les paramtres positionns doivent tre numrs dans un ordre particulier, ordre qui est dfini dans la dfinition de la routine. Par exemple, linstruction suivante appelle une routine avec des paramtres positionns :
minimumValue (150, 4000)

Linstruction suivante appelle une routine avec des paramtres tiquets. La routine searchFiles est dfinie dans Exemples de routines avec des paramtres tiquets (T6 - p.22). Le paramtre direct est une liste de noms de fichiers. La chane de caractres chercher, "LeChateau", est le paramtre
propos des routines T6 - 11

Chapitre 3

Tome 6

tiquet.
searchFiles of {"March Expenses", "April Expenses", "May Expenses", "June Expenses"} for "LeChateau"

La dfinition de la routine dtermine quel type de paramtres la routine requiert. Quand vous appelez une routine, vous devez numrer ses paramtres de la mme faon quils sont spcifis dans la dfinition de la routine. Vous pouvez aussi avoir des routines sans paramtres. Pour indiquer quune routine na pas de paramtres, vous devez mettre une paire de parenthses vides ( () ) aprs le nom de la routine, dans la dfinition de la routine et dans lappel de cette routine. Par exemple, le script suivant montre la dfinition et lappel de la routine helloWorld qui na pas de paramtres :
on helloWorld() display dialog "Hello World" end helloWorld()

Porte des appels de routine dans les instructions Tell


Si vous avez besoin dappeler une routine depuis une instruction Tell, vous devrez utiliser les termes rservs of me ou my pour indiquer que la routine fait partie du script (ce nest pas une commande qui doit tre envoye lobjet de linstruction Tell). Par exemple, lappel de la routine minimumValue, dans linstruction Tell suivante, est un chec, mme si le script contient la routine minimumValue dfinie dans Un exemple de routine (T6 - p.10), car AppleScript envoie la commande minimumValue AppleWorks. Si vous excutez ce script, vous obtiendrez un message derreur informant quAppleWorks ne comprend pas le message minimumValue.
tell front document of application "AppleWorks" minimumValue (12, 400) copy result as string to word 10 of text body end tell (* rsultat : une erreur, car AppleWorks ne comprend pas le message minimumValue. *)

T6 - 12

propos des routines

Chapitre 3

Tome 6

Si vous utilisez le terme of me dans lappel de la routine, comme dans linstruction Tell suivante, lappel de la routine sera un succs, car AppleScript sait maintenant que la routine fait partie du script.
tell front document of application "AppleWorks" minimumValue (12, 400) of me copy result as string to word 10 of text body end tell -- rsultat : lappel de la routine est un succs.

Vous pouvez utiliser le terme my avant lappel de la routine comme un synonyme du terme of me. Par exemple, les deux appels de routine suivants sont quivalents :
minimumValue (12, 400) of me my minimumValue (12, 400)

Vrifier la classe des paramtres de routines


Vous ne pouvez pas spcifier la classe dun paramtre dans une dfinition de routine. Vous pouvez, toutefois, obtenir la valeur de la proprit Class dun paramtre et vrifier si le paramtre appartient la bonne classe. Si ce nest pas le cas, vous devez pouvoir le contraindre avec loprateur As, ou dfaut, vous pouvez retourner une erreur. Pour plus dinformations sur les coercitions, voir Les coercitions (T1 - p.74). Pour plus dinformations sur la faon de retourner une erreur, voir Les instructions Try (T5 - p.31). Voici lexemple dune routine qui vrifie si son paramtre est un nombre rel ou un nombre entier. Si ce nest pas le cas, la routine utilise la commande Error (T5 - p.41)) pour signaler lerreur.
on areaOfCircle from radius -- sassurer que le paramtre est un nombre rel ou entier if class of radius is contained by {integer,real} return (radius * radius) * pi -- pi est prdfini par AppleScript else error "Le paramtre doit tre un nombre rel ou entier" end if end areaOfCircle -- pour appeler la routine : areaOfCircle from 7 -- rsultat : 153.9380400259

propos des routines

T6 - 13

Chapitre 3

Tome 6

Les routines rcursives


Une routine rcursive est une routine qui sappelle elle-mme. Les routines rcursives sont lgales dans AppleScript. Vous pouvez les utiliser pour excuter des actions rptitives. Par exemple, cette routine rcursive gnre une factorielle. La factorielle dun nombre est le produit des nombres entiers positifs infrieurs ou gaux ce nombre et correspond aux permutations de ce nombre dobjets. Par exemple, la factorielle de 4 est : 4! = 1 * 2 * 3 * 4 = 24.
on factorial(x) if x > 0 then return x * (factorial(x-1)) else return 1 end if end factorial -- pour appeler factorial : factorial(10) -- rsultat : 3628800

Dans lexemple prcdent, la routine factorial est appele une fois partir du niveau suprieur du script pour traiter la valeur 10. La routine sappelle alors rcursivement avec une valeur de x-1, ou 9. Chaque fois que la routine sappelle, elle provoque un autre appel rcursif, jusqu ce que la valeur de x soit gale 0. Lorsque la valeur de x est gale 0, AppleScript passe la clause Else et arrte lexcution de la premire partie de la routine, laquelle incluait lappel de la routine factorial. Quand vous appelez une routine rcursive, AppleScript reste en contact avec les variables et les instructions en instance dans la routine originale (partiellement excute) jusqu ce que la routine rcursive soit termine. Comme chaque appel utilise de la mmoire, le nombre maximum de routines en instance est limit la mmoire disponible. Comme rsultat, une routine rcursive peut gnrer une erreur avant que les appels rcursifs soient termins. De plus, une routine rcursive peut ne pas tre la solution la plus efficace pour un problme. Par exemple, la routine factorial, montre prcdemment, peut tre rcrite pour utiliser une instruction Repeat au lieu dun appel rcursif :
on factorial(x) set returnVal to 1

T6 - 14

propos des routines

Chapitre 3

Tome 6

if x > 1 then repeat with n from 2 to x set returnVal to returnVal * n end repeat end if return returnVal end factorial

Enregistrer et charger des librairies de routines


Jusqu maintenant, vous avez vu des exemples de dfinitions et dappels de routines dans le mme script. Cela est trs utile pour les fonctions qui sont rptes plusieurs fois dans un mme script. Mais vous pouvez aussi crire des routines pour des fonctions gnriques, comme des oprations numriques, qui sont utiles dans beaucoup de scripts. Pour faire une routine disponible dans nimporte quel script, enregistrez-la comme un script compil, puis alors, utilisez la commande Load Script du complment de pilotage fourni avec AppleScript, pour la rendre disponible dans un script particulier. Vous pouvez utiliser cette technique pour crer des librairies de routines utilisables dans beaucoup de scripts. Par exemple, le script suivant contient trois routines : areaOfCircle, qui retourne laire dun cercle bas sur son rayon ; factorial, qui retourne la factorielle dun nombre ; et min, qui retourne le plus petit nombre dune liste de nombres.
(* cette routine calcule laire dun cercle partir de son rayon. *) on areaOfCircle from radius -- sassurer que le paramtre est un nombre rel ou entier if class of radius is contained by {integer,real} return (radius * radius) * pi -- pi est prdfini par AppleScript else error "Le paramtre doit tre un nombre rel ou entier" end if end areaOfCircle -- cette routine retourne la factorielle dun nombre. on factorial(x) set returnVal to 1 if x > 1 then repeat with n from 2 to x set returnVal to returnVal * n

propos des routines

T6 - 15

Chapitre 3

Tome 6

end repeat end if return Val end factorial -- cette routine retourne le plus petit nombre dune liste on min(numberList) -- vrifie si la liste est valide. if class of numberList is not equal to list or numberList is equal to {} then return numberList set minNum to first item in numberList -- sil y a plus dun lment, trouver le plus petit. if length of numberList > 1 then repeat with curNum in numberList if curNum < minNum tehn set minNum to curNum end repeat end if return minNum as number end min

Pour enregistrer ce script comme un script compil, choisissez Enregistrez sous... dans le menu Fichier de lditeur de scripts. Puis choisissez Script compil dans le menu droulant. Alors, enregistrez le script comme un fichier appel Numeric Operations. Aprs avoir enregistr le script comme script compil, utilisez la commande Load Script pour rendre la routine que le script compil contient, disponible dans le script courant. Par exemple, la commande Load Script, dans le script suivant, assigne le script compil Numeric Operations la variable numberLib. Pour appeler la routine dans Numeric Operations, utilisez une instruction Tell. Linstruction Tell de lexemple appelle la routine factorial. Pour que ce script fonctionne correctement, vous devez avoir lemplacement spcifi, un script compil appel Numeric Operations.
set numberLib to (load script file "Disque Dur:Scripts:Numeric Operations") tell numberLib min ({77, 905, 50, 6, 3}) areaOfCircle from 12 factorial (10) end tell

-- rsultat : 3 -- rsultat : 78539816339745 -- rsultat : 3628800

La commande Load Script charge le script compil comme un script-objet. Les scripts-objets sont des objets dfinis par lutilisateur, traits comme des

T6 - 16

propos des routines

Chapitre 3

Tome 6

valeurs par AppleScript ; pour plus dinformations sur les scripts-objets, voir Les scripts-objets (T7 - p.6). Pour plus dinformations sur la commande Load Script, se rfrer au guide AppleScript Scripting Additions Guide disponible sur le site dApple <http://www.apple.com/applescript/>.

propos des routines

T6 - 17

Chapitre 4

Tome 6

Dfinir et appeler les routines

Une dfinition de routine contient un gabarit pour lappel de la routine des dclarations optionnelles de variables des instructions ; parmi celles-ci, il peut y avoir une instruction Return qui, lorsquelle est excute, retourne une valeur et quitte la routine Vous ne pouvez pas imbriquer des dfinitions de routine ; cest dire que vous ne pouvez pas dfinir une routine lintrieur dune dfinition de routine. La faon dappeler une routine est dtermine par la faon adopte pour dfinir la routine : Vous devrez fournir tous les paramtres spcifis dans la dfinition. Vous devrez fournir, soit des paramtres tiquets, soit des paramtres positionns, comme il est spcifi dans la dfinition. Les sections suivantes dcrivent comment dfinir et appeler les routines : Les routines avec des paramtres tiquets (T6 - p.18) Les routines avec des paramtres positionns (T6 - p.25)

Les routines avec des paramtres tiquets


Les sections suivantes dcrivent la syntaxe pour dfinir et appeler des routines avec des paramtres tiquets et fournissent des exemples utilisant cette syntaxe. Dfinir une routine avec des paramtres tiquets (T6 - p.19) Appeler une routine avec des paramtres tiquets (T6 - p.20)
T6 - 18 Dfinir et appeler les routines

Chapitre 4

Tome 6

Exemples de routines avec des paramtres tiquets (T6 - p.22)

Dfinir une routine avec des paramtres tiquets


La dfinition dune routine avec des paramtres tiquets, liste les tiquettes utiliser quand vous appelez la routine, et les instructions devant tre excutes lorsquelle est appele.

Syntaxe ( on | to ) subroutineName [ [ of | in ] directParameterVariable ] [ subroutineParamLabel paramVariable ]... [ given label:paramVariable [,label:paramVariable ]...] [ global variable [,variable ]...] [ local variable [,variable ]...] [ statement ]... end [ subroutineName ]

o subroutineName (un identificateur) est le nom de la routine. directParameterVariable (un identificateur) est une variable paramtre (appele aussi un paramtre formel) qui reprsente la valeur courante du paramtre direct. Vous utiliserez cet identificateur pour vous rfrer au paramtre direct dans le corps de la dfinition de la routine. Comme avec les commandes dapplication, le paramtre direct devra tre mis en premier.
Note

Si une routine comporte un paramtre direct, cette routine doit aussi inclure, soit le paramtre subroutineParamLabel, soit le paramtre given label:paramVariable. x subroutineParamLabel est une des tiquettes suivantes : about, above, against, apart from, around, aside from, at, below, beneath, beside, between, by, for, from, instead of, into, on, onto, out of, over, since, thru (ou through) et under. paramVariable (un identificateur) est une variable paramtre reprsentant la valeur courante du paramtre. Vous utiliserez cet identificateur pour vous

Dfinir et appeler les routines

T6 - 19

Chapitre 4

Tome 6

rfrer ce paramtre dans la dfinition de la routine. label est nimporte quelle tiquette. Cela peut tre nimporte quel identificateur AppleScript valide. Vous devrez utiliser ltiquette spciale given pour spcifier des paramtres dont les tiquettes ne sont pas parmi les tiquettes de subroutineParamLabel. variable est un identificateur, soit pour une variable globale, soit pour une variable locale, les deux pouvant tre utilises dans le gestionnaire. La porte dune variable locale se limite au gestionnaire. La porte dune variable globale peut stendre nimporte quelle partie du script, y compris dautres gestionnaires et scripts-objets. Pour des informations plus dtailles sur la porte des variables locales et globales, voir Porte des variables et des proprits de script (T6 - p.43). statement est une instruction AppleScript quelconque.

Notes

Pour plus dinformations, voir Exemples de routines avec des paramtres tiquets (T6 - p.22).

Appeler une routine avec des paramtres tiquets


Un appel de routine avec des paramtres tiquets, liste les paramtres autres que le paramtre direct, dans nimporte quel ordre, en utilisant les tiquettes dans la dfinition de la routine, pour identifier les valeurs des paramtres.

Syntaxe

subroutineName
[ [ of | in ] directParameter ] [ [ subroutineParamLabel parameterValue ] | [ with labelForTrueParam [, labelForTrueParam ]... [ ( and | or | , ) labelForTrueParam ] ] | [ without labelForFalseParam [, labelForFalseParam ]... [ ( and | or | , ) labelForFalseParam ] ] | [ given label:parameterValue [, label:parameterValue ]...]...

T6 - 20

Dfinir et appeler les routines

Chapitre 4

Tome 6

o subroutineName (un identificateur) est le nom de la routine. directParameter est le paramtre direct, sil y en a un dinclus dans la dfinition de la routine. Il peut tre nimporte quelle expression valide. Comme avec les commandes dapplication, le paramtre direct devra tre mis en premier sil est inclus. subroutineParamLabel est une des tiquettes suivantes utilises dans la dfinition de la routine : about, above, against, apart from, around, aside from, at, below, beneath, beside, between, by, for, from, instead of, into, on, onto, out of, over, since, thru (ou through) et under. parameterValue est la valeur dun paramtre, lequel peut tre nimporte quelle expression valide. labelForTrueParam est ltiquette dun paramtre boolen dont la valeur est true. Vous utiliserez cette forme avec les clauses With ; car la valeur true est sous-entendue avec le terme With, vous fournirez uniquement ltiquette, non la valeur. Pour un exemple de clause With, voir la section suivante Exemples de routines avec des paramtres tiquets (T6 - p.22). Si vous utilisez or ou une virgule au lieu de and avec le dernier paramtre dune clause With, AppleScript modifiera or ou la virgule en and lors de la compilation. labelForFalseParam est ltiquette dun paramtre boolen dont la valeur est false. Vous utiliserez cette forme avec les clauses Without ; car la valeur false est sous-entendue avec le terme Without, vous fournirez uniquement ltiquette, non la valeur. Pour un exemple de clause Without, voir la section suivante Exemples de routines avec des paramtres tiquets (T6 - p.22). Si vous utilisez or ou une virgule au lieu de and avec le dernier paramtre dune clause Without, AppleScript modifiera or ou la virgule en and lors de la compilation. label est une tiquette de paramtre quelconque utilise dans la dfinition de la routine, mais qui ne fait pas partie des tiquettes de subroutineParamLabel. Vous devrez utiliser ltiquette spciale given pour spcifier ces paramtres. Pour un exemple, voir Exemples de routines avec des paramtres tiquets (T6 - p.22).

Dfinir et appeler les routines

T6 - 21

Chapitre 4

Tome 6

Notes

Un appel de routine doit inclure tous les paramtres spcifis dans la dfinition de la routine. Il nest pas possible de spcifier des paramtres optionnels. Avec lexception du paramtre direct, lequel doit immdiatement suivre le nom de la routine, les paramtres tiquets peuvent apparatre dans nimporte quel ordre, y compris les paramtres lists dans les clauses Given, With et Without. De plus, vous pouvez inclure autant de clauses Given, With et Without que vous le souhaitez dans un appel de routine. Les exemples de la routine findNumbers dans Exemples de routines avec des paramtres tiquets (T6 - p.22) montrent comment une clause Given peut tre remplace par des clauses With et Without quivalentes.

Exemples de routines avec des paramtres tiquets


Cette section fournit des exemples de dfinitions de routine avec des paramtres tiquets et des exemples dappels de routine. La routine suivante retourne laire dun cercle base sur son rayon :
on areaOfCircle from radius -- sassurer que le paramtre est un nombre rel ou entier if class of radius is contained by {integer,real} return (radius * radius) * pi -- pi est prdfini par AppleScript else error "Le paramtre doit tre un nombre rel ou entier" end if end areaOfCircle -- pour appeler la routine : areaOfCircle from 7 -- rsultat : 153.9380400259

La routine suivante recherche une chane de caractres spcifique dans le texte dune liste de fichiers. Elle retourne une liste contenant le nom des fichiers qui contiennent la chane de caractres spcifiques. Pour que le gestionnaire searchFiles fonctionne, les fichiers spcifis doivent tre sur le disque de dmarrage.
to searchFiles of filesToSearch for theString -- filesToSearch : liste de fichiers AppleWorks. -- theString : la chane rechercher.
T6 - 22 Dfinir et appeler les routines

Chapitre 4

Tome 6

-- Note : la recherche se fait sur le disque de dmarrage. set hits to {} tell application "Finder" to set theDisk to (startup disk as string) tell application "AppleWorks" repeat with i from 1 to (count items of filesToSearch) set currentWindow to item i of filesToSearch set currentFile to theDisk & currentWindow open currentFile set docText to text body of front document if docText contains theString then -- rentre currentWindow dans la liste des lus set hits to hits & currentWindow end if close front document saving no end repeat return hits end tell -- application "AppleWorks" end searchFiles -- Pour appeler searchFiles : searchFiles of {"March Expenses", "April Expenses", "May Expenses", "June Expenses"} for "LeChateau" (* rsultat : {"March Expenses", "May Expenses"} (si ces fichiers contiennent la phrase "LeChateau") *)

La routine suivante utilise ltiquette spciale given pour dfinir un paramtre avec ltiquette arrondi.
to findNumbers of numberList above minLimit given arrondi:roundBoolean set resultList to {} repeat with i from 1 to (count items of numberList) set x to item i of numberList if roundBoolean = true then copy (x + 0.5) div 1 to x end if if x > minLimit then copy resultList & x to resultList end if end repeat return resultList end findNumbers

Dfinir et appeler les routines

T6 - 23

Chapitre 4

Tome 6

-- pour appeler findNumbers : -- o myList est {2, 5, 19.75, 99, 1} : set myList to {2, 5, 19.75, 99, 1} findNumbers of myList above 19 given arrondi:true -- rsultat : {20, 99} findNumbers of myList above 19 given arrondi:false -- rsultat : {19.75, 99} findNumbers of {5.1, 20.1, 20.5, 33.7} above 20 given arrondi:true -- rsultat : {21, 34} findNumbers of {5.1, 20.1, 20.5, 33.7} above 20 given arrondi:false -- rsultat : {20.1, 20.5, 33}

Une autre faon dappeler la routine findNumbers est dutiliser une clause With ou Without pour spcifier la valeur du paramtre arrondi. Une clause With ou Without spcifie une valeur de paramtre soit true, soit false (en fait, quand vous compilez les exemples prcdents, automatiquement, AppleScript convertira given arrondi:true en with arrondi et given arrondi:false en without arrondi). Ainsi les instructions suivantes sont quivalentes aux deux dernires instructions de lexemple prcdent, et gnre les mmes rsultats.
findNumbers of {5.1, 20.1, 20.5, 33.7} above 20 with arrondi -- rsultat : {21, 34} findNumbers of {5.1, 20.1, 20.5, 33.7} above 20 without arrondi -- rsultat : {20.1, 20.5, 33.7}

Les tiquettes des paramtres de la routine qui peuvent tre utilises sans ltiquette spciale given, permettent une grande flexibilit (dans le choix des termes) pour que les dfinitions des gestionnaires ressemblent du langage parl (anglais of course !). Par exemple, voici une routine qui ne comporte aucun paramtre, qui peut tre affiche comme une chane de caractres et qui laffiche dans une bote de dialogue :
on rock around the clock display dialog (clock as string) end rock

T6 - 24

Dfinir et appeler les routines

Chapitre 4

Tome 6

Linstruction
rock around the current date

affichera plus tard, dans le mme script, la date courante dans une bote de dialogue. Voici un autre exemple de lutilisation des tiquettes de paramtres de routine :
to check for yourNumber from bottom thru top if bottom yourNumber and yourNumber top then display dialog "Bravo ! vous avez fait un score." end if end check

Linstruction
check for 8 from 7 thru 10

affichera, plus tard, dans le mme script, la bote de dialogue spcifie.

Les routines avec des paramtres positionns


Les sections suivantes dcrivent la syntaxe pour dfinir et appeler des routines avec des paramtres positionns et fournissent des exemples qui utilisent cette syntaxe. Dfinir une routine avec des paramtres positionns (T6 - p.25) Appeler une routine avec des paramtres positionns (T6 - p.26) Exemples de routines avec des paramtres positionns (T6 - p.28)

Dfinir une routine avec des paramtres positionns


La dfinition dune routine avec des paramtres positionns, liste lordre dans lequel doivent tre numrs les paramtres, lorsque vous appelez la routine, et les instructions devant tre excutes quand la routine est appele.

Dfinir et appeler les routines

T6 - 25

Chapitre 4

Tome 6

Syntaxe (on | to) subroutineName ( [ paramVariable [, paramVariable ]...] ) [ global variable [,variable ]...] [ local variable [,variable ]...] [ statement ]... end [ subroutineName ]

o subRoutineName (un identificateur) est le nom de la routine. paramVariable (un identificateur) est une variable paramtre pour la valeur courante du paramtre. Vous utiliserez cet identificateur pour spcifier le paramtre dans la dfinition de la routine. variable est un identificateur, soit pour une variable globale, soit pour une variable locale, les deux pouvant tre utilises dans le gestionnaire. La porte dune variable locale se limite au gestionnaire. La porte dune variable globale peut stendre nimporte quelle partie du script, y compris dautres gestionnaires et scripts-objets. Pour des informations plus dtailles sur la porte des variables locales et globales, voir Porte des variables et des proprits de script (T6 - p.43). statement est une instruction AppleScript quelconque. Les parenthses qui encadrent la srie de paramtres positionns dans la syntaxe de la dfinition, sont une partie oblige du langage, elles sont obligatoires. Elles sont mises en gras pour les distinguer des autres parenthses qui, elles, ne servent qu regrouper des termes synonymes et elles ne font pas partie de la syntaxe. Les parenthses doivent tre mises mme si la dfinition de la routine ne comporte pas de paramtres. Pour plus dinformations, voir Exemples de routines avec des paramtres positionns (T6 - p.28).

Appeler une routine avec des paramtres positionns


Un appel de routine avec des paramtres positionns liste les paramtres dans le mme ordre que celui qui est spcifi dans la dfinition de la routine.

T6 - 26

Dfinir et appeler les routines

Chapitre 4

Tome 6

Syntaxe

subroutineName ( [ parameterValue [, parameterValue ]...] ) o subroutineName (un identificateur) est le nom de la routine. parameterValue est la valeur dun paramtre, lequel peut tre nimporte quelle expression valide. Sil y a deux ou plusieurs paramtres, ils doivent tre lists dans le mme ordre que celui dans lequel ils ont t spcifis dans la dfinition de la routine. Les parenthses qui encadrent la srie de paramtres positionns dans la syntaxe de la dfinition, sont une partie oblige du langage, elles sont obligatoires. Elles sont mises en gras pour les distinguer des autres parenthses qui, elles, ne servent qu regrouper des termes synonymes et elles ne font pas partie de la syntaxe. Les parenthses doivent tre mises mme si la dfinition de la routine ne comporte pas de paramtres.

Notes

Un appel de routine doit comporter tous les paramtres spcifis dans la dfinition de la routine. Il nest pas possible de spcifier des paramtres optionnels. Vous pouvez utiliser un appel de routine comme paramtre dun autre appel de routine. Voici un exemple :
minimumValue (2, maximumValue (x, y))

Le second paramtre de lappel de minimumValue est la valeur de lappel de maximumValue. La routine minimumValue est dfinie dans Exemples de routines avec des paramtres positionns (T6 - p.28). Un appel de routine avec des paramtres positionns peut comporter des paramtres non-littraux tant quils valuent un schma dfini par la routine. De mme, les proprits dun enregistrement passes une routine, ne doivent pas tre obligatoirement transmises dans le mme ordre quelles sont donnes dans la dclaration de la routine, tant que toutes les proprits requises par la dfinition du schma sont prsentes. Les exemples qui suivent, incluent des routines avec des paramtres positionns qui dfinissent un schma.

Dfinir et appeler les routines

T6 - 27

Chapitre 4

Tome 6

Exemples de routines avec des paramtres positionns


Voici une routine qui retourne la valeur minimale dune paire de valeurs.
on minimumValue(x, y) if x y then return x else return y end if end minimumValue -- pour appeler minimumValue minimumValue(21, 40000)

Vous pouvez aussi dfinir une routine dont les paramtres positionns dfinissent un schma valide lors de lappel de la routine. Par exemple, la routine suivante, utilise un seul paramtre dont le schma consiste en deux lments dune liste.
on point({x, y}) display dialog ("x = " & x & ", y = " & y) end point set myPoint to {3,8} point(myPoint)

Un schma de paramtre peut tre beaucoup plus complexe quune simple liste. Le gestionnaire du prochain exemple utilise deux nombres et un enregistrement dont les proprits incluent une liste de limites (bounds). Le gestionnaire affiche une bote de dialogue rsumant certaines des informations traites.
on hello(a, b, {length:l, bounds:{x, y, w, h}, name:n}) set q to a b set reponse to "Hello " & n & ", you are " & l & " inches tall and occupy position (" & x & "," & y & ")." display dialog reponse end hello set thing to {bounds:{1, 2, 4, 5}, name:"George", length:72} hello(2, 3, thing) -- rsultat : un dialogue affichant "Hello George, you are 72 -inches tall and occupy position (1,2)."

T6 - 28

Dfinir et appeler les routines

Chapitre 4

Tome 6

Comme vous pouvez le voir dans cet exemple, un appel de routine avec des paramtres schmatiss peut comporter des paramtres non-littraux, tant quils valuent un schma appropri. De mme, les proprits dun enregistrement, passes une routine avec des paramtres schmatiss, ne doivent pas obligatoirement tre transmises dans le mme ordre quelles sont donnes dans la dclaration de la routine, tant que toutes les proprits requises par la dfinition du schma sont prsentes.

Dfinir et appeler les routines

T6 - 29

Chapitre 5

Tome 6

Les gestionnaires de commande

Les gestionnaires de commande sont des gestionnaires pour les commandes dapplication ou systme. Ils sont identiques aux gestionnaires de routine, mais au lieu de dfinir des rponses aux commandes dfinies par lutilisateur, ils dfinissent des rponses aux commandes, comme Open, Print ou Move, envoyes aux applications. Elles peuvent aussi dfinir des rponses aux commandes envoyes aux lments pilotables de Mac OS, comme le gestionnaire service dimpression ou le tableau de bord Apparence. Les gestionnaires de commande sont dcrits dans les sections suivantes : Syntaxe des gestionnaires de commande (T6 - p.30) Les gestionnaires de commande pour les objets dapplication (T6 - p.32) Les gestionnaires de commande pour les scripts-applications (T6 - p.32) Pour des informations sur la rcursion dans les gestionnaires de commande, voir Les routines rcursives (T6 - p.14), sur la porte des variables et des proprits dans les gestionnaires, voir Porte des variables et des proprits de script (T6 - p.43).

Syntaxe des gestionnaires de commande


Une dfinition de gestionnaire de commande est une srie dinstructions excutes en rponse une commande dapplication. Les dfinitions de gestionnaire de commande nont pas besoin dinclure tous les paramtres possibles de la commande laquelle elles rpondent. Si un gestionnaire de commande reoit plus de paramtres que ce quil est spcifi dans la dfinition du gestionnaire de commande, il ignorera les paramtres superflus.

T6 - 30

Les gestionnaires de commande

Chapitre 5

Tome 6

Syntaxe

La syntaxe de la dfinition dun gestionnaire de commande est :


( on | to ) commandName [ [ of ] directParameterVariable ] [ given label:paramVariable [, label:paramVariable ]...] [ global variable [, variable ]...] [ local variable [, variable ]...] [ statement ]... end [ commandName ]

o commandName (un identificateur) est un nom de commande. directParameterVariable (un identificateur) est une variable paramtre pour la valeur courante du paramtre direct. Vous utiliserez cette variable paramtre pour vous rfrer au paramtre direct dans la dfinition du gestionnaire. Sil y en a un, le paramtre direct devra tre list immdiatement aprs le nom de la commande. Le terme of avant directParameterVariable est facultatif. label est ltiquette dun des paramtres de la commande grer. Ltiquette given est facultative. paramVariable (un identificateur) est une variable paramtre pour la valeur courante du paramtre. Vous utiliserez cet identificateur pour vous rfrer ce paramtre dans la dfinition du gestionnaire. variable est un identificateur soit pour une variable globale, soit pour une variable locale, les deux pouvant tre utilises dans le gestionnaire. La porte dune variable locale se limite au gestionnaire. La porte dune variable globale peut stendre nimporte quelle partie du script, y compris dautres gestionnaires et scripts-objets. Pour des informations plus dtailles sur la porte des variables locales et globales, voir Porte des variables et des proprits de script (T6 - p.43). statement est une instruction AppleScript quelconque.

Exemples

Pour des exemples de dfinitions de gestionnaire de commande, voir Les gestionnaires Run (T6 - p.33).

Les gestionnaires de commande

T6 - 31

Chapitre 5

Tome 6

Notes

Les instructions dans un gestionnaire de commande peuvent inclure une instruction Continue, laquelle passe la commande au gestionnaire de commande de lapplication par dfaut pendant cette commande. Cela permet de faire appel au comportement par dfaut dune application pendant une commande depuis un gestionnaire de commande. Pour plus dinformations, voir Linstruction Continue (T7 - p.20).

Les gestionnaires de commande pour les objets dapplication


Vous pouvez utiliser un gestionnaire de commande dans un script pour grer une commande qui est envoye un objet dapplication. Associer un script qui contient un gestionnaire de commande avec un objet dapplication qui reoit une commande est appel attacher un script un objet dapplication. Une application qui supporte cette possibilit est appele une application attachable, et elle peut autoriser lattachement dun script un bouton ou un menu, par exemple, pour grer des commandes envoyes aux objets de cette application. Les scripts qui sont attachs aux objets peuvent modifier la faon dont ces objets rpondent aux commandes particulires. Chaque application dtermine lequel de ses objets peuvent avoir des scripts attachs et comment vous attacherez les scripts. Pour dterminer si vous pouvez attacher un script des objets dapplication, voir la documentation de cette application.

Les gestionnaires de commande pour les scripts-applications


Un script-application est une application dont lunique fonction est dexcuter le script associ. Vous pouvez excuter un script-application depuis le Finder comme depuis nimporte quelle autre application. Pour savoir comment crer un script-application, voir Les scripts-applications (T6 - p.7). Chaque script-application est un gestionnaire de commande et peut rpondre au moins deux commandes : les commandes Run et Open. Un scriptapplication reoit une commande Run chaque fois quil est lanc, et une commande Open chaque fois quun autre icone est dpos (drop) sur son icone dans le Finder.

T6 - 32

Les gestionnaires de commande

Chapitre 5

Tome 6

Un script-application qui reste ouvert (Stay-open) peut recevoir et grer nimporte quelles commandes pour lesquelles il a un gestionnaire. Tous les applications Stay-open reoivent des commandes priodiques Idle, chaque fois quelles ne rpondent pas dautres Events. Elles reoivent aussi une commande Quit lorsque lutilisateur quitte lapplication. Les sections suivantes dcrivent les gestionnaires de commande courants : Les gestionnaires Run (T6 - p.33) Les gestionnaires Open (T6 - p.35) Les gestionnaires de scripts-applications Stay-open (T6 - p.37) Appeler un script-application depuis un script (T6 - p.40)

Les gestionnaires Run


Toutes les applications Mac OS peuvent rpondre une commande Run, mme si elles ne sont pas pilotables. Le Finder envoie une commande Run une application, chaque fois quune des actions suivantes survient, tant que cette application nest pas dj lance : - Lutilisateur double-clique sur licone de lapplication. - Lutilisateur slectionne licone de lapplication et choisit le menu Ouvrir du menu Fichier. - Licone de lapplication est dans le dossier Dossier Menu Pomme et lutilisateur la choisit dans le menu Pomme. - Licone de lapplication est dans le dossier Ouverture au dmarrage et lutilisateur redmarre lordinateur. Si lapplication est dj lance lorsquune de ces actions survient, lapplication est active mais aucune commande nest envoye pour a. Si lapplication nest pas lance, le Finder lance lapplication et lui envoie une commande Run. Lapplication rpond en excutant les procdures de dmarrage, comme, par exemple, le chargement des polices ou louverture dun document Sans-titre.

Les gestionnaires de commande

T6 - 33

Chapitre 5

Tome 6

Comme nimporte quelle autre application, un script-application, dcrit dans Les scripts-applications (T6 - p.7), reoit une commande Run si une des actions listes ci-dessus survient. Vous pouvez fournir un gestionnaire pour la commande Run de deux faons. Un gestionnaire Run implicite, correspond toutes les instructions situes au top niveau dun script, sauf les dclarations de proprits, les dfinitions de script-objet et dautres gestionnaires de commande. Un gestionnaire Run explicite est encadr par une instruction on...end ou on run...end, comme dautres gestionnaires. Par exemple, le script suivant consiste en une dclaration de proprits, une commande increment, une instruction Tell et un gestionnaire pour la commande increment. Pour que linstruction Tell fonctionne, vous devrez avoir un document AppleWorks nomm Count Log ouvert avant le lancement du script. Chaque fois que vous excuterez le script, la valeur de la proprit x augmente de 1 et laugmentation est enregistre dans le fichier Count Log (par remplacement du premier paragraphe par le compteur).
property x : 0 increment() tell document "Count Log" of application "AppleWorks" select first paragraph of text body set selection to "Count is now " & x & "." end tell on increment() set x to x + 1 display dialog "Count is now " & x & "." end increment

Le gestionnaire Run implicite pour ce script, consiste en linstruction increment() et linstruction Tell - cest dire, les instructions lextrieur du gestionnaire, mais pas les dclarations de proprits. Si vous enregistrez ce script en tant que script-application, et que vous double-cliquiez sur son icone, le Finder enverra une commande Run au script, et la commande Run fera appel aux deux instructions du gestionnaire Run implicite. Si vous rcrivez le script prcdent, en utilisant un gestionaire Run explicite, il aura le mme comportement :

T6 - 34

Les gestionnaires de commande

Chapitre 5

Tome 6

property x : 0 on run increment() tell document "Count Log" of application "AppleWorks" select first paragraph of text body set selection to "Count is now " & x & "." end tell end run on increment() set x to x + 1 display dialog "Count is now " & x & "." end increment

Un script ne peut pas inclure ensemble, un gestionnaire Run implicite et explicite. Si un script inclut ensemble, un gestionnaire Run explicite (on run...end) et au niveau suprieur des commandes qui constituent un gestionnaire Run implicite, AppleScript retournera une erreur lorsque vous essayerez de compiler le script - cest dire, lorsque vous essayerez de le lancer, de vrifier sa syntaxe ou de lenregistrer. Les gestionnaires Run, dans les exemples prcdents, rpondront de la mme faon une commande Run, que le script soit enregistr comme scriptapplication ou comme script compil. Si le script est enregistr comme un script compil, vous pouvez faire appel son gestionnaire Run en cliquant sur le bouton Run de lditeur de scripts. Vous pouvez aussi envoyer une commande Run un script-application depuis un autre script. Pour plus dinformations sur cette possibilit, voir Appeler un script-application depuis un script (T6 - p.40).

Les gestionnaires Open


Toutes les applications Mac OS peuvent rpondre une commande Open, mme si elles ne sont pas pilotables. Le Finder envoie une commande Open une application chaque fois que lutilisateur glisse licone dun fichier, dun dossier ou dun disque au dessus de licone de lapplication et relache le bouton de la souris. La commande Open est envoye mme si lapplication est dj active. Comme nimporte quelle autre application, un script-application reoit une

Les gestionnaires de commande

T6 - 35

Chapitre 5

Tome 6

commande Open chaque fois que lutilisateur glisse licone dun fichier, dun dossier ou dun disque au dessus de licone de lapplication. Si le script du script-application inclut un gestionnaire Open, les instructions lintrieur du gestionnaire sont excutes lorsque lapplication reoit la commande Open. Le gestionnaire Open rclame un unique paramtre ; lorsque le gestionnaire est appel, la valeur de ce paramtre est une liste de tous les lments dont les icones ont t dposs sur licone du script-application (chaque lment de la liste est un alias, vous pouvez le convertir en nom de chemin en utilisant as string). Par exemple, le gestionnaire Open suivant, tablit une liste des noms de chemin de tous les lments dposs sur licone du script-application et lenregistre dans un document AppleWorks :
on open names set listOfPaths to "" -- dmarrage avec une liste vide repeat with i in names -- rcupration du nom + ajout dun retour-chariot -- chaque nom est inscrit sur une ligne spar set iPath to (i as string) set listOf Paths to listOfPaths & iPath & return end repeat (* ouverture du document et remplacement du premier paragraphe par la liste *) tell application "AppleWorks" open file "Disque Dur:File List" tell front document select first paragraph of text body set selection to listOfPaths end tell close front document saving ask end tell return end open

Les fichiers, les dossiers ou les disques ne sont pas dplacs, copis ou affects de quelque faon que ce soit, lorsque leurs icones sont glisss ou dposs sur licone du script-application. Le Finder obtient juste une liste de leurs identits et envoie cette liste au script-application comme paramtre direct de lvnement Open. Bien sr, le script du script-application pourrait aisment demander au Finder de dplacer, de copier ou de ne pas manipuler les lments. Le script pourrait aussi demander lutilisateur de spcifier un nom de fichier pour enregistrer la liste de noms de chemin.

T6 - 36

Les gestionnaires de commande

Chapitre 5

Tome 6

Note

En raison dune limitation notoire du logiciel systme, vous ne pouvez dposer des icones sur licone dun script-application qui est stock sur un support amovible (disquette, CD-Rom, etc...). x Vous pouvez aussi lancer un gestionnaire Open en envoyant un scriptapplication la commande Open. Pour plus de dtails, voir Appeler un script-application depuis un script (T6 - p.40).

Les gestionnaires de script-application Stay-open


Par dfaut, un script-application qui reoit une commande Run ou Open gre cette commande et puis quitte. Cela lui permet dexcuter une simple tche et de sortir. Par contre, un script-application Stay-open (un script enregistr lorigine avec la case Rester en arrire-plan coche dans la bote denregistrement de lditeur de scripts) reste ouvert aprs avoir t lanc. Un script-application Stay-open peut tre utile pour une des raisons suivantes : - Si vous excutez frquemment un script, il excutera plus vite un scriptapplication Stay-open quun script-application devant tre lanc chaque appel. - Les scripts-applications Stay-open peuvent recevoir et grer dautres commandes en plus de Run et Open. Cela permet dutiliser un scriptapplication comme un script serveur qui, lorsquil tourne, fournit une srie de gestionnaires qui peuvent tre appels par nimporte quel autre script. - Les scripts-applications Stay-open peuvent excuter des actions priodiques, mme en arrire-plan, tant que le script-application est actif. Toutes les applications, tournant en arrire-plan, reoivent des vnements priodiques Idle. Si un script-application Stay-open inclut un gestionnaire pour lEvent Idle, il peut excuter des actions priodiques chaque fois quil ne rpond pas dautres Events. Si un script-application Stay-open inclut un gestionnaire pour lvnement Quit, il peut excuter certaines actions, comme demander laccord lutilisateur, avant de quitter.

Les gestionnaires de commande

T6 - 37

Chapitre 5

Tome 6

Les gestionnaires Idle

Si un script-application Stay-open inclut un gestionnaire Idle, AppleScript envoie les commandes Idle du script-application de faon priodique chaque fois quil ne rpond pas des Events supplmentaires. Les instructions du gestionnaire sont excutes priodiquement (par dfaut, toutes les 30 secondes). Par exemple, le gestionnaire suivant oblige un script-application Stay-open carillonner toutes les 30 secondes aprs avoir t lanc.
on idle beep end idle

Pour modifier la frquence, vous devrez retourner le nombre de secondes attendre comme rsultat du gestionnaire Idle. Par exemple, le script suivant sonne toutes les 5 secondes.
on idle beep return 5 end idle

Si un gestionnaire Idle retourne un nombre positif, ce nombre devient la frquence (en secondes) avec laquelle le gestionnaire est appel. Si le gestionnaire retourne une valeur non-numrique, la frquence est inchange. Noubliez pas que le rsultat retourn par un gestionnaire, est celui de la dernire instruction, mme sil ne comporte pas le terme return explicitement. Par exemple, ce gestionnaire est appel toutes les 15 minutes :
on idle set x to 30 beep set x to x * x -- le gestionnaire retourne 900. end idle

Pour tre sr de ne pas modifier la frquence du gestionnaire Idle, retournez la valeur 0 (return 0) la fin du gestionnaire.

T6 - 38

Les gestionnaires de commande

Chapitre 5

Tome 6

Les gestionnaires Quit

AppleScript envoie une commande Quit un script-application Stay-open, chaque fois que lutilisateur choisit le menu Quitter, ou quil appuie simultanment sur les touches cmd + Q lorsque le script-application est actif. Si le script inclut un gestionnaire Quit, les instructions du gestionnaire sont excutes avant que lapplication ne quitte. Un gestionnaire Quit peut tre utilis pour obtenir des proprits de script, pour indiquer une autre application dintervenir, pour afficher une bote de dialogue ou pour excuter nimporte quelle autre tche. Si le gestionnaire inclut une instruction continue quit , le comportement dchappement par dfaut du script-application est appel et il quitte. Si le gestionnaire Quit sachve avant quil ne rencontre une instruction continue quit, lapplication ne quitte pas. Par exemple, ce gestionnaire demande laccord lutilisateur avant dautoriser une application quitter :
on quit display dialog Quitter rellement ? buttons {"Non", "Quitter"} default button "Quitter" if button returned of the result is "Quitter" then continue quit end if (* sans linstruction continue quit, le script-application ne quitte pas. *) end quit

ATTENTION

Si AppleScript ne rencontre pas dinstruction continue quit pendant quil excute un gestionnaire on quit, il peut tre impossible de quitter lapplication. Par exemple, si le gestionnaire obtient une erreur avant linstruction continue quit, essayer de quitter lapplication produit juste une alerte derreur. En dernier recours, utilisez la commande Quit durgence (appuyez simultanment sur les touches alt + cmd + esc ou maintenez appuyer la touche alt et choisissez le menu Quitter du menu Fichier). Cette procdure enregistre les changements dans les proprits du script et quitte immdiatement, en contournant le gestionnaire Quit. v

Les gestionnaires de commande

T6 - 39

Chapitre 5

Tome 6

Interrompre des gestionnaires de script-application

Un script-application Stay-open est capable de grer des commandes supplmentaires mme sil est dj en train dexcuter un gestionnaire, en rponse une commande prcdente. Cela signifie que lexcution dun gestionnaire peut tre interrompue pendant quun autre gestionnaire est excut. Comme les scripts-applications ne sont pas multi-tches, lexcution du premier gestionnaire est mise en attente, le temps que le second se termine. Cette mthode de gestion est appele dernier entr, premier sorti (last-in, first-out). Cela peut occasionner des problmes, si ensemble, plusieurs gestionnaires modifient la mme proprit de script ou la mme variable globale, ou si ensemble, ils essaient de modifier une donne dune application. Par exemple, supposons quun script-application, nomm increment, soit excut, provoquant laugmentation incrmentielle de la proprit p pendant plusieurs minutes :
property p : 0 on close set temp to p set p to 0 return temp end close set p to 0 repeat 1000000 times set p to p + 1 end repeat

Si ce script-application reoit une commande Close pendant quil sexcute :


tell application "Increment" to close

AppleScript ne peut pas, automatiquement, traiter avec de telles interruptions.

Appeler un script-application depuis un script


Nimporte quel script peut envoyer des commandes un script-application, comme il le ferait avec une autre application. Toutefois, les scriptsapplications, comme les autres applications, rpondent, parfois, la
T6 - 40 Les gestionnaires de commande

Chapitre 5

Tome 6

commande Run dune manire inattendue. Comme il est expliqu dans la dfinition de la commande Launch (T2 - p.45), AppleScript envoie une commande Run implicite, chaque fois quil commence excuter une instruction Tell dont la cible est une application non ouverte. Cela peut crer des problmes avec les scripts-applications qui ne sont pas Stay-open. Par exemple, un script, comme celui ci-dessous, ne sexcutera pas correctement si lapplication cible est un script-application qui nest pas Stay-open :
tell application "NonStayOpen" to run

Au lieu de cel, linstruction Tell lance le script-application et lui envoie une commande Run implicite. Lapplication gre cette commande Run. AppleScript obtient alors la commande Run explicite dans lappel du script et essaie denvoyer un autre Run Event au script-application. Malheureusement, lapplication a dj gr son premier Event et quitte sans avoir rpondu la seconde commande Run. Lappel de script attend en vain jusqu ce que le dlai soit coul (1 minute dattente par dfaut, pour rallonger ou rduire ce dlai dattente, voir Les instructions With Timeout (T5 - p.51), alors il reoit une erreur. Le coupable est la commande Run implicite envoye par linstruction Tell lorsquelle a lanc lapplication. Pour lancer une application non Stay-open et excuter son script, utilisez une commande Launch suivie par une commande Run, comme ceci :
launch application "NonStayOpen" run application "NonStayOpen"

La commande Launch lance le script-application sans lui envoyer une commande Run implicite. Lorsque la commande Run est envoye au scriptapplication, il traite lEvent, renvoie une rponse si ncessaire, et quitte. De mme, pour lancer une application non Stay-open et excuter son gestionnaire Open, utilisez une commande Launch suivie par une commande Open, comme ceci :
tell application "NonStayOpen" launch open {alias "Disque Dur:MonFichier",
Les gestionnaires de commande T6 - 41

Chapitre 5

Tome 6

alias "Disque Dur:MonAutreFichier"} end tell

Par exemple, si le gestionnaire Open on open names, dans Les gestionnaires Open (T6 - p.35), avait t enregistr en tant que scriptapplication appel NonStayOpen, le script de lexemple prcdent obligerait ce gestionnaire crer une liste des deux chemins de fichiers spcifis. Pour plus dinformations sur la cration de scripts-applications, voir Les scripts-applications (T6 - p.7).

T6 - 42

Les gestionnaires de commande

Chapitre 6

Tome 6

Porte des variables et des proprits de script

Avant de lire ce chapitre, vous devrez connatre les informations contenues dans Les gestionnaires Run (T6 - p.33). La dclaration dun identificateur de variable ou de proprit, est la premire occurence valide de lidentificateur dans un script. La forme et lemplacement de la dclaration dtermine la faon dont AppleScript traite lidentificateur dans ce script. La porte dune dclaration de variable ou de proprit, est le niveau audessus duquel AppleScript reconnat lidentificateur dclar lintrieur dun script. La porte dune dclaration de proprit stend au script tout entier ou au script-objet dans lequel elle est dfinie. Il est souvent pratique de limiter la porte dun identificateur particulier un unique gestionnaire - cest dire, traiter lidentificateur comme une variable locale lintrieur du gestionnaire. Aprs quune variable locale ait rempli sa mission, son identificateur na plus aucune valeur associe avec lui, et il peut tre utilis de nouveau pour une autre mission, nimporte o dans le script. Si vous voulez que la valeur dune variable de script persiste aprs lexcution dun script, ou si vous souhaitez utiliser le mme identificateur diffrents endroits dans un script, vous pouvez le dclarer soit comme une proprit de script, soit comme une variable globale. AppleScript garde le chemin des proprits et des variables globales tout au long des multiples gestionnaires et scripts-objets, lintrieur dun seul script. Les sections suivantes prsentent et dtaillent la porte des variables et des proprits dAppleScript : Dclarer des variables et des proprits (T6 - p.44) Porte des variables et des proprits dclares au top niveau dun script (T6 - p.45) Porte des proprits et des variables dclares dans un script-objet (T6 - p.49)
Porte des variables et des proprits de script T6 - 43

Chapitre 6

Tome 6

Porte des variables dclares dans un gestionnaire (T6 - p.53)

Dclarer des variables et des proprits


Les exemples suivants prsentent les quatres formes basiques pour dclarer des variables et des proprits dans AppleScript :
property x : 3

Cette instruction dclare une proprit et rgle sa valeur initiale. La porte dune dclaration de proprit peut stendre soit un script-objet, soit tout un script. La valeur, rgle par une dclaration de proprit, nest pas initialise chaque fois que le script est excut ; au lieu de cela, la valeur persiste jusqu ce que le script soit recompil.
global x

Cette dclaration globale est identique une dclaration de proprit, except quelle ne rgle pas la valeur initiale. La porte dune dclaration de variable globale peut tre limite des gestionnaires spcifiques ou des scripts-objets, ou peut stendre tout un script. Comme la valeur dune proprit, la valeur dune variable globale nest pas initialise chaque fois que le script est excut. Toutefois, la valeur dune variable globale doit tre rgle par dautres instructions dans le script.
set x to 3

Vous pouvez utiliser la commande Set ou Copy pour rgler la valeur de nimporte quelle proprit ou variable. Si la variable na pas t dclare prcdemment, la commande Set ou Copy la dclare comme variable locale.
local x

Cette instruction dclare explicitement une variable locale. Comme une dclaration de variable globale, une dclaration locale explicite ne rgle pas la valeur initiale.

T6 - 44

Porte des variables et des proprits de script

Chapitre 6

Tome 6

Porte des variables et des proprits dclares au top niveau dun script
Le tableau suivant rsume la porte des proprits et des variables dclares au top niveau dun script. Des exemples simples, utilisant chaque forme de reprsentation, sont donns par la suite.
Porte des proprits et des variables dclares au top niveau dun script

Forme de la dclaration property x : 3

Porte de la dclaration

O AppleScript cherche x

partout dans le script

global x

au top niveau du script

set x to 3

local x

uniquement lintrieur dun gestionnaire Run

uniquement lintrieur dun gestionnaire Run

La porte dune dclaration de proprit au top niveau dun script stend toutes les instructions subsquentes partout dans le script. Voici un exemple :
property currentCount : 0 increment() on increment() set currentCount to currentCount + 1 display dialog "Count is now " & currentCount & "." end increment

Lorsquil rencontre lidentificateur currentCount dans ce script, quel que soit le niveau, AppleScript lassocie avec la proprit currentCount, dclare au top niveau du script. La valeur dune proprit persiste aprs que le script, dans lequel la proprit est dfinie, soit excut. Par consquent, la valeur de currentCount dans lexemple prcdent est gale 0 lorsque le script est excut la premire fois, 1 la fois suivante, et ainsi de suite. La valeur de la proprit courante est
Porte des variables et des proprits de script T6 - 45

Chapitre 6

Tome 6

enregistre avec le script et elle nest pas initialise 0 tant que le script nest pas recompil (modifi, puis excut de nouveau ou enregistr ou vrifi). De mme, la porte dune dclaration de variable globale au top niveau dun script, stend toutes les instructions subsquentes, partout dans le script. Lexemple suivant accomplit la mme action que le script prcdent, except quil utilise une variable globale au lieu dune proprit, pour garder la trace de currentCount. Notez que lors de la premire excution du script, linstruction
set currentCount to currentCount + 1

gnre une erreur, car la variable currentCount na pas encore t initialise. Lorsque lerreur survient, le bloc on error initialise currentCount.
global currentCount increment() on increment() try set currentCount to currentCount + 1 display dialog "Count is now " & currentCount & "." on error set currentCount to 1 display dialog "Count is now 1." end try end increment

Lorsquil rencontre lidentificateur currentCount dans ce script, quel que soit le niveau, AppleScript lassocie avec la variable currentCount, dclare comme globale au top niveau du script. Toutefois, comme une dclaration de variable globale ne rgle pas la valeur initiale dune proprit, le script doit utiliser une instruction Try, pour dterminer si la valeur a t prcdemment rgle. Par consquent, si vous voulez que la valeur associe avec un identificateur persiste, il est souvent plus facile de le dclarer comme une proprit ,ainsi vous pouvez dclarer sa valeur initiale en mme temps. Si vous ne voulez pas que la valeur associe un identificateur persiste aprs lexcution dun script, mais vous voulez pouvoir utiliser le mme identificateur partout dans le script, dclarez une variable globale et utilisez la commande Set pour rgler sa valeur, chaque fois que le script est excut. Voici un exemple :
global currentCount
T6 - 46 Porte des variables et des proprits de script

Chapitre 6

Tome 6

set currentCount to 0 on increment() set currentCount to currentCount + 1 end increment increment() -- rsultat : 1 increment() -- rsultat : 2

Chaque fois que le gestionnaire on increment() est appel dans le script, la variable globale currentCount est augmente de 1. Toutefois, lorsque vous excutez de nouveau le script, currentCount est initialise 1. En labsence de dclaration de variable globale au top niveau du script, la porte dune dclaration de variable, utilisant la commande Set au top niveau du script, est normalement restreinte au gestionnaire Run pour ce script. Par exemple, ce script dclare deux variables spares currentCount :
set currentCount to 10 on increment() set currentCount to 5 end increment increment() -- rsultat : 5 currentCount -- rsultat : 10

La porte de la premire dclaration de variable currentCount, au top niveau du script, est limite au gestionnaire Run du script. Comme ce script na pas de gestionnaire Run explicite, les instructions au top niveau font partie de son gestionnaire Run implicite, comme il est dcrit dans Les gestionnaires Run (T6 - p.33). La porte de la seconde dclaration de currentCount, lintrieur du gestionnaire on increment , est limite ce gestionnaire. AppleScript garde individuellement la trace de chaque variable. Pour associer une variable, dans un gestionnaire ou un script-objet, avec la mme variable dclare au top niveau dun script avec la commande Set, vous pouvez utiliser une dclaration globale dans le gestionnaire, comme dans lexemple suivant :
set currentCount to 0 on increment() global currentCount set currentCount to currentCount + 1 end increment

Porte des variables et des proprits de script

T6 - 47

Chapitre 6

Tome 6

increment() -- rsultat : 1 currentCount -- rsultat : 1

Dans ce cas, lorsquAppleScript rencontre la variable currentCount dans le gestionnaire on increment, il cherche une prcdente mention de currentCount, pas seulement dans le gestionnaire, mais aussi au top niveau du script. Toutefois, les rfrences currentCount dans nimporte quel autre gestionnaire du script, sil y en avait, sont locales ce gestionnaire jusqu ce quun gestionnaire dclare explicitement currentCount comme variable globale. Ce type de dclaration globale est dtaill dans Porte des variables dclares dans un gestionnaire (T6 - p.53). Pour restreindre le contexte dune variable au gestionnaire Run dun script sans quil soit tenu compte des dclarations globales subsquentes, vous devez la dclarer explicitement comme une variable locale, comme dans lexemple suivant :
local currentCount set currentCount to 10 on increment() global currentCount set currentCount to currentCount + 2 end increment increment() -- erreur : "la variable currentCount nest pas dfinie"

Comme la variable currentCount, dans cet exemple, est dclare comme locale au script, et de l son gestionnaire Run implicite, tous les essais, par la suite, pour utiliser la mme variable aboutissent une erreur. Note Si vous dclarez une variable avec la commande Set au top niveau dun script ou dun script-objet, puis que vous dclarez ce mme identificateur comme une proprit, la dclaration faite avec la commande Set prvaut sur la dclaration de proprit. Par exemple, le script
set x to 10 property x : 5 return x

retourne 10 et non 5. Cela survient car AppleScript value toujours les dclarations de proprit, au top niveau dun script, avant les dclarations de commande Set. x
T6 - 48 Porte des variables et des proprits de script

Chapitre 6

Tome 6

Porte des proprits et des variables dclares dans un script-objet


Vous devrez avoir lu les informations contenues dans Les scripts-objets, (T7 - p.6), avant de lire cette section. Le tableau suivant rsume la porte des proprits et des variables dclares au top niveau dun script-objet. Des exemples simples, utilisant chaque forme de reprsentation, sont donns par la suite.
Porte des proprits et des variables dclares au top niveau dun script-objet

Forme de la dclaration property x : 3

Porte de la dclaration

O AppleScript cherche x
au top niveau du script-objet au top niveau du script

partout dans le script-objet

global x

set x to 3

local x

uniquement lintrieur du gestionnaire Run du script-objet

uniquement lintrieur du gestionnaire Run du script-objet

La porte dune dclaration de proprit au top niveau dun script-objet stend toutes les instructions subsquentes dans cet script-objet. Voici un exemple :
script Joe property currentCount : 0 on increment() set currentCount to currentCount + 1 return currentCount end increment end script tell Joe to increment() -- rsultat : 1 tell Joe to increment() -- rsultat : 2

Lorsquil rencontre lidentificateur currentCount nimporte quel niveau du


Porte des variables et des proprits de script T6 - 49

Chapitre 6

Tome 6

script-objet Joe, AppleScript lassocie avec le mme identificateur dclar au top niveau du script-objet. La valeur de la proprit currentCount persiste jusqu ce que vous rinitialisiez le script-objet en excutant de nouveau le script. La porte dune dclaration de proprit au top niveau dun script-objet ne stend pas au del du script-objet. Par consquent, il est possible dutiliser le mme identificateur dans diffrentes parties dun script pour se rfrer diffrentes proprits, comme cet exemple le montre :
property currentCount : 0 script Joe property currentCount : 0 on increment() set currentCount to currentCount + 1 return currentCount end increment end script tell Joe to increment() -- rsultat : 1 tell Joe to increment() -- rsultat : 2 currentCount -- rsultat : 0

AppleScript garde la trace de la proprit currentCount dclare au top niveau du script, sparment de la proprit currentCount dclare dans le script-objet Joe. Par consquent, la proprit currentCount dclare au top niveau du script Joe, est augmente de 1 chaque fois que Joe est appel, mais la proprit currentCount dclare au top niveau du script nest pas affecte. Comme la porte dune dclaration de proprit, la porte dune dclaration de variable globale au top niveau dun script-objet, stend toutes les instructions subsquentes dans ce script-objet. Toutefois, comme le montre le prochain exemple, AppleScript associe aussi une variable globale avec la mme variable dclare au top niveau du script entier.
set currentCount to 0 script Joe global currentCount on increment() set currentCount to currentCount + 1 return currentCount end increment end script

T6 - 50

Porte des variables et des proprits de script

Chapitre 6

Tome 6

tell Joe to increment() -- rsultat : 1 tell Joe to increment() -- rsultat : 2

Lexemple prcdent rgle en premier la valeur de currentCount au top niveau du script. LorsquAppleScript rencontre la variable currentCount dans le gestionnaire on increment, il cherche dabord une occurence plus rcente dans le gestionnaire, puis au top niveau du script Joe. LorsquAppleScript rencontre la dclaration globale pour currentCount au top niveau du script-objet Joe, il continue en regardant au top niveau du script jusqu ce quil trouve la dclaration originale pour currentCount. Cela ne peut pas tre fait avec une proprit dun script-objet, car AppleScript ne regarde pas plus loin que le top niveau dun script-objet pour ces proprits de script. Comme la valeur dune proprit de script-objet, la valeur dune variable globale de script-objet persiste aprs que le script-objet ait tourn, mais pas aprs que le script lui-mme soit excut. Par consquent, appeler de faon rptitive le script Joe, dans lexemple prcdent, incrmente la valeur de currentCount, mais excuter de nouveau dans son ensemble le script, rgle currentCount 0 avant de lincrmenter. Lexemple suivant montre lutilisation dune dclaration de variable globale dans un script-objet, pour associer une variable globale avec une proprit dclare au top niveau dun script.
property currentCount : 0 script Donna property currentCount : 20 script Joe global currentCount on increment() set currentCount to currentCount + 1 return currentCount end increment end script tell Joe to increment() end script run Donna -run Donna -currentCount currentCount rsultat : 1 rsultat : 2 -- rsultat : 2 of Donna -- rsultat : 20

Ce script dclare sparment deux proprits currentCount : une au top niveau du script et lautre au top niveau du script-objet Donna. Comme le
Porte des variables et des proprits de script T6 - 51

Chapitre 6

Tome 6

script Joe dclare la variable globale currentCount, AppleScript recherche currentCount au top niveau du script, par consquent, il traite la variable currentCount de Joe et celle au top niveau du script comme une mme variable. Si script-objet Joe, dans lexemple prcdent, ne dclare pas currentCount comme une variable globale, AppleScript traite la variable currentCount de Joe et celle au top niveau du script-objet Donna comme une mme variable. Cela amne des rsultats diffrents, comme dans lexemple suivant :
property currentCount : 0 script Donna property currentCount : 20 script Joe on increment() set currentCount to currentCount + 1 return currentCount end increment end script tell Joe to increment() end script run Donna -run Donna -currentCount currentCount rsultat : 21 rsultat : 22 -- rsultat : 0 of Donna -- rsultat : 22

le

La porte dune dclaration de variable utilisant la commande Set au top niveau dun script-objet est limite au gestionnaire Run :
script Joe set currentCount to 10 on increment() global currentCount set currentCount to currentCount + 2 end increment return currentCount end script tell Joe to increment() -- erreur : "La variable currentCount nest pas dfinie." run Joe -- rsultat : 10

Par contre, AppleScript traite la variable currentCount dclare au top


T6 - 52 Porte des variables et des proprits de script

Chapitre 6

Tome 6

niveau du script-objet Joe, dans lexemple prcdent, comme locale au gestionnaire Run de lobjet de script, linverse de la manire dont il traite une dclaration au top niveau dun script. Toute tentative subsquente dutiliser la mme variable comme globale retourne une erreur. De mme, la porte dune dclaration explicite de variable locale, au top niveau dun script-objet, est limite au gestionnaire Run du script-objet, mme si le mme identificateur a t dclar comme une proprit un niveau plus lev dans le script, comme dans lexemple suivant :
property currentCount : 0 script Joe local currentCount set currentCount to 5 on increment() set currentCount to currentCount + 1 end increment end script run Joe -- rsultat : 5 tell Joe to increment() -- rsultat : 1

Porte des variables dclares dans un gestionnaire


Vous ne pouvez pas dclarer une proprit dans un gestionnaire, bien que vous puissiez vous rfrer une proprit dclare au top niveau du script ou du script-objet auquel le gestionnaire appartient. Le tableau suivant rsume la porte des variables dclares dans un gestionnaire. Des exemples simples, utilisant chaque forme de reprsentation, sont donns par la suite.
Porte des dclarations de variable dans un gestionnaire

Forme de la dclaration global x set x to 3 local x

Porte de la dclaration

O AppleScript cherche x
au top niveau du script

uniquement lintrieur dun gestionnaire

uniquement lintrieur dun gestionnaire

La porte dune variable globale dclare dans un gestionnaire est limite ce


Porte des variables et des proprits de script T6 - 53

Chapitre 6

Tome 6

gestionnaire, bien quAppleScript regarde au del du gestionnaire lorsquil essaie de localiser une occurence plus rcente de la mme variable. Voici un exemple :
set currentCount to 10 on increment() global currentCount set currentCount to currentCount + 2 end increment increment() -- rsultat : 12 currentCount -- rsultat : 12

LorsquAppleScript rencontre la variable currentCount dans le gestionnaire on increment, il ne restreint pas sa recherche dune occurence plus rcente ce gestionnaire, mais il continue de regarder jusqu ce quil trouve la dclaration au top niveau du script. Toutefois, les rfrences currentCount, dans nimporte quel gestionnaire du script, sont locales ce gestionnaire, moins que le gestionnaire dclare explicitement aussi currentCount comme une variable globale. La porte dune dclaration de variable utilisant la commande Set lintrieur dun gestionnaire est limite ce gestionnaire :
script Henry set currentCount to 10 on increment() set currentCount to 5 end increment return currentCount end script tell Henry to increment() -- rsultat : 5 run Henry -- rsultat : 10

La porte de la premire dclaration de variable currentCount, au top niveau du script-objet Henry, est limite au gestionnaire Run de ce scriptobjet. La porte de la seconde dclaration currentCount, dans le gestionnaire on increment , est limite ce gestionnaire. AppleScript garde individuellement la trace de chaque variable. La porte dune dclaration de variable locale, dans un gestionnaire, est limite ce gestionnaire, mme si le mme identificateur a t dclar comme une proprit un niveau plus lev dans le script, comme dans lexemple

T6 - 54

Porte des variables et des proprits de script

Chapitre 6

Tome 6

suivant :
property currentCount : 10 on increment() local currentCount set currentCount to 5 end increment increment() -- rsultat : 5 currentCount -- rsultat : 10

Porte des variables et des proprits de script

T6 - 55

Tome 7

Les scripts-objets

Chapitre 1

Tome 7

Introduction

Les scripts-objets sont des objets que vous dfinissez et utilisez dans les scripts. Comme les objets dapplication et systme dcrits dans les autres tomes, les scripts-objets ont des proprits et peuvent rpondre aux commandes. Les scripts-objets sont dfinis dans les scripts, la diffrence des objets dapplication ou systme. Les scripts-objets dAppleScript, ont des capacits communes avec les langages de programmation orients-objet. Par exemple, vous pouvez dfinir des groupes de scripts-objets qui partagent des proprits et des gestionnaires, et vous pouvez tendre ou modifier le comportement dun gestionnaire dans un script-objet, lorsque vous lappelez depuis un autre script-objet. Ce guide dcrit les scripts-objets dans les chapitres suivants : propos des scripts-objets (T7 - p.7) fournit un bref aperu des scriptsobjets. Dfinir un script-objet (T7 - p.9) donne la syntaxe de la dfinition dun script-objet. Envoyer des commandes aux scripts-objets (T7 - p.11) dcrit comment utiliser les instructions Tell pour envoyer des commandes aux scriptsobjets. Initialiser les scripts-objets (T7 - p.13) dcrit comment AppleScript cre un script-objet avec les proprits et les gestionnaires que vous avez dfinis. Hritage et dlgation (T7 - p.15) dcrit comment partager les dfinitions de proprits et de gestionnaires entre des scripts-objets, sans avoir rpter la dfinition partage. Utiliser les commandes Copy et Set avec des scripts-objets (T7 - p.27) montre laction diffrente des commandes Copy et Set sur les scripts-objets.

Introduction

T7 - 6

Chapitre 2

Tome 7

propos des scripts-objets


Un script-objet est un objet dfini par lutilisateur, qui combine des donnes (sous forme de proprits) et des actions potentielles (sous forme de gestionnaires). Une dfinition de script-objet est une instruction compose pouvant contenir des collections de proprits, de gestionnaires et autres instructions AppleScript. Voici un exemple de dfinition de script-objet :
script John property howManyTimes : 0 to sayHello to someone set howManyTimes to howManyTimes + 1 return "Hello " & someone end sayHello end script

Il dfinit un script-objet pouvant grer la commande sayHello. Il assigne le script-objet la variable John. La dfinition inclut un gestionnaire pour la commande sayHello. Il inclut aussi une proprit, appele howManyTimes, indiquant le nombre dappels de la commande sayHello. Un gestionnaire lintrieur dune dfinition de script-objet, suit les mmes rgles de syntaxe quune dfinition de routine. Mais de plus, vous pouvez grouper dans une dfinition de script-objet, un gestionnaire avec des proprits dont les valeurs sont lies aux actions du gestionnaire comme dans lexemple suivant :
script exemple property maVariable : {0,0} on changeMaVariable(n) set item 2 of maVariable to n end changeMaVariable end script tell exemple to changeMaVariable(2) maVariable of exemple -- rsultat : {0,2}

Dans cet exemple, les valeurs de la proprit maVariable sont lies aux rsultats du gestionnaire changeMaVariable.
T7 - 7 propos des scripts-objets

Chapitre 2

Tome 7

Aprs avoir dfini un script-objet, vous linitialiserez en excutant le script contenant la dfinition de script-objet. Vous pouvez alors utiliser une instruction Tell, pour envoyer les commandes au script-objet. Par exemple, linstruction suivante envoie la commande sayHello, au script-objet John dfini ci-dessus :
tell John to sayHello to "Herb" -- rsultat : "Hello Herb".

Note des traducteurs francophones Vous pouvez galement utiliser les syntaxes suivantes pour envoyer les commandes au script-objet :
Johns (sayHello to "Sophie") -- rsultat : "Hello Sophie" (sayHello to "Paul") of John -- rsultat : "Hello Paul"

Le choix de la syntaxe se fera en fonction de vos prfrences. q Vous pouvez manipuler les proprits des scripts-objets, de la mme faon que vous manipulez les proprits des objets dapplication ou systme. Vous utiliserez la commande Get pour obtenir la valeur dune proprit, et les commandes Set ou Copy pour modifier sa valeur. Linstruction suivante utilise la commande Get, pour obtenir la valeur de la proprit howManyTimes du script-objet John :
get howManyTimes of John if the result > 10 return "John, arent you tired of saying hello ?" end if

Note des traducteurs francophones Vous pouvez galement utiliser la syntaxe suivante pour obtenir la valeur de la proprit howManyTimes du script-objet John :
get Johns howManyTimes

Le choix de la syntaxe se fera en fonction de vos prfrences. q

propos des scripts-objets

T7 - 8

Chapitre 3

Tome 7

Dfinir un script-objet

Chaque dfinition de script-objet dbute par le mot cl script, suivi par un nom de variable facultatif, et termine par le mot cl end (ou end script). Les instructions au milieu peuvent tre nimporte quelle combinaison de dfinitions de proprits, de gestionnaires et autres instructions AppleScript. La syntaxe dune dfinition de script-objet est
script [ scriptObjectVariable ] [ ( property | prop ) propertyLabel : initialValue ]... [ handlerDefinition ]... [ statement ]... end [ script ]

o scriptObjectVariable reprsente un identificateur de variable. Si vous incluez scriptObjectVariable dans la dfinition, AppleScript stocke le script-objet dans une variable. Vous pouvez alors utiliser lidentificateur de variable pour vous rfrer au script-objet partout dans le script. propertyLabel reprsente un identificateur de proprit. Les proprits sont des caractristiques identifiables par des tiquettes uniques. Elles sont similaires aux instances de variable dans la programmation oriente-objet initialValue reprsente la valeur qui est assigne la proprit, chaque fois que le script-objet est initialis. Les scripts-objets sont initialiss lorsque les scripts ou les gestionnaires les contenant sont excuts. initialValue est requise dans les dfinitions de proprit. handlerDefinition reprsente un gestionnaire de commande systme ou dfinie par lutilisateur. Les gestionnaires, lintrieur dune dfinition de scriptobjet, dterminent les commandes auxquelles le script-objet peut rpondre. Les dfinitions de script-objet peuvent inclure des gestionnaires de commandes dfinies par lutilisateur (routines), ou de commandes systme ou dapplication. Les gestionnaires dans les scripts-objets, sont similaires aux mthodes dans la programmation oriente-objet. Pour une description dtaille de la syntaxe des dfinitions de gestionnaires, voir Les Gestionnaires (T6 - p.6).
T7 - 9 Dfinir un script-objet

Chapitre 3

Tome 7

statement reprsente une instruction AppleScript quelconque. Les instructions autres que les dfinitions de gestionnaire ou de proprit, sont traites comme si elles faisaient partie de la dfinition du gestionnaire de la commande Run ; elles sont excutes lorsquun script-objet reoit la commande Run (pour un exemple, voir le script-objet John (T7 - p.12)).

Dfinir un script-objet

T7 - 10

Chapitre 4

Tome 7

Envoyer des commandes aux scriptsobjets

Vous utiliserez les instructions Tell pour envoyer des commandes aux scriptsobjets. Les rgles denvoi dune instruction Tell un script-objet, sont les mmes que pour lenvoi une application, except quil faut utiliser un nom de variable au lieu dune rfrence, pour identifier le script-objet. Par exemple,
tell John sayHello to "Herb" sayHello to "Grace" end tell

envoie deux commandes sayHello au script-objet John. Dans une instruction Tell, pour les commandes, sil y a des paramtres renseigner, ceux-ci doivent respecter les paramtres dfinis dans les dfinitions des gestionnaires de commandes du script-objet. Par exemple, linstruction suivante retourne un message derreur, car la dfinition du gestionnaire de la commande sayHello, montre T7 - p.7, dfinit un paramtre tiquet, et non un paramtre positionn.
tell John sayHello ("Herb") end tell -- rsultat : erreur !

Pour quun script-objet rponde une commande dans une instruction Tell, le script-objet ou son script-objet parent doivent avoir un gestionnaire pour cette commande. Un script-objet parent, est un script-objet partir duquel un script-objet hrite de gestionnaires et de proprits. Pour plus dinformations sur les scripts-objets parent, voir Hritage et dlgation (T7 - p.15). La premire commande que tout script-objet peut grer, mme sans un gestionnaire dfini explicitement, est la commande Run. Un gestionnaire de commande Run peut comporter toutes les instructions au top niveau dune dfinition de script-objet, autres que les dfinitions de proprits et de gestionnaires. Si la dfinition du script-objet contient uniquement des dfinitions de proprits et de gestionnaires, et ne comporte pas dautres

T7 - 11

Envoyer des commandes aux scripts-objets

Chapitre 4

Tome 7

instructions au top niveau, la dfinition peut inclure un gestionnaire Run explicite dbutant avec on run. Si une dfinition de script-objet comporte, ni de gestionnaire Run implicite (sous forme dinstructions au top niveau), ni de gestionnaire Run explicite, la commande Run naura aucun effet. Pour plus dinformations, voir Les gestionnaires Run (T6 - p.33). Par exemple, la commande Display Dialog, dans la dfinition de script-objet suivante, sexcutera uniquement si vous envoyez une commande Run au script-objet John.
script John property howManyTimes : 0 to sayHello to someone set howManyTimes to howManyTimes + 1 return "Hello " & someone end sayHello display dialog "John a reu une commande Run" end script tell John to sayHello to "Herb" -- rsultat : "Hello Herb" run John (* rsultat : le dialogue "John a reu une commande Run" saffiche *)

Envoyer des commandes aux scripts-objets

T7 - 12

Chapitre 5

Tome 7

Initialiser les scripts-objets

Lorsque vous dfinissez un script-objet, vous dfinissez une collection de gestionnaires et de proprits. Quand vous excutez un script contenant une dfinition de script-objet, AppleScript cre un script-objet avec les proprits et les gestionnaires lists dans la dfinition. Cela sappelle initialiser un script-objet. Un script-objet doit tre initialis avant de pouvoir rpondre aux commandes. Si vous incluez une dfinition de script-objet au top niveau dun script - cest dire, comme faisant partie du gestionnaire Run explicite ( on run...end run) du script - AppleScript initialise le script-objet chaque fois que le gestionnaire Run du script est excut. Pour plus dinformations, voir Les gestionnaires Run (T6 - p.33). Note des traducteurs francophones Si vous dclarez un script-objet sans lencadrer dans un gestionnaire quelconque, le script-objet ne fera partie daucun gestionnaire (y compris le gestionnaire Run implicite !!!). Par consquent, il ne sera pas initialis chaque excution. Et dans ce cas, ses proprits, sil y en a, seront prserves chaque appel. q De mme, si vous incluez dans un script, une dfinition de script-objet dans un autre gestionnaire, AppleScript initialise le script-objet, chaque fois que ce gestionnaire est appel. Les variables paramtres dans la dfinition du gestionnaire, deviennent des variables locales du script-objet. Par exemple, le gestionnaire makePoint dans le script suivant, contient une dfinition de script-objet pour le script-objet point :
on makePoint(x,y) script point property xCoordinate:x property yCoordinate:y end script return point end makePoint set myPoint to makePoint(10,20) get xCoordinate of myPoint -- rsultat : 10 get yCoordinate of myPoint -- rsultat : 20

T7 - 13

Initialiser les scripts-objets

Chapitre 5

Tome 7

AppleScript initialise le script-objet point lorsquil excute la commande makePoint. Les variables paramtres du gestionnaire makePoint, dans ce cas, x et y, deviennent des variables locales du script-objet point. La valeur initiale de x est 10 et celle de y est 20, car ils sont les paramtres de la commande makePoint qui a initialis le script-objet. Une des faons dutiliser les dfinitions de script-objet dans les gestionnaires, est de dfinir des fonctions constructives, cest dire, des gestionnaires qui crent des scripts-objets. Le script suivant utilise une fonction constructive pour crer trois scripts-objets.
on makePoint(x,y) script property xCoordinate:x property yCoordinate:y end script end makePoint set PointA to makePoint(10,20) set PointB to makePoint(100,200) set PointC to makePoint(1,1)

Comme dans lexemple prcdent, vous pouvez extraire les coordonnes des trois scripts-objets, en utilisant la commande Get.
Note

La distinction entre dfinir un script-objet et initialiser un script-objet, est similaire la distinction entre une classe et une instance dans la programmation oriente-objet. Lorsque vous dfinissez un script-objet, vous dfinissez une classe dobjet. LorsquAppleScript initialise un script-objet, il cre une instance de la classe. Le script-objet obtient son contexte initial (valeurs des proprits et gestionnaires) partir de sa dfinition de scriptobjet, mais son contexte peut tre modifi lorsquil rpond aux commandes. x

Initialiser les scripts-objets

T7 - 14

Chapitre 6

Tome 7

Hritage et dlgation

Vous pouvez utiliser les mcanismes dhritage dAppleScript, pour dfinir des scripts-objets lis avec dautres scripts-objets. Cela permet de partager des dfinitions de proprits et de gestionnaires entre plusieurs scripts-objets, sans avoir rpter les dfinitions partages. Le chapitre Hritage et dlgation est dcrit dans les sections suivantes : Dfinir lhritage (T7 - p.15) dcrit comment dfinir un script-objet qui hrite des proprits et des gestionnaires venant dun autre script-objet. Fonctionnement de lhritage (T7 - p.16) montre lhritage dans les relations entre plusieurs scripts parent-enfant. Linstruction Continue (T7 - p.20) dcrit comment tendre comportement dun gestionnaire hrit sans le remplacer compltement. le

Utiliser les instructions Continue pour transmettre des commandes aux applications (T7 - p.24) dcrit le mode de transmission des commandes aux applications. La proprit Parent et lapplication courante(T7 - p.25) montre quune application peut tre spcifie dans la proprit Parent.

Dfinir lhritage
Lhritage est la capacit quun script-objet enfant, a de prendre les proprits et les gestionnaires dun script-objet parent. Vous spcifierez lhritage avec la proprit Parent (property parent :). Un script-objet qui comporte une proprit Parent, hrite des proprits et des gestionnaires du script-objet list dans la proprit Parent. Le script-objet list dans la dfinition de la proprit Parent, est appel script-objet parent, ou parent. Un script-objet qui comporte une proprit Parent, est rfrenc comme script-objet enfant, ou enfant. La proprit Parent nest pas obligatoire. Un script-objet peut avoir plusieurs enfants, mais un script-objet enfant ne peut avoir quun parent.

T7 - 15

Hritage et dlgation

Chapitre 6

Tome 7

La syntaxe pour dfinir un script-objet parent est


( property | prop ) parent : variable

o variable est une variable contenant le script-objet parent. Un script-objet doit tre initialis avant quil ne puisse tre assign comme parent dun autre script-objet. Cela signifie que la dfinition du script-objet parent (ou une commande appelant une fonction qui cre le script-objet parent), doit venir avant la dfinition de lenfant dans le mme script.

Fonctionnement de lhritage
La relation dhritage entre scripts-objets devrait tre familier ceux qui connaissent C++ ou un autre langage de programmation oriente-objet. Un script-objet enfant qui hrite des gestionnaires et des proprits dfinis dans son script-objet parent, est pareil quune classe C++ qui hrite des mthodes et des instances de sa classe parent. Si le script-objet enfant na pas sa propre dfinition pour une proprit ou pour un gestionnaire, il utilisera la proprit ou le gestionnaire hrits. Si le script-objet enfant a sa propre dfinition pour une proprit particulire ou pour un gestionnaire particulier, il ignorera la proprit ou le gestionnaire hrits. Le schma n 1 montre la relation entre un script-objet parent appel John, et un script-objet enfant appel Simple. Le schma comporte deux versions du script-objet enfant. La version de gauche montre la dfinition relle du scriptobjet Simple. La version de droite montre la dfinition du script-objet Simple, telle quelle safficherait, si on copiait rellement dedans les proprits et les gestionnaires hrits. Les proprits et les gestionnaires hrits sont encadrs par des lignes, pour indiquer la correspondance entre la version de gauche et celle de droite. Comme vous pouvez le constater, Simple hrite de son parent, John, de la proprit howManyTimes et du gestionnaire sayHello. Le schma n 2 montre une autre relation parent-enfant. Comme dans lexemple prcdent, le script-objet enfant hrite de son parent, John, de la proprit howManyTimes et du gestionnaire sayHello. Mais cette fois, le script-objet enfant, appel Rebel, a sa propre dfinition de la proprit

Hritage et dlgation

T7 - 16

Chapitre 6

Tome 7

howManyTimes, aussi il nutilise pas la proprit hrite de son parent. Dans

le schma, les proprits hrites mais non utilises sont barres. Schma n 1 Relation entre un script enfant et son parent
script John property howManyTimes : 0 to sayHello to someone set howManyTimes to howManyTimes + 1 return "Hello " & someone end sayHello end script

parent script Simple property howManyTimes : 0 to sayHello to someone set howManyTimes to howManyTimes + 1 return "Hello " & someone end sayHello end script

script Simple property parent : John end script

Schma n 2 Une autre relation enfant-parent


script John property howManyTimes : 0 to sayHello to someone set howManyTimes to howManyTimes + 1 return "Hello " & someone end sayHello end script script Rebel property howManyTimes : 0 to sayHello to someone set howManyTimes to howManyTimes + 1 return "Hello " & someone end sayHello property howManyTimes : 10 end script

parent

script Rebel property parent : John property howManyTimes : 10 end script

T7 - 17

Hritage et dlgation

Chapitre 6

Tome 7

Considrez maintenant, dans le script suivant, les scripts-objets parent et enfant. premire vue, il peut apparatre que le rsultat de la commande sayHello sera "Hello Emily" . Toutefois, comme le script-objet Y a son propre gestionnaire getName, le rsultat sera "Hello Andrew". Les relations dhritage pour le script sont montres dans le schma n 3.
script X on sayHello() return "Hello " & getName() end sayHello on getName() return "Emily" end getName end script script Y property parent : X on getName() return "Andrew" end getName end script tell Y to sayHello()

Schma n 3 Une relation enfant-parent plus complexe


script X on sayHello() return "Hello " & getName() end sayHello on getName() return "Emily" end getName end script script Y on sayHello() return "Hello " & getName() end sayHello on getName() return "Emily" end getName on getName() return "Andrew" end getName end script

parent

script Y property parent : X on getName() return "Andrew" end getName end script

Hritage et dlgation

T7 - 18

Chapitre 6

Tome 7

Bien que le script X, dans le schma n 3, senvoie lui-mme la commande getName, cette commande est intercepte par le script enfant, lequel y substitue sa propre version du gestionnaire getName. AppleScript maintient toujours la premire cible dune commande, comme self(lui-mme), qui sont envoyes les commandes. Il redirigera vers lenfant nimporte quelles commandes que le parent senvoie lui-mme. La relation entre un script-objet parent et son script-objet enfant est dynamique. Si les proprits du parent sont modifies, les proprits de lenfant hrites le sont aussi. Par exemple, le script-objet Simple dans le script suivant, hrite de la proprit Vegetable du script-objet John.
script John property Vegetable : "Spinach" end script script Simple property parent : John end script set Vegetable of John to "Swiss chard" Vegetable of Simple -- rsultat : "Swiss chard"

Lorsque vous modifiez la proprit Vegetable du script-objet John avec la commande Set, vous modifiez aussi la proprit Vegetable du script-objet Simple. Le rsultat de la dernire instruction du script est donc "Swiss chard". De mme, si un enfant modifie une de ses proprits hrites, la valeur de la proprit du parent est aussi modifie. Par exemple, le script-objet Johnson dans le script suivant hrite de la proprit Vegetable du script-objet John.
script John property Vegetable : "Spinach" end script script Johnson property parent : John on changeVegetable() set my vegetable to "Zucchini" end changeVegetable end script tell Johnson to changeVegetable()

T7 - 19

Hritage et dlgation

Chapitre 6

Tome 7

Vegetable of John -- rsultat : "Zucchini"

Lorsque vous modifiez la proprit Vegetable du script-objet Johnson en "Zucchini" avec la commande changeVegetable, la proprit Vegetable du script-objet John est aussi modifie. Lexemple prcdent montre un point important du fonctionnement des proprits hrites : pour se rfrer une proprit hrite, depuis lintrieur dun script-objet, vous devez utiliser les mots rservs my ou of me, pour indiquer que la valeur laquelle vous vous rfrez, est une proprit du script-objet en cours. Vous pouvez aussi utiliser le terme of parent, pour indiquer que la valeur est une proprit du script-objet parent. Si vous nindiquez rien (ni my, ni of me, ni of parent ), AppleScript suppose que la valeur est une variable locale. Par exemple, si vous indiquez Vegetable au lieu de my vegetable, dans le gestionnaire de commande changeVariable dans le script prcdent, le rsultat sera "Spinach".
script John property Vegetable : "Spinach" end script script Johnson property parent : John on changeVegetable() set vegetable to "Zucchini" (* cration dune variable locale appele Vegetable ne modifie pas la valeur de la proprit parent Vegetable. *) end changeVegetable end script tell Johnson to changeVegetable() Vegetable of John -- rsultat : "Spinach"

Linstruction Continue
Normalement, si un script-objet enfant et son parent, ont tous les deux des gestionnaires pour les mmes commandes, lenfant utilisera ses propres gestionnaires. Toutefois, un gestionnaire dun script-objet enfant peut dabord

Hritage et dlgation

T7 - 20

Chapitre 6

Tome 7

grer une commande, et ensuite, utiliser une instruction Continue pour appeler le gestionnaire de la mme commande dans le parent. Lutilisation dune instruction Continue pour appeler un gestionnaire dans un script-objet parent, est appele dlgation. En dlguant les commandes un script-objet parent, un enfant peut tendre le comportement dun gestionnaire contenu dans le parent, sans avoir rpter la dfinition du gestionnaire en entier. Aprs que le parent ait gr la commande, AppleScript continue lexcution du script dans lenfant, lendroit o linstruction Continue fut appele. Les gestionnaires dans les scripts-objets enfant contenant des instructions Continue, sont identiques aux enveloppes dans la programmation oriente-objet. La syntaxe dune instruction Continue est
continue commandName parameterList

o commandName est le nom de la commande en cours. parameterList est la liste des paramtres devant tre transmis avec la commande. La liste doit respecter le mme format que les dfinitions des paramtres dans la dfinition du gestionnaire de commande. Pour les gestionnaires avec des paramtres tiquets, cela signifie que les tiquettes de paramtre doivent correspondre celles de la dfinition du gestionnaire. Pour les gestionnaires avec des paramtres positionns, les paramtres doivent tre envoys en respectant lordre. Vous pouvez lister les valeurs actuelles ou les variables paramtres. Si vous listez les valeurs actuelles, ces valeurs remplaceront les valeurs des paramtres qui taient spcifis dans la commande initiale. Si vous listez les variables paramtres, linstruction Continue transmettra les valeurs des paramtres qui taient spcifis dans la commande initiale. Le script suivant comporte deux dfinitions de script-objet, similaires celles montres dans le schma n 1 (T7 - p.17). La premire, Elizabeth, fonctionne comme le script John du schma. La seconde, ChildOfElizabeth, comporte un gestionnaire avec une instruction Continue, cette instruction est par contre absente du script-objet enfant Simple du schma.
script Elizabeth property howManyTimes : 0

T7 - 21

Hritage et dlgation

Chapitre 6

Tome 7

to sayHello to someone set howManyTimes to howManyTimes + 1 return "Hello " & someone end sayHello end script script ChildOfElizabeth property parent : Elizabeth on sayHello to someone if my howManyTimes > 3 then return "Non, je suis fatigu de saluer." else continue sayHello to someone end if end sayHello end script tell Elizabeth to sayHello to "Matt" -- rsultat : "Hello Matt" tell ChildOfElizabeth to sayHello to "Bob" (* rsultat : "Hello Bob", mais au prochain tour, aprs linstruction Continue, howManyTimes sera gale 4 *)

Dans lexemple prcdent, le gestionnaire dfini par ChildOfElizabeth pour la commande sayHello, vrifie la valeur de la proprit howManyTimes chaque fois que le script est excut. Si la valeur est suprieure 3, ChildOfElizabeth retourne un message refusant de dire Hello. Sinon, ChildOfElizabeth appelle le gestionnaire sayHello dans le script-objet parent Elizabeth, lequel retourne le message standard Hello. Le terme someone dans linstruction Continue est une variable paramtre. Elle indique que le paramtre reu avec la commande initiale sayHello, sera transmis au gestionnaire dans le script parent.
Note

Le mot rserv my dans linstruction if my howManyTimes > 3, dans lexemple prcdent, est requis pour indiquer que howManyTimes est une proprit du script-objet. Sans ce mot, AppleScript suppose que howManyTimes est une variable locale non-dfinie. x Une instruction Continue peut modifier les paramtres dune commande avant de la dlguer. Par exemple, supposons que le script-objet suivant soit dfini dans le mme script que lexemple prcdent. La premire instruction Continue modifie le paramtre direct, "Bill", de la commande sayHello en

Hritage et dlgation

T7 - 22

Chapitre 6

Tome 7

"William". Elle le modifie en spcifiant la valeur "William" au lieu de la variable paramtre someone. script AnotherChildOfElizabeth property parent : Elizabeth on sayHello to someone if someone = "Bill" then continue sayHello to "William" else continue sayHello to someone end if end sayHello end script tell AnotherChildOfElizabeth to sayHello to "Matt" -- rsultat : "Hello Matt" tell AnotherChildOfElizabeth to sayHello to "Bill" -- rsultat : "Hello William"

Si vous remplacez un gestionnaire parent de cette manire, les mots rservs me et my de ce gestionnaire ne se rfreront plus parent, mais lenfant, comme dans lexemple qui suit.
script Hugh on identify() me end identify end script script Andrea property parent : Hugh on identify() continue identify() end identify end script tell Hugh to identify() -- rsultat : script Hugh tell Andrea to identify() -- rsultat : script Andrea

T7 - 23

Hritage et dlgation

Chapitre 6

Tome 7

Utiliser linstruction Continue pour transmettre des commandes aux applications


Une commande dapplication ou celle dun complment de pilotage, envoye un script-objet, ne dclenche pas daction, tant quelle nest pas transmise lapplication cible par dfaut. Vous pouvez utiliser un gestionnaire de commande dans un script-objet, pour modifier le comportement dune commande. Par exemple, le gestionnaire de la commande Beep dans lexemple suivant, modifie la version de la commande Beep du complment de pilotage standard, en affichant une bote de dialogue et en autorisant lutilisateur dcider, si oui ou non, il continue lexcution :
script Joe on beep set x to display dialog "Voulez-vous rellement entendre ce son affreux ?" buttons {"Oui","Non"} if button returned of x is "Oui" then continue beep -- le complment de pilotage gre la commande. end beep end script tell Joe to beep -- rsultat : un dialogue pour confirmer la commande Beep

LorsquAppleScript rencontre linstruction Tell, il envoie une commande Beep au script Joe. Le gestionnaire Beep oblige lapplication cible par dfaut (par exemple, lditeur de scripts) afficher une bote de dialogue, donnant lutilisateur le choix dentendre ou non le son dalerte. Si lutilisateur rpond Oui, le gestionnaire utilise linstruction Continue pour transmettre la commande Beep lapplication cible par dfaut. Si lutilisateur rpond non, lapplication cible ne recevra pas la commande Beep et aucun son dalerte ne sera jou. Dans les applications qui autorisent lattachement de scripts-objets aux objets dapplication, vous pouvez utiliser un gestionnaire de commande dapplication dans un script-objet, pour modifier la manire dont lapplication rpond la commande. Par exemple, si une application graphique autorise lassociation de scriptsHritage et dlgation T7 - 24

Chapitre 6

Tome 7

objets avec des formes gomtriques, comme des cercles ou des carrs, vous pourrez inclure un gestionnaire, comme dans le script suivant, dans un scriptobjet associ avec une forme dans un document :
on move to {x, y} continue move to {x, item 2 of my position} end move

Chaque fois que la forme, avec laquelle est associ le script-objet, est dsigne comme la cible dune commande Move, le gestionnaire on move gre la commande en modifiant un des paramtres, et en utilisant linstruction Continue pour transmettre la commande au parent par dfaut - cest dire, lapplication graphique. Lemplacement spcifi par {x, item 2 of my position} a les mmes coordonnes horizontales que lemplacement spcifi par la commande Move initiale, mais spcifie les coordonnes verticales dorigine de la forme (item 2 de la position initiale du cercle), par consquent, le dplacement de la forme est limit laxe horizontal. Normalement, vous devriez trouver plus dinformations dans la documentation des applications attachables, autorisant lassociation de scripts-objets avec des objets dapplication.

La proprit Parent et lapplication courante


Lapplication courante est, soit lapplication cible par dfaut, soit nimporte quelle application dfinie en tant que proprit Parent du script. La proprit Parent par dfaut pour nimporte quel script qui nen dclare pas une explicitement, est lapplication cible par dfaut - gnralement, lapplication qui excute le script, comme lditeur de scripts. Vous pouvez utiliser la variable prdfinie current application pour vous rfrer lapplication courante. Vous pouvez dsigner nimporte quelle application comme application courante, pour un script ou un script-objet, il suffit simplement de la dclarer comme proprit Parent. Toutes les commandes subsquentes dans le script, pour lesquelles le script na pas de gestionnaire, seront transmises lapplication que vous avez dclare comme le parent, et les occurences subsquentes de la constante current application se rfreront cette application. Par exemple, ce script dclare le Finder comme sa proprit Parent, il envoie
T7 - 25 Hritage et dlgation

Chapitre 6

Tome 7

alors les commandes qui ferment la fentre du Finder lavant-plan, et retourne le nom de lapplication :
property parent : application "Finder" close front window tell current application to return my name -- rsultat : "Finder"

Dans cet exemple, my se rfre lapplication courante (Finder). Linstruction Tell est facultative ; utiliser return the name of me produirait le mme rsultat, car AppleScript envoie la commande au Finder. Si vous enlevez la dclaration de proprit dans ce script, lditeur de scripts devient lapplication courante. Lorsque vous excuterez ce nouveau script, la commande Close et linstruction Return produiront une erreur, car lditeur de scripts ne les interprte pas. Dans lexemple suivant, le script Gertrude dclare le Finder comme sa proprit parent, et il comporte un gestionnaire modifiant le comportement de la commande Display Dialog.
script Gertrude property parent : application "Finder" on display dialog x tell application "diteur de scripts" to display dialog "Le Finder a quelque chose dire" continue display dialog x end display dialog end script tell Gertrude to display dialog "Hello"

Comme le script-objet Gertrude dclare le Finder comme sa proprit parent, le gestionnaire on display dialog doit utiliser une instruction Tell, pour envoyer une commande Display Dialog spare lditeur de scripts. Le gestionnaire utilise alors une instruction Continue, pour transmettre la commande initiale Display Dialog au Finder, lequel devient lapplication en avant-plan, et il utilise la commande Display Dialog de lOSAX complments standard pour afficher Hello.

Hritage et dlgation

T7 - 26

Chapitre 7

Tome 7

Utiliser les commandes Copy et Set avec les scripts-objets

Les commandes Copy et Set assignent toutes les deux des valeurs aux variables, mais elles produisent des rsultats diffrents lorsque la valeur assigne est un script-objet. La commande Copy fait une nouvelle copie du script-objet, alors que la commande Set cre une variable qui partage les donnes avec le script-objet initial. Notez que ce comportement (Copy cre une nouvelle copie, Set partage les donnes) est le mme que celui qui est dcrit dans Le partage de donnes (T4 - p.15), concernant les listes et les enregistrements. Pour examiner la manire doprer de Copy et de Set avec les scripts-objets, considrez lexemple suivant, lequel dfinit un script-objet, appel John, avec une proprit appele Vegetable.
script John property Vegetable : "Spinach" end script set myScriptObject to John set Vegetable of John to "Swiss chard" get Vegetable of myScriptObject -- rsultat : "Swiss chard"

La premire commande Set dfinit une variable, myScriptObject, qui partage les donnes avec le script-objet initial John. La seconde commande Set modifie la valeur de la proprit Vegetable du script-objet John, remplaant "Spinach" par "Swiss chard". Comme myScriptObject partage les donnes avec John, il partage aussi la modification de la proprit Vegetable de John. Lorsque vous obtenez la proprit Vegetable de myScriptObject, le rsultat est "Swiss chard". Maintenant considrez lexemple suivant, celui-ci utilise la commande Copy pour definir la variable myScriptObject.
script John property Vegetable : "Spinach" end script

T7 - 27

Utiliser les commandes Copy et Set avec les scripts-objets

Chapitre 7

Tome 7

copy John to myScriptObject set Vegetable of John to "Swiss chard" get Vegetable of myScriptObject -- rsultat : "Spinach"

Dans ce cas l, la commande Copy cre un nouveau script-objet. Rgler la proprit Vegetable du script-objet initial, na aucun effet sur le nouveau script-objet. Le rsultat de la commande Get est "Spinach". Lorsque vous copiez un script-objet enfant dans une variable, la variable contient une copie complte de lenfant et de son parent, y compris tous les gestionnaires et toutes les proprits du parent. Chaque nouvelle copie, y compris ses proprits et ses gestionnaires hrits, est totalement indpendante de loriginal et de nimporte quelles autres copies. Par exemple, si vous copiez une version modifie du script Johnson dans cet exemple dans deux variables diffrentes, vous pourriez rgler chaque proprit Vegetable des variables de faon indpendante :
script John property Vegetable : "Spinach" end script script Johnson property parent : John on changeVegetable(x) set myVegetable to x end changeVegetable end script copy Johnson to J1 copy Johnson to J2 tell J1 to changeVegetable("Zucchini") tell J2 to changeVegetable("Swiss chard") Vegetable of J1 -- rsultat : "Zucchini" Vegetable of J2 -- rsultat : "Swiss chard" Vegetable of John -- rsultat : "Spinach"

Utiliser les commandes Copy et Set avec les scripts-objets

T7 - 28

Chapitre 7

Tome 7

Vous pouvez crer des gestionnaires qui construisent des copies de scriptsobjets, utilisables nimporte o dans un script. Par exemple, le script suivant comporte un gestionnaire, qui prend une balance initiale comme paramtre, et cre une copie dun script-objet agissant comme un compte indpendant. Chaque copie comporte plusieurs proprits et un gestionnaire on Deposit, qui permet au script-objet dincrmenter sa propre balance, lorsquil reoit une commande Deposit.
on makeAccount(initialBalance) script account property StartDate : current date property Balance : initialBalance on Deposit(amount) set Balance to Balance + amount end Deposit end script end makeAccount set a to makeAccount(3300) set b to makeAccount(33) tell a Deposit(30) Deposit(60) end tell {Balance of a, StartDate of a} -- rsultat : {3390, date "vendredi 19 avril 2002 22:58:07"} {Balance of b, StartDate of b} -- rsultat : {33, date "vendredi 19 avril 2002 22:56:49"}

T7 - 29

Utiliser les commandes Copy et Set avec les scripts-objets

Vous aimerez peut-être aussi