You are on page 1of 56

ADOBE INTRODUCTION

LCRITURE DE SCRIPTS

Copyright 2012 Adobe Systems Incorporated. Tous droits rservs.


Adobe Introduction lcriture de scripts
AVIS : Toutes les informations contenues dans ce document sont la proprit dAdobe Systems Incorporated. Aucune
partie de ce document (que ce soit sous forme de copie papier ou lectronique) ne peut tre reproduite ni transmise,
sous quelque forme ou par quelque moyen que ce soit (lectronique, mcanique, photocopie, enregistrement ou autre)
sans autorisation crite pralable dAdobe Systems Incorporated. Le logiciel dcrit dans ce document est fourni sous
licence et peut tre copi ou utilis uniquement en conformit avec les dispositions de cette licence.
Ce document et les informations contenues sont fournis EN LETAT et peuvent tre modifis sans pravis. Ils ne constituent
en aucune manire un engagement de la part dAdobe Systems Incorporated. Adobe Systems Incorporated ne peut tre
tenu pour responsable des erreurs ou inexactitudes et rejette toute garantie (expresse, tacite ou contractuelle) concernant
ce document, notamment concernant sa qualit marchande ou son adquation un usage particulier et la non-contrefaon
des droits dun tiers.
Toute rfrence des noms de socit dans les modles dexemple nest utilise qu titre dexemple et ne fait rfrence
aucune socit relle.
Adobe, le logo Adobe, Creative Suite, Illustrator, InDesign et Photoshop sont des marques ou des marques dposes
dAdobe Systems Incorporated aux Etats-Unis et/ou dans dautres pays.
Apple, Mac OS et Macintosh sont des marques dApple Computer, Inc., dposes aux Etats-Unis et dans dautres pays.
Microsoft et Windows sont des marques ou des marques dposes de Microsoft Corporation aux Etats-Unis et/ou dans
dautres pays. JavaScript et toutes les marques relatives Java sont des marques ou des marques dposes de Sun
Microsystems, Inc. aux Etats-Unis et dans dautres pays. UNIX est une marque dpose de The Open Group.
Toutes les autres marques cites sont la proprit de leurs dtenteurs respectifs.
Si le prsent guide est distribu avec un logiciel sous contrat de licence de lutilisateur final, ce guide, de mme que le
logiciel dont il traite, est cd sous licence et ne peut tre copi ou utilis que conformment cette licence. Sauf
autorisation spcifique dans la licence, aucune partie de cette publication ne peut tre reproduite, enregistre sur un
systme de recherche ou transmise sous quelque forme ou par quelque moyen que ce soit (enregistrement lectronique,
mcanique ou autre), sans lautorisation crite pralable dAdobe Systems Incorporated. Notez que le contenu de ce
manuel est protg par des droits dauteur, mme sil nest pas distribu avec un logiciel accompagn dun contrat de
licence pour lutilisateur final.
Les informations contenues dans ce guide sont fournies titre informatif uniquement ; elles sont susceptibles dtre
modifies sans pravis et ne doivent pas tre interprtes comme tant un engagement de la part dAdobe Systems
Incorporated. Adobe Systems Incorporated naccepte aucune responsabilit quant aux erreurs ou inexactitudes pouvant
tre contenues dans le prsent guide.
Adobe Systems Incorporated, 345 Park Avenue, San Jose, California 95110, Etats-Unis.

Table des matires


1

Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Est-ce difficile de crer des scripts ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Pourquoi utiliser un script? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Comment savoir quand utiliser un script ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Quen est-il des actions ou des macros ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

Lcriture de scripts, cest quoi au juste ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


AppleScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
VBScript : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6
6
7
7

Par o dois-je commencer ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


AS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
JS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
VBS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

8
8
8
8

Bases de lcriture de scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9


Modules de lcriture de scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Utilisation des objets, des proprits, des mthodes et des commandes . . . . . . . . . . . . . . . . . . . . . . . 9
Utilisation des objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Concepts DOM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Les rfrences dobjet facilitent la vie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Les variables offrent un raccourci convivial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Dnomination des variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Ensembles ou lments dobjets comme rfrences dobjet . . . . . . . . . . . . . . . . . . . . . . . . . .
Comment les lments et les ensembles numrotent les
lments suivants ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Rfrence lobjet actuel ou actif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10
10
11
11
12
13
13

Utilisation des proprits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


AS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
JS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
VBS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Utilisation des proprits lecture seule et lecture-criture . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Utilisation des avertissements de scurit pour afficher la
valeur dune proprit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Valeurs constantes et numrations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
AS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
JS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
VBS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Utilisation de variables pour les valeurs de proprit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

16
18
18
19
20
20
21
22
22
23
23

Utilisation de mthodes ou commandes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


Paramtres des commandes ou mthodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Paramtres requis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Paramtres multiples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

24
24
24
25

14
15

Table des matires

Instructions Tell (AS uniquement) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27


Remarques sur les variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Modification de la valeur dune variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Utilisation de variables pour faire rfrence des objets existants . . . . . . . . . . . . . . . . . . . . 28
Rendre les fichiers de script lisibles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Commenter le script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Continuer des lignes longues en AppleScript et VBScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Utilisation de tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Cration dobjets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Informations supplmentaires sur lcriture de scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

Recherche de proprits et de mthodes dobjets . . . . . . . . . . . . . . . . . . . . . . . . . . 33


Utilisation de navigateurs dans un environnement de script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Dictionnaires de donnes AppleScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Affichage des dictionnaires AppleScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Utilisation des dictionnaires AppleScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Visionneuse de modle objet (Object Model Viewer) JavaScript . . . . . . . . . . . . . . . . . . . . . .
Bibliothques de types VBScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Affichage des bibliothques de types VBScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Utilisation des bibliothques de types VBScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

33
33
33
33
36
36
36
37

Utilisation des documents de rfrence Adobe relatifs lcriture de scripts . . . . . . . . . . . . . . . . . . .


Utilisation du tableau dlments dun objet (AS uniquement) . . . . . . . . . . . . . . . . . . . . . . . .
Utilisation du tableau de proprits dun objet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Utilisation du tableau de mthodes dun objet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

41
42
42
44

Techniques dcriture de scripts avances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46


Instructions conditionnelles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
instructions if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Instructions if else . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Boucles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Informations supplmentaires sur lcriture de scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

Rsolution des problmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51


Mots rservs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Messages derreur de lditeur de scripts AppleScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Messages derreur de lESTK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Messages derreur de VBScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

Bibliographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
AppleScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
VBScript : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

Introduction
Lcriture de scripts est un outil puissant qui vous permet de contrler et dautomatiser un grand nombre
de fonctionnalits dans un grand nombre dapplications Adobe Creative Suite et vous permet de gagner
tellement de temps et defforts que votre approche du travail sen trouve compltement change.

Est-ce difficile de crer des scripts ?


Les scripts sont diffrents des programmes. Il nest pas ncessaire de disposer dun diplme en informatique
ou en mathmatiques pour crer des scripts pouvant automatiser un vaste ventail de tches courantes.
Chaque lment de script correspond un outil, une palette ou un menu dune application Adobe.
En dautres termes, chaque lment de script correspond des connaissances que vous possdez dj sous
Adobe. Si vous savez ce que vous souhaiteriez que vos applications Adobe fassent, il ne vous sera pas difficile
dapprendre crire un script.

Pourquoi utiliser un script ?


Votre travail de conception graphique est caractris par la crativit, mais, en pratique, la plupart des tches
nont rien de cratif. Il y a de fortes chances que vous passiez le plus clair de votre temps excuter des
tches rptitives ou similaires.
Ne serait-il pas pratique de pouvoir embaucher un assistant heureux dexcuter les tches ennuyeuses,
de suivre vos instructions de manire prvisible et parfaitement rgulire, qui soit disponible tout moment,
travaille la vitesse de la lumire et ne vous envoie jamais de facture ?
Cet assistant, ce peut tre le script. Il ne faut pas longtemps pour apprendre gnrer des scripts permettant
dexcuter les tches rptitives qui vous font perdre votre temps. Mais sil est facile de sy mettre, les langages
de script modernes sont assez sophistiqus pour automatiser des tches trs compliques. Au fur et
mesure que votre exprience saccrot, vous pourrez passer des scripts plus complexes excutables de
nuit pendant votre sommeil.

Comment savoir quand utiliser un script ?


Pensez votre travail : ne comporte-t-il pas une tche rptitive qui vous ennuie au plus haut point ?
Si cest le cas, voil dj une bonne raison dcrire un script. Il vous suffira ensuite de dterminer :
X

quelles sont les tapes ncessaires lexcution de cette tche et?

quelles sont les conditions dans lesquelles vous devez effectuer cette tche?

Une fois que vous avez compris le processus dexcution manuelle de cette tche, vous tes prt en
crire le script.

CHAPITRE 1 : Introduction

Quen est-il des actions ou des macros ?

Quen est-il des actions ou des macros ?


Si vous avez utilis des actions ou rdig des macros, vous pouvez vous faire une ide de lefficacit des
scripts. Mais lcriture de scripts va au-del de lautomatisation dactions ou de macros ; elle permet de
manipuler des documents et des applications multiples en un seul script. Par exemple, vous pouvez crer
un script qui manipule une image sous Adobe Photoshop et ordonne ensuite Adobe InDesign
dincorporer cette image.
En outre, votre script peut trs intelligemment retrouver des informations et y rpondre en consquence.
Par exemple, si vous avez un document qui contient des photos de diffrentes tailles. vous pouvez crer un
script qui slectionne la taille de chaque photo et cre une bordure colore diffrente selon chaque taille.
Ainsi, les formats icnes peuvent avoir une bordure bleue, les petites illustrations une bordure verte et les
photos dune demi-page une bordure argente.
Si vous aimez utiliser des actions, noubliez pas que votre script peut excuter ces dernires dans lapplication.

Lcriture de scripts, cest quoi au juste ?


Un script est une srie dinstructions qui ordonnent une application dexcuter un ensemble de tches.
Le truc consiste crire ces instructions dans un langage reconnu par lapplication. Les applications Adobe
pour lesquelles vous pouvez crire des scripts prennent en charge plusieurs langages.
Si vous travaillez sous Mac OS, vous pouvez utiliser :
X

AppleScript

JavaScript

Si vous travaillez sous Windows, vous pouvez utiliser :


X

VBScript (Visual Basic et VBA fonctionnent galement)

JavaScript

Les brves descriptions ci-dessous peuvent vous aider dterminer le langage qui vous conviendra le mieux.

AppleScript
AppleScript est un langage de script en langue courante dvelopp par Apple. Cest lun des langages
de script les plus simples utiliser.
Pour crire des scripts AppleScript, vous pouvez utiliser lapplication Editeur de scripts dApple, qui, dans
une installation par dfaut Mac OS, se trouve dans :
disque systme:Applications:AppleScript:Editeur de scripts

Pour plus dinformations sur lutilisation de lapplication Editeur de scripts, reportez-vous laide
correspondante.

CHAPITRE 1 : Introduction

Lcriture de scripts, cest quoi au juste ?

VBScript :
VBScript est un sous-ensemble du langage de programmation Visual Basic dvelopp par Microsoft. VBScript
communique avec les applications hberges laide dActiveX Scripting. Si VBScript est la version du
langage Visual Basic officiellement prise en charge par CS6, vous pouvez galement crire des scripts en
VBA et Visual Basic lui-mme.
Vous pouvez trouver plusieurs bons diteurs VBScript sur Internet. Si vous avez une application Microsoft
Office, vous pouvez galement utiliser lditeur Visual Basic intgr en slectionnant Outils > Macro >
Visual Basic Editor.

JavaScript
JavaScript est un langage de script trs rpandu dvelopp lorigine pour rendre les pages Web interactives.
Tout comme AppleScript, JavaScript est facile apprendre.
REMARQUE : Adobe a dvelopp une version amliore de JavaScript appele ExtendScript, qui vous permet
de bnficier des avantages de certains outils et fonctionnalits de script dAdobe. Si vous tes dbutant,
la diffrence entre ces deux langages ne devrait pas vous affecter. Prenez toutefois lhabitude de donner
une extension .jsx vos scripts JavaScript, plutt que lextension habituelle .js.
JavaScript possde quelques petits avantages sur AppleScript et Visual Basic :
X

Vos scripts peuvent tre utiliss soit sous Windows, soit sous Mac OS. Si vous tes amen partager ou
utiliser vos scripts dans les deux plates-formes, apprenez alors utiliser JavaScript.

Sous Adobe Illustrator et InDesign, vous pouvez accder aux scripts dans nimporte quel langage pris
en charge partir de lapplication. Nanmoins, sous Photoshop, vous ne pouvez accder quaux fichiers
.jsx partir de lapplication. Vous devez utiliser les scripts AppleScript ou Visual Basic en dehors de
lapplication. Cela ne constitue pas un inconvnient majeur, mais il vous faudra quelques clics de plus
pour excuter vos scripts.

Vous pouvez configurer les scripts .jsx pour quils sexcutent automatiquement lorsque vous ouvrez
lapplication, en les plaant dans le dossier Startup Scripts de lapplication. Pour plus dinformations
sur les dossiers Startup Scripts, reportez-vous au guide dcriture de scripts de votre application.

Pour crire des scripts en JavaScript, vous pouvez utiliser nimporte quel diteur de texte, ou encore lESTK
(ExtendScript Tool Kit) fourni avec vos applications Adobe. LESTK possde un large ventail de fonctionnalits
qui rendent son utilisation plus facile quun diteur de texte, notamment grce un correcteur de syntaxe
intgr qui identifie les problmes lis votre script et suggre des moyens de les rsoudre, et grce la
possibilit dexcuter vos scripts directement partir de lESTK sans sauvegarder le fichier. Cette deuxime
fonctionnalit vous permet de gagner beaucoup de temps, surtout au dbut sil vous faut tester et modifier
un script plus dune fois avant que celui-ci ne soit prt fonctionner.
Dans une installation Adobe par dfaut, lESTK se trouve lemplacement suivant :
Mac OS : disque systme:Applications:Utilities:Adobe Utilities - CS6:ExtendScript Toolkit CS6
Windows : lecteur:/Program Files/Adobe/Adobe Utilities - CS6/ExtendScript Toolkit CS6
Pour plus dinformations, reportez-vous au Guide JavaScript Tools.

CHAPITRE 1 : Introduction

Par o dois-je commencer ? 8

Par o dois-je commencer ?


Il est temps dcrire votre premier script.
REMARQUE : Si vous rencontrez des problmes pour excuter votre script, reportez-vous au Chapitre 5,
Rsolution des problmes .

AS
1. Ouvrez lEditeur de scripts et tapez (en changeant le nom de lapplication Adobe entre guillemets) :
tell application "Adobe Photoshop CS6"
make document
end tell

2. Cliquez sur Excuter.

JS
1. Ouvrez lESTK et slectionnez une application dans la liste droulante situe en haut gauche de la
fentre du document.
2. Dans la palette Console de JavaScript, tapez :
app.documents.add()

3. Effectuez lune des oprations suivantes :


X

Cliquez sur licne Excuter dans la barre doutils situe en haut de la fentre du document.

Appuyez sur la touche F5.

Slectionnez Debug (Dbogage) -> Run (Excuter).

VBS
1. Dans un diteur de texte, tapez (en changeant le nom de lapplication Adobe entre guillemets de la
deuxime ligne) :
Set appRef = CreateObject("Photoshop.Application")
appRef.Documents.Add()

2. Sauvegardez le fichier au format texte avec une extension .vbs (par exemple, creer_doc.vbs).
3. Double-cliquez sur le fichier dans Windows Explorer.

Bases de lcriture de scripts


Ce chapitre prsente les concepts de base de lcriture de scripts sous Windows et sous Mac OS. Pour des
instructions spcifiques un produit, reportez-vous au guide dcriture de scripts de votre application Adobe.

Modules de lcriture de scripts


Votre premier script, qui a cr un nouveau document, a t construit comme une phrase en franais, avec
un nom (document) et un verbe (make en langage AS, add() en langage JS et Add en langage VBS). Dans
lcriture de scripts, un nom est appel un objet et un verbe une commande (en AS) ou une mthode (en JS
et VBS).
Exactement comme vous pouvez modifier un nom en utilisant un adjectif, vous pouvez modifier un objet
de script en utilisant des proprits. Pour modifier une commande ou une mthode, vous utilisez des
paramtres.

Utilisation des objets, des proprits, des mthodes et des


commandes
Lorsque vous utilisez une application Adobe, vous ouvrez un fichier ou un document, puis, au sein du
document, vous crez ou manipulez des calques, du texte, des blocs, des couches, des lignes de graphique,
des couleurs et dautres lments cratifs. Ces lments sont des objets.
Pour crer une instruction de script, vous crez un objet ou faites rfrence un objet existant, puis vous
procdez comme suit :
X

Dfinissez des valeurs pour les proprits de lobjet. Par exemple, vous pouvez indiquer le nom,
la hauteur ou la largeur dun document. Vous pouvez spcifier le nom, la couleur ou lopacit dun calque.

Spcifiez des commandes ou des mthodes pour indiquer au script ce quil doit faire vos objets.
Par exemple, vous pouvez ouvrir, fermer, enregistrer et imprimer un document. Vous pouvez fusionner,
dplacer ou pixelliser un calque.

Gardez lesprit lorsque vous rdigez un script que vous ne pouvez utiliser que les proprits ou
mthodes/commandes autorises pour lobjet. Comment savoir quelles proprits et mthodes sont
autorises pour quel objet ? La plupart du temps, cest logique. En gnral, si vous pouvez indiquer quelque
chose dans votre application Adobe, vous pouvez lindiquer dans un script.
Nanmoins, Adobe lexplique galement en dtail dans les ressources de lcriture de scripts qui contiennent
les informations dont vous avez besoin pour crer, dfinir et manipuler les objets de script. Pour plus
dinformations sur lemplacement et lutilisation de ces ressources, reportez-vous au Chapitre 3, Recherche
de proprits et de mthodes dobjets .

CHAPITRE 2 : Bases de lcriture de scripts

Utilisation des objets

10

Utilisation des objets


Le principal concept comprendre pour utiliser des objets dans des scripts est de savoir comment faire
rfrence un objet. Comment faire savoir lapplication quel objet vous voulez que votre script modifie ?
Dans linterface utilisateur de lapplication, vous pouvez simplement slectionner lobjet en cliquant dessus.
Dans un script, il y a un peu plus faire.

Concepts DOM
Les langages de script utilisent un Document Object Model (DOM) pour organiser les objets de faon ce
quils soient faciles identifier. Le principe sous-jacent un DOM est la hirarchie de confinement. En dautres
termes, les objets de niveau suprieur contiennent les objets du niveau suivant, qui contiennent le niveau
suivant dobjets, etc.
Par exemple, lobjet de niveau suprieur de tout DOM dune application Adobe est lobjet application.
Ensuite vient lobjet document qui contient tous les autres objets, comme les calques, les couches, les
pages, les blocs de texte, etc. Ces objets peuvent contenir des objets que le document ne peut pas contenir
directement. Par exemple, sous InDesign ou Illustrator, un bloc de texte peut contenir des mots. Un document
ne peut pas contenir de mots sans bloc de texte. De mme, sous Photoshop, un document peut contenir
un calque et un calque peut contenir un bloc de texte mais un document ne peut pas contenir de bloc de
texte si le document ne contient pas de calque.
REMARQUE : Un objet contenant un objet est galement appel objet parent.
Dans votre premier script, vous avez tout dabord nomm lobjet application (ou vous lavez slectionn
dans lESTK), puis vous avez cr le document dans cette application. Si, comme tape suivante, vous
vouliez crer un calque, votre script aurait eu besoin didentifier le document dans lequel vous voulez crer
le calque. Si votre script nindique pas lapplication exactement o crer un objet, votre script choue.
REMARQUE : Pour consulter un tableau du DOM pour une application spcifique, reportez-vous au guide
dcriture de scripts de lapplication.
Donc, en utilisant votre principe DOM, comment ajoutez-vous un calque un document ? (Pour modifier
ce script pour Photoshop, notez quun calque est appel art layer en AS et les calques sont appels
artLayers en JS ou ArtLayers en VBS).
AS

tell application "Adobe Illustrator CS6"


make document
make layer in document
end tell

JS

app.documents.layers.add()

VBS

Set appRef = CreateObject("Illustrator.Application")


docRef.Documents.Add
appRef.Documents.Layers.Add

Si vous tentez dexcuter ces scripts, vous obtiendrez une erreur car lapplication ne sait pas quel document
choisir. Bien sr, vous navez quun seul document douvert mais cela ne sera pas toujours le cas.
En consquence, les langages de script sont soumis des conditions strictes spcifiant que tous les objets
soient explicitement identifis dans chaque instruction de script.

CHAPITRE 2 : Bases de lcriture de scripts

Utilisation des objets

11

Ce guide prsente trois moyens de faire rfrence aux objets :


X

Variables

Numros densemble ou dlment

Objet actuel ou proprit de lobjet actif

Variables
Une variable est un lment que vous crez pour contenir des donnes dans votre script. Les donnes,
appeles valeur de la variable, peuvent tre un objet de votre script ou une proprit qui dcrit un objet.
Vous pouvez galement considrer une variable comme un surnom que vous donnez un objet ou
dautres donnes.
Lutilisation dune variable pour contenir un objet facilite la rfrence cet objet. La plupart des rdacteurs
de script crent une variable pour chaque objet de leur script.
Les scripts suivants crent un document, comme vous lavez fait dans votre premier script. Nanmoins,
cette version du script cre une variable nomme myDoc pour contenir le document. Etudiez ces scripts,
puis comparez-les votre premier script. (Reportez-vous Par o dois-je commencer ? , page 8.)
AS

Pour crer une variable en langage AS, utilisez la commande set suivie par le nom de la variable. Pour
affecter une valeur de donnes la variable, utilisez to suivi de la valeur.
tell application "Adobe Illustrator CS6"
set myDoc to make document
end tell

JS

Pour crer une variable en langage JS, utilisez la commande var suivie par le nom de la variable. Pour
affecter une valeur de donnes, utilisez le symbole gal (=) suivi de la valeur. Les espaces nont aucune
importance de quelque ct que ce soit du symbole gal.
var myDoc = app.documents.add()

VBS

Pour crer une variable en langage VBS, utilisez la commande Set suivie du nom de la variable. Pour
affecter une valeur de donnes, utilisez le symbole gal (=) suivi de la valeur. Les espaces nont aucune
importance de quelque ct que ce soit du symbole gal.
Set appRef = CreateObject("Illustrator.Application")
Set docRef = appRef.Documents.Add

Les rfrences dobjet facilitent la vie


Maintenant que vous connaissez une mthode pour faire rfrence lobjet document cr dans le script,
il est facile dajouter le calque. (Pour modifier ce script pour Photoshop, notez quun calque est appel art
layer en AS et les calques sont appels artLayers en JS ou ArtLayers en VBS).
AS

tell application "Adobe Illustrator CS6"


set myDoc to make document
make layer in myDoc
end tell

CHAPITRE 2 : Bases de lcriture de scripts

Utilisation des objets

12

Mieux : vous pouvez crer une autre variable pour contenir le calque. Cela nous permettrait de faire
facilement rfrence au calque si nous souhaitions dfinir ses proprits ou ajouter un objet au calque.
tell application "Adobe Illustrator CS6"
set myDoc to make document
set myLayer to make layer in myDoc
end tell

JS

var myDoc = app.documents.add()


myDoc.layers.add()

Le mme script nouveau, cette fois-ci en crant une variable pour contenir le calque.
var myDoc = app.documents.add()
var myLayer = myDoc.layers.add()

VBS

Set appRef = CreateObject("Illustrator.Application")


Set docRef = appRef.Documents.Add
docRef.Layers.Add

Le mme script nouveau, cette fois-ci en crant une variable pour contenir le calque.
Set appRef = CreateObject("Photoshop.Application")
Set docRef = appRef.Documents.Add
Set layerRef = docRef.Layers.Add

Les variables offrent un raccourci convivial


Les variables qui contiennent des objets contiennent galement lensemble de la hirarchie de confinement
qui identifie lobjet. Par exemple, pour faire rfrence myLayer, vous navez pas besoin de faire rfrence
au document qui contient le calque. Les scripts suivants crent un bloc de texte dans myLayer. Notez que,
lorsque vous utilisez myLayer, vous navez pas besoin de fournir dinformations de hirarchie de confinement
relatives au calque.
REMARQUE : Le script suivant utilise la proprit contents pour ajouter du texte au bloc. Pour linstant,
ne vous souciez pas du mcanisme dutilisation des proprits.
Le script suivant utilise des objets et des proprits dfinis dans le modle objet Illustrator CS6 ; il ne
fonctionne donc pas pour, par exemple, InDesign ou Photoshop.
AS

tell application "Adobe Illustrator CS6"


set myDoc to make document
set myLayer to make layer in myDoc
set myTextFrame to make text frame in myLayer
set contents of myTextFrame to "Hello world!"
end tell

JS

var myDoc = app.documents.add()


var myLayer = myDoc.layers.add()
var myTextFrame = myLayer.textFrames.add()
myTextFrame.contents = "Hello world!"

VBS

Set
Set
Set
Set

appRef = CreateObject("Illustrator.Application")
docRef = appRef.Documents.Add
layerRef = docRef.Layers.Add
frameRef = layerRef.TextFrames.Add
myTextFrame.Contents = "Hello world!"

CHAPITRE 2 : Bases de lcriture de scripts

Utilisation des objets

13

Dnomination des variables


Vos scripts seront plus faciles lire si vous crez des noms descriptifs pour vos variables. Des noms de
variable comme x ou c naident pas beaucoup lorsque vous rtudiez un script. Les noms qui indiquent les
donnes que la variable contient sont plus appropris, comme theDocument ou myLayer.
Le fait de donner vos noms de variable un prfixe standard permet de diffrencier les variables des objets,
commandes et mots-cls de votre systme dcriture de scripts. Par exemple :
X

Vous pouvez utiliser le prfixe doc au dbut de chaque variable qui contient des objets Document,
par exemple docRef ou layer pour identifier les variables qui contiennent les objets Art Layer,
par exemple layerRef et layerRef2.

Vous pouvez utiliser le prfixe my pour ajouter un lment personnel qui distingue vos variables
des objets de script. Par exemple, myDoc ou myLayer ou myTextFrame.

Tous les noms de variable doivent se conformer aux rgles suivantes :


X

Les noms de variable doivent tre composs dun seul mot (sans espace). De nombreuses personnes
utilisent des majuscules (par exemple myFirstPage) ou des tirets longs (my_first_page) pour crer
des noms plus lisibles. Le nom de la variable ne peut pas commencer par un tiret long.

Les noms de variable peuvent contenir des chiffres mais ne peuvent pas commencer par un chiffre.

Ils ne peuvent pas contenir de guillemets ou de marques de ponctuation autres que le tiret long.

Les noms de variable en JavaScript et VBScript sont sensibles la casse. thisString est diffrent de
thisstring ou ThisString. Les noms de variable en AppleScript ne sont pas sensibles la casse.

Chaque variable de votre script doit avoir un nom unique.

Ensembles ou lments dobjets comme rfrences dobjet


Les langages de script placent chaque objet dans un ensemble (JS ou VBS) ou un lment (AS), puis affectent
un numro lobjet appel lindice au sein de llment ou de lensemble. Les objets dun lment ou dun
ensemble sont des types identiques dobjets. Par exemple, chaque objet channel de votre document
appartient un lment ou un ensemble channels ; chaque objet art layer appartient un lment art
layers ou un ensemble artLayers.
En franais, vous pouvez faire rfrence un document en disant Donnez-moi le premier document de
lensemble . Les langages de script vous permettent didentifier un objet de la mme manire, en utilisant
son nom dlment ou densemble et son indice.
X

En AS, vous faites rfrence au premier document de llment documents en tant que document 1.

En JS, le premier document est documents[0], (remarquez les crochets entourant lindice) car (et cest
difficile de sen souvenir au dbut) JavaScript commence numroter les objets dun ensemble par 0.

En VBS, le premier document est Documents(0), (remarquez la parenthse autour de lindice).


VBS commence la numrotation des objets dun ensemble par 1.

CHAPITRE 2 : Bases de lcriture de scripts

Utilisation des objets

14

Les scripts suivants rfrencent les objets document et layer par indice pour lajout de nouveaux objets.
REMARQUE : Comme le script suivant nutilise pas de variables, la totalit de la hirarchie de confinement
est requise dans chaque rfrence dobjet. Par exemple, dans linstruction qui ajoute un calque, le script
doit identifier le document auquel le calque sera ajout. Pour ajouter un bloc de texte au calque, le script
doit fournir lindice non seulement de la couche qui contiendra le bloc mais il doit galement identifier le
document qui contient le calque.
AS

tell application "Adobe InDesign CS6"


make document
make layer in document 1
make text frame in layer 1 of document 1
end tell

REMARQUE : Les rdacteurs de script dbutants utilisant AppleScript ne sont pas incits utiliser les numros
dlment comme rfrences dobjet lorsque llment contient plus dun objet. Pour plus dexplications,
reportez-vous Comment les lments et les ensembles numrotent les lments suivants ? , page 14.
JS

En JavaScript, vous indiquez lindice dun lment en utilisant le nom de lensemble suivi par lindice entre
crochets ([]).
app.documents.add()
app.documents[0].layers.add()
app.documents[0].layers[0].textFrames.add()

REMARQUE : Souvenez-vous, en langage JS, les numros dindice dun ensemble commencent par 0.
VBS

En VBScript, vous indiquez lindice dun lment en utilisant le nom de lensemble suivi de lindice entre
parenthses.
appRef.Documents.Add
appRef.Documents(1).Layers.Add
appRef.Documents(1).Layers(1).TextFrames.Add

Comment les lments et les ensembles numrotent les lments suivants ?


Voici comment les langages de script grent la numrotation automatique si vous ajoutez un second objet
un ensemble ou un lment :
X

AS affecte le numro 1 au nouvel objet et renumrote lobjet dj existant qui devient le numro 2.
Les numros dobjet AppleScript parcourent les objets pour indiquer lobjet sur lequel vous avez
travaill le plus rcemment. Ce processus peut rendre les longs scripts confus. En consquence, nous
encourageons les rdacteurs dbutants utiliser des variables comme rfrences dobjet et viter
lutilisation dindices.

Les numros densemble JS sont statiques ; ils ne changent pas lorsque vous ajoutez un nouvel objet
lensemble. La numrotation des objets sous JS indique lordre dans lequel les objets ont t ajouts
lensemble. Comme le premier objet que vous avez ajout a reu le numro 0, lobjet suivant que vous
ajoutez lensemble porte le numro 1 ; si vous ajoutez un troisime objet, il portera le numro 2.
Par exemple, lorsque vous ajoutez un document, le document contient automatiquement un calque.
Lindice du calque est [0]. Si vous ajoutez un calque, lindice du nouveau calque est [1] ; si vous ajoutez
un second calque, son indice est [2]. Si vous faites glisser le calque [2] en haut de la palette Calques,
il aura toujours lindice [2].

Les numros densemble VBS sont galement statiques et la numrotation seffectue exactement comme
pour les ensembles JS, la diffrence prs que le premier objet de lensemble est toujours (1) en VBS.

CHAPITRE 2 : Bases de lcriture de scripts

Utilisation des objets

15

CONSEIL : Dans les scripts JS et VBS, vous trouverez les numros dindice trs utiles comme rfrences
dobjet. Par exemple, vous avez peut-tre plusieurs fichiers pour lesquels vous souhaitez crer un calque
darrire-plan blanc. Vous pouvez rdiger un script qui dit Ouvrir tous les fichiers de ce dossier et changer
la couleur du premier calque en blanc . Si vous navez pas la possibilit de faire rfrence aux calques par
indice, vous devez inclure dans votre script les noms de tous les calques darrire-plan dans tous les fichiers.
REMARQUE : Les scripts sont des organisateurs compulsifs. Ils placent les objets dans des lments ou des
ensembles mme sil ny a quun seul objet de ce type dans la totalit de lensemble.
REMARQUE : Les objets peuvent appartenir plus dun ensemble ou dun lment. Par exemple, sous
Photoshop, les objets art layer appartiennent llment ou lensemble art layers et les objets
layer set appartiennent llment ou lensemble layer sets, mais les objets art layer et layer set
appartiennent tous llment ou lensemble layers. De mme, sous InDesign, les objets rectangle
appartiennent llment ou lensemble rectangles et les objets text frame appartiennent llment
ou lensemble text frames. Nanmoins, la fois les objets rectangle et les objets text frame
appartiennent galement llment ou lensemble page items qui contient toutes sortes dlments
sur une page, comme des ellipses, des lignes de graphique, des polygones, des boutons et dautres lments.

Rfrence lobjet actuel ou actif


Lorsque vous avez excut votre premier script et cr un nouveau document, lapplication sest ouverte,
puis a cr un document. Si vous vouliez modifier ce document dans linterface utilisateur de lapplication,
vous auriez pu simplement travailler avec la souris, les menus, la bote outils et les palettes car le document
a t automatiquement slectionn.
Cette assertion est vraie pour tous les objets que vous crez dans un script. Jusqu ce que le script fasse
quelque chose dautre, le nouvel objet est lobjet actif, prt tre modifi.
De faon pratique, de nombreux objets parents contiennent des proprits qui vous permettent de vous
rfrer facilement lobjet actif. (Vous en apprendrez plus sur les proprits un peu plus loin dans ce guide.
Pour linstant, vous pouvez simplement copier les instructions de script de cette section et observer
comment elles fonctionnent sans comprendre compltement pourquoi elles apparaissent de la sorte.)
X

En AS, la proprit qui fait rfrence un objet actif est compose du mot current et du nom de lobjet.
Quelques exemples :
current
current
current
current

document
layer
channel
view

En JS, le nom de la proprit est un mot compos de active et du nom de lobjet, selon lutilisation de
la casse standard de JS :
Z

Le premier mot est en minuscules.

Le second mot (et tous ceux qui suivent) utilisent des majuscules pour la premire lettre.

Quelques exemples :
activeDocument
activeLayer
activeChannel
activeView

CHAPITRE 2 : Bases de lcriture de scripts


X

Utilisation des proprits

16

VBS est identique JS sauf que tous les mots du terme compos utilisent une majuscule pour la
premire lettre. Quelques exemples :
ActiveDocument
ActiveLayer
ActiveChannel
ActiveView

Les scripts suivants crent un document, puis utilisent ce principe pour crer un calque dans le nouveau
document.
AS

tell application "Adobe Illustrator CS6"


make document
make layer in current document
end tell

JS

app.documents.add()
app.activeDocument.layers.add()

REMARQUE : Vrifiez que vous avez saisi activeDocument sans s la fin.


VBS

Set appRef = CreateObject("Illustrator.Application")


docRef.Documents.Add
appRef.ActiveDocument.Layers.Add

REMARQUE : Vrifiez que vous avez saisi ActiveDocument sans s la fin.

Utilisation des proprits


Pour dfinir ou modifier une proprit dun objet, vous devez faire trois choses :
1. Nommer lobjet.
2. Nommer la proprit.
3. Indiquer la valeur de la proprit.
La valeur peut tre un des types de donnes suivants (nimporte lequel) :
X

Une chane, qui est du texte alphanumrique, qui est interprte comme du texte. Les chanes doivent
tre entoures de guillemets (" "). Les chanes incluent des valeurs comme le nom dun objet.

Un nombre qui est une valeur numrique pouvant tre utilise dans des oprations mathmatiques
comme laddition ou la division. Les nombres mathmatiques incluent la longueur dun ct dun bloc
ou lespace entre des paragraphes, le pourcentage dopacit, la taille de police, lpaisseur du contour,
etc.
Notez que certaines valeurs qui ressemblent des nombres sont en fait des chanes. Par exemple, un
numro de tlphone ou de scurit sociale sont des nombres mais vous les formateriez comme chanes
(entre guillemets) car les donnes ne seraient pas considres comme des nombres mathmatiques.

CHAPITRE 2 : Bases de lcriture de scripts

Utilisation des proprits

17

Au sein de la catgorie numrique, il existe diffrents types de nombres :


Z

Nombre entier qui est un nombre sans dcimale.

Nombres rel, fixe, court, long ou double qui sont des numros qui peuvent inclure des dcimales,
comme 5,9 ou 1,0.

Remarque :Ces diffrences peuvent sembler futiles mais gardez-les lesprit pour plus tard.
X

Une variable. Lorsque vous utilisez une variable comme valeur de la proprit, vous ne placez pas la
variable entre des guillemets comme vous le feriez pour une chane.

Une valeur boolenne, qui est soit true ou false.

REMARQUE : Souvent, les valeurs boolennes agissent comme des interrupteurs.


X

Une valeur constante (galement appele enumeration) qui est un ensemble prdfini de valeurs dans
lequel vous pouvez effectuer une slection. Lutilisation de valeurs constantes pour une proprit est
similaire en termes de concept lutilisation dun menu droulant dans une application Adobe. Les
constantes ainsi que leur mode dutilisation sont prsents dans Valeurs constantes et numrations ,
page 21.

Une liste (AS) ou un tableau (JS et VBS).


Certaines proprits requirent plusieurs valeurs comme les coordonnes demplacement dun point
(coordonnes x et y) ou les limites dun bloc de texte ou dun objet gomtrique. Des valeurs multiples
pour une seule proprit sont appeles liste en AS et tableau en JS ou VBS. Chaque langage spcifie
des rgles de formatage.
Z

La liste ou le tableau doit tre prsent(e) comme suit :


En AS, la liste est entoure daccolades : {}
En JS, le tableau est entour de crochets : []
En VBS, le tableau est entour de parenthses et suit le mot-cl Array: Array()

Les valeurs sont spares par une virgule (,). Vous pouvez inclure ou omettre des espaces aprs
les virgules ; cela na pas dimportance.
AS

{3,4,5} ou {"string1", "string2", "string3"}

JS

[3,4,5] ou ["string1", "string2", "string3"]

VBS

Array(3,4,5)ou Array("string1", "string2", "string3")

Une liste ou un tableau peut inclure des listes ou des tableaux imbriqus, comme une liste de
coordonnes. Dans les exemples suivants, remarquez que chaque tableau imbriqu est entour
individuellement daccolades, de parenthses ou de crochets et que les tableaux imbriqus sont
spars par des virgules.
AS

{{x1, y1}, {x2, y2}, {x3, y3}}

JS

[[x1, y1], [x2, y2], [x3, y3]]

VBS

Array(Array(x1, y1), Array(x2, y2), Array(x3, y3))

CHAPITRE 2 : Bases de lcriture de scripts

Utilisation des proprits

18

AS
Pour utiliser les proprits en langage AS, utilisez la commande set suivie du nom de la proprit,
puis saisissez of suivi de la rfrence dobjet. Le script suivant dfinit la proprit name de lobjet layer.
tell application "Adobe Illustrator CS6"
set myDoc to make document
set myLayer to make layer in myDoc
set name of myLayer to "My New Layer"
end tell

Vous pouvez dfinir plusieurs proprits dans une seule instruction en utilisant la proprit properties.
Vous formatez les proprits multiples dans un tableau, entour daccolades. Dans le tableau, sparez
chaque paire de nom/valeur de proprit par deux points (:). Le script suivant utilise properties pour
dfinir le nom du calque et ltat de visibilit.
tell application "Adobe Illustrator CS6"
set myDoc to make document
set myLayer to make layer in myDoc
set properties of myLayer to {name:"My New Layer", visible:false}
end tell

REMARQUE : Notez que, dans le script ci-dessus, seule la valeur de la chane "Mon nouveau calque" est entre
guillemets. La valeur de la proprit visible, false peut ressembler une chane mais il sagit dune valeur
boolenne. Pour consulter les types de valeurs, reportez-vous Utilisation des proprits , page 16.
Vous pouvez dfinir les proprits dun objet dans linstruction qui cre lobjet, comme dans les scripts
ci-dessous.
tell application "Adobe Illustrator CS6"
set myDoc to make document
set myLayer to make layer in myDoc with properties {name:"My New Layer"}
end tell
tell application "Adobe Illustrator CS6"
set myDoc to make document
set myLayer to make layer in myDoc with properties {name:"My New Layer",
visible:false}
end tell

JS
Pour utiliser une proprit en langage JS, nommez lobjet que vous souhaitez que la proprit dfinisse ou
modifie, insrez un point (.), puis nommez la proprit. Pour indiquer la valeur, placez un symbole gal (=)
aprs le nom de la proprit, puis saisissez la valeur.
var myDoc = app.documents.add()
var myLayer = myDoc.layers.add()
myLayer.name = "My New Layer"

Pour dfinir des proprits multiples, vous pouvez rdiger plusieurs instructions :
var myDoc = app.documents.add()
var myLayer = myDoc.layers.add()
myLayer.name = "My New Layer"
myLayer.visible = false

CHAPITRE 2 : Bases de lcriture de scripts

Utilisation des proprits

19

REMARQUE : Notez que, dans le script ci-dessus, seule la valeur de la chane "Mon nouveau calque" est entre
guillemets. La valeur de la proprit visible, false peut ressembler une chane mais il sagit dune valeur
boolenne. Pour consulter les types de valeurs, reportez-vous Utilisation des proprits , page 16.
JS fournit un abrg pour dfinir des proprits multiples appel instruction with. Pour utiliser une
instruction with, utilisez le mot with suivi de lobjet dont vous souhaitez dfinir les proprits, en entourant
la rfrence dobjet de parenthses (()). Ne saisissez pas despace entre with et la premire parenthse.
Ensuite, saisissez une accolade ouverte ({), puis appuyez sur Entre et saisissez un nom et une valeur de
proprit sur la ligne suivante. Pour fermer linstruction with, saisissez une accolade ferme (}).
var myDoc = app.documents.add()
var myLayer = myDoc.layers.add()
with(myLayer){
name = "My New Layer"
visible = false
}

Lutilisation dune instruction with vous pargne davoir saisir la rfrence dobjet suivie dun point (dans
ce cas, myLayer.) pour chaque proprit. Lorsque vous utilisez une instruction with, noubliez jamais
laccolade ferme.
JS fournit galement une proprit properties qui vous permet de dfinir plusieurs valeurs dans une
seule instruction. Incluez lensemble du groupe de valeurs dans des accolades ({}). A lintrieur des
accolades, utilisez deux points (:) pour sparer un nom de proprit de sa valeur et sparez les paires
nom/valeur de proprit laide dune virgule (,).
var myDoc = app.documents.add()
var myLayer = myDoc.layers.add()
myLayer.properties = {name:"My New Layer", visible:false}

VBS
Pour utiliser des proprits en langage VBS, nommez lobjet, insrez un point (.), puis nommez la proprit.
Pour indiquer la valeur, placez un symbole gal (=) aprs le nom de la proprit, puis saisissez la valeur.
Set appRef = CreateObject("Illustrator.Application")
Set myDoc = appRef.Documents.Add
Set myLayer = myDoc.Layers.Add
myLayer.Name = "My First Layer"

Vous ne pouvez dfinir quune seule proprit par instruction. Pour dfinir des proprits multiples,
vous devez rdiger plusieurs instructions :
Set appRef = CreateObject("Illustrator.Application")
Set myDoc = appRef.Documents.Add
Set myLayer = myDoc.Layers.Add
myLayer.Name = "My First Layer"
myLayer.Opacity = 65
myLayer.Visible = false

REMARQUE : Notez que, dans le script ci-dessus, seule la valeur de la chane "Mon nouveau calque" est entre
guillemets. La valeur de la proprit Visible, false peut ressembler une chane mais il sagit dune valeur
boolenne. Pour consulter les types de valeurs, reportez-vous Utilisation des proprits , page 16.

CHAPITRE 2 : Bases de lcriture de scripts

Utilisation des proprits

20

Utilisation des proprits lecture seule et lecture-criture


Lors de la dfinition des valeurs de proprit, vous pouvez rdiger une instruction de script avec une syntaxe
parfaite mais linstruction ne produit aucun rsultat. Cela peut se produire lorsque vous tentez de dfinir
une proprit qui nest pas en criture ; la proprit est en lecture seule.
Par exemple, la proprit name de lobjet document de la plupart des applications Adobe est en lecture
seule ; en consquence, vous ne pouvez pas utiliser un script pour dfinir ou modifier le nom dun document
existant (bien que vous puissiez utiliser une commande ou mthode save as ; reportez-vous Utilisation
de mthodes ou commandes , page 24 pour plus dinformations). Alors pourquoi se proccuper davoir
une proprit que vous ne pouvez pas dfinir, pourriez-vous demander. La rponse est que les proprits
en lecture seule sont des sources non ngligeables dinformations. Par exemple, vous pouvez vouloir
connatre quel est le nom dun document ou combien de documents figurent dans lensemble Documents.

Utilisation des avertissements de scurit pour afficher la valeur dune


proprit
Une manire conviviale dafficher les informations dune proprit en lecture seule est dutiliser
lavertissement de scurit. Il sagit dune petite bote de dialogue qui affiche simplement des informations.
Vous pouvez utiliser les avertissements de scurit pour afficher la valeur de nimporte quelle proprit :
lecture-criture ou lecture seule.
AS
Pour afficher un avertissement de scurit en AS, saisissez display dialog, puis entrez le contenu de la
bote de dialogue entre parenthses (()). Pour savoir combien dobjets figurent dans un lment, utilisez
la commande count avec nimporte quel nom dlment.
REMARQUE : Le nom dlment est la forme plurielle de lobjet. Par exemple, llment de lobjet document
est lobjet documents.
Le script suivant affiche un avertissement de scurit qui vous indique combien de documents figurent
dans llment documents, puis ajoute un document et affiche une nouvelle alerte avec le nombre mis
jour.
tell application "Adobe Photoshop CS6"
display dialog (count documents)
set myDoc to make document
display dialog (count documents)
end tell

Pour quune valeur de chane saffiche dans un avertissement de scurit, vous devez stocker la valeur de
chane dans une variable. Le script suivant convertit le nom du document en une variable nomme myName,
puis affiche la valeur de myName.
tell application "Adobe Photoshop CS6"
set myDoc to make document
set myName to name of myDoc
display dialog myName
end tell

CHAPITRE 2 : Bases de lcriture de scripts

Utilisation des proprits

21

JS
Pour afficher un avertissement de scurit en JS, utilisez la mthode alert() en saisissant alert, puis en
entrant le contenu de la bote de dialogue entre parenthses (()). Ne saisissez pas despace entre alert et
la premire parenthse. Pour savoir combien dobjets figurent dans un ensemble, utilisez la proprit
length (en lecture seule) de nimporte quel objet de lensemble. Le script suivant affiche un avertissement
de scurit qui vous indique combien de documents figurent dans lensemble documents, puis ajoute un
document et affiche une nouvelle alerte avec le nombre mis jour.
REMARQUE : Le nom de lensemble est la forme plurielle de lobjet. Par exemple, lobjet densemble de lobjet
document est lobjet documents.
alert(app.documents.length)
var myDoc = app.documents.add()
alert(app.documents.length)

Le script suivant affiche le nom du document dans un avertissement de scurit.


var myDoc = app.documents.add()
alert(myDoc.name)

VBS
Pour afficher un avertissement de scurit en VBS, utilisez la mthode MsgBox en saisissant MsgBox, puis
en entrant le contenu de la bote de dialogue entre parenthses (()). Ne saisissez pas despace entre
MsgBox et la premire parenthse. Pour savoir combien dobjets figurent dans un ensemble, utilisez la
proprit Count (en lecture seule) de nimporte quel objet de lensemble. Le script suivant affiche un
avertissement de scurit qui vous indique combien de documents figurent dans lensemble Documents,
puis ajoute un document et affiche une nouvelle alerte avec le nombre mis jour.
REMARQUE : Lensemble de lobjet est la forme plurielle de lobjet. Par exemple, lobjet densemble de lobjet
Document est lobjet Documents.
Set appRef = CreateObject("Photoshop.Application")
MsgBox(appRef.Documents.Count)
Set myDoc = appRef.Documents.Add
MsgBox(appRef.Documents.Count)

Le script suivant affiche le nom du document dans un avertissement de scurit.


Set appRef = CreateObject("Photoshop.Application")
Set myDoc = appRef.Documents.Add
MsgBox(myDoc.Name))

Valeurs constantes et numrations


Certaines valeurs de proprits sont prdfinies par lapplication. Par exemple, dans la plupart des
applications, lorientation de la page peut tre paysage ou portrait. Lapplication naccepte que lune de ces
deux valeurs. Elle naccepte pas vertical , droit , horizontal ou sur le ct . Pour garantir que votre
script fournit une valeur acceptable pour la proprit dorientation de page dun document, la proprit a
t crite pour naccepter quune valeur prdfinie.
Dans lcriture de scripts, ces valeurs prdfinies sont appeles constantes ou numrations.
Lutilisation dune constante ou dune numration est similaire lutilisation dune liste droulante dans
linterface utilisateur dune application.

CHAPITRE 2 : Bases de lcriture de scripts

Utilisation des proprits

22

REMARQUE : Pour savoir si vous devez utiliser une numration pour une valeur de proprit, recherchez la
proprit dans lune des rfrences de lcriture de scripts fournies par Adobe. Pour plus dinformations,
reportez-vous au Chapitre 3, Recherche de proprits et de mthodes dobjets .

AS
En langage AS, vous utilisez des constantes comme vous le feriez avec nimporte quelle autre dfinition de
proprit. Nentourez pas la constante de guillemets. Le script suivant utilise la valeur de constante dark
green pour dfinir la couleur dun nouveau calque.
tell application "Adobe Illustrator CS6"
set myDoc to make document
set myLayer to make layer in myDoc
set layer color of myLayer to dark green
end tell

REMARQUE : Si dark green tait une valeur de chane et non une constante, elle serait entoure de guillemets :
set layer color of myLayer to "dark green"

JS
En langage JS, saisissez le nom de lnumration, un point (.), puis la valeur de lnumration. Vous devez
utiliser lorthographe et lemploi de majuscules exacts dfinis dans les rfrences de lcriture de scripts
fournies par Adobe. Le formatage diffre selon les applications Adobe. Par exemple :
X

Sous InDesign :
Z

Chaque numration commence par une lettre majuscule et tous les mots du terme compos
commencent galement par une lettre majuscule.

La valeur dnumration commence par une minuscule.


Lexemple suivant utilise lnumration UIColor pour dfinir la couleur du calque sur vert fonc.
var myDoc = app.documents.add()
var myLayer = mydoc.layers.add()
myLayer.layerColor = UIColor.darkGreen

Sous Illustrator :
Z

Chaque numration commence par une lettre majuscule et tous les mots du terme compos
commencent galement par une lettre majuscule.

Certaines valeurs dnumration commencent par une lettre majuscule, puis utilisent des lettres
minuscules. Les autres utilisent uniquement des majuscules. Vous devez vous assurer dutiliser la
valeur exactement comme elle apparat dans la rfrence de lcriture de scripts.
Lexemple suivant utilise lnumration RulerUnits pour dfinir lunit par dfaut sur centimtres.
var myDoc = app.documents.add()
myDoc.rulerUnits = RulerUnits.Centimeters

CHAPITRE 2 : Bases de lcriture de scripts

Utilisation des proprits

23

Le script suivant utilise lnumration BlendModes dont les valeurs sont exprimes en lettres
majuscules uniquement.
var myDoc = app.documents.add()
var myLayer = myDoc.layers.add()
myLayer.blendingMode = BlendModes.COLORBURN
X

Sous Photoshop :
Z

Chaque numration commence par une lettre majuscule et tous les mots du terme compos
commencent galement par une lettre majuscule.

Les valeurs dnumration sont uniquement constitues de majuscules.


Lexemple suivant utilise lnumration LayerKind pour faire du calque un calque de texte.
var myDoc = app.documents.add()
var myLayer = mydoc.artLayers.add()
myLayer.kind = LayerKind.TEXT

VBS
En langage VBS, vous utilisez des valeurs numriques pour les constantes.
Set appRef = CreateObject("Photoshop.Application")
Set docRef = appRef.Documents.Add
Set layerRef = docRef.ArtLayers.Add
layerRef.Kind = 2

Utilisation de variables pour les valeurs de proprit


Vous pouvez utiliser des variables pour contenir des valeurs de proprit. Cela peut vous aider mettre
jour un script rapidement et avec prcision. Par exemple, vous avez une publication dont toutes les photos
sont au format 10 x 15 cm. Si vous utilisez une variable pour dfinir la hauteur et la largeur et que les mesures
changent, vous navez qu modifier les valeurs dune variable au lieu de modifier les mesures de chaque
photo du document.
Le script suivant cre des variables pour contenir les valeurs de largeur et de hauteur du document, puis
utilise les variables comme valeurs dans linstruction qui modifie la largeur et la hauteur.
AS

tell application "Adobe Illustrator CS6"


set myDoc to make document with properties {height:10, width:7}
set docHeight to height of myDoc
set docWidth to width of myDoc
set myDoc with properties {height:docHeight - 2, width:docWidth - 2}
end tell

JS

var myDoc = app.documents.add(7, 10)


var docHeight = myDoc.height
var docWidth = myDoc.width
myDoc.resizeCanvas((docHeight - 2), (docWidth - 2))

CHAPITRE 2 : Bases de lcriture de scripts

VBS

Utilisation de mthodes ou commandes

24

Set appRef = CreateObject("Photoshop.Application")


Set myDoc = appRef.Documents.Add(7, 10)
docHeight = myDoc.Height
docWidth = myDoc.Width
myDoc.ResizeCanvas docWidth - 2, docHeight - 2

REMARQUE : La mthode MsgBox ne fonctionne pas lorsque vous ouvrez un script dans le menu Scripts de
certaines applications Adobe. Pour afficher correctement la bote de dialogue de message, double-cliquez
sur le fichier de script dans Windows Explorer.

Utilisation de mthodes ou commandes


Les commandes (en AS) et les mthodes (en VBS et JS) sont des instructions que vous ajoutez un script
pour effectuer des tches ou obtenir des rsultats. Par exemple, vous pouvez utiliser la commande/mthode
print/print()/PrintOut pour imprimer un document.
AS

Les commandes AS apparaissent au dbut dune instruction de script comme un verbe limpratif.
La commande est suivie par une rfrence lobjet sur lequel vous souhaitez que la commande agisse.
Le script suivant imprime le document actif :
tell application "Adobe InDesign CS6"
print current document
end tell

JS

Vous insrez des mthodes la fin des instructions JS. Vous devez placer un point avant le nom de la
mthode, puis vous indiquez le nom de la mthode entre parenthses (()).
app.activeDocument.print()

VBS

Vous insrez des mthodes la fin des instructions VBS. Vous devez placer un point avant le nom de la
mthode.
Set appRef = CreateObject("Photoshop.Application")
appRef.ActiveDocument.PrintOut

Paramtres des commandes ou mthodes


Certaines commandes ou mthodes requirent des donnes supplmentaires, appeles arguments ou
paramtres. Les commandes ou les mthodes peuvent galement inclure des paramtres supplmentaires.

Paramtres requis
Les scripts suivants utilisent la commande merge qui requiert des indications relatives aux calques que
vous souhaitez fusionner dans le calque slectionn. Comme les proprits, les paramtres des commandes
sont entours daccolades ({}). Nanmoins, nincluez que la valeur du paramtre, et non le nom du
paramtre, entre les accolades.
REMARQUE : Ce script est conu pour InDesign. Il nexiste pas dopration de fusion dans Illustrator. Pour
modifier ce script pour Photoshop, notez quun calque est appel art layer en AS et les calques sont
appels artLayers en JS ou ArtLayers en VBS).

CHAPITRE 2 : Bases de lcriture de scripts

Utilisation de mthodes ou commandes

25

AS
tell application "Adobe InDesign CS6"
set myDoc to make document
set myLayer to make layer in myDoc
set myLayer2 to make layer in myDoc
merge myLayer2 with {myLayer}
end tell

JS
Le paramtre de la mthode est entour de parenthses qui suivent le nom de la mthode.
var myDoc = app.documents.add()
var myLayer = myDoc.layers.add()
var myLayer2 = myDoc.layers.add()
myLayer2.merge(myLayer)

VBS
Notez que le paramtre de mthode est entour de parenthses aprs le nom de la mthode. Ne saisissez
pas despace avant la premire parenthse.
Set appRef = CreateObject("InDesign.Application")
Set myDoc = appRef.Documents.Add
Set myLayer = myDoc.Layers.Add
Set myLayer2 = myDoc.Layers.Add
myLayer2.Merge(myLayer)

Paramtres multiples
Lorsque vous dfinissez plus dun paramtre pour une commande ou une mthode, vous devez suivre des
rgles spcifiques.
AS
Il existe deux types de paramtres pour les commandes AS :
X

Un paramtre direct qui dfinit lobjet direct de laction excute par la commande

Des paramtres libells qui sont tous les paramtres autres que les paramtres directs

Le paramtre direct doit suivre directement la commande. Dans linstruction suivante, la commande est
make et le paramtre direct est document.
make document

CHAPITRE 2 : Bases de lcriture de scripts

Utilisation de mthodes ou commandes

26

Vous pouvez insrer des paramtres libells dans nimporte quel ordre. Le script suivant cre deux calques
et dfinit lemplacement et le nom de chaque couche. Notez que, dans les instructions qui crent les calques,
les paramtres location et name apparaissent dans des ordres diffrents.
tell application "Adobe InDesign CS6"
set myDoc to make document
tell myDoc
set myLayer to make layer at beginning of myDoc with properties {name:"Lay1"}
set myLayer2 to make layer with properties {name:"Lay2"} at end of myDoc
end tell
end tell

JS
En JS, vous devez saisir des valeurs de paramtres dans lordre dans lequel ils sont rpertoris dans les
ressources de rfrence de lcriture de scripts afin que le compilateur de scripts connaisse quelle valeur
dfinit quel paramtre.
REMARQUE : Pour plus dinformations sur les ressources de rfrence de lcriture de scripts, reportez-vous
au Chapitre 3, Recherche de proprits et de mthodes dobjets .
Pour ignorer un paramtre en option, saisissez la balise demplacement undefined. Linstruction suivante
cre un document Photoshop CS6 dont la largeur est 4 000 pixels, la hauteur 5 000 pixels, la rsolution 72,
le nom Mon document . Le mode du document est bitmap.
app.documents.add(4000, 5000, 72, "My Document", NewDocumentMode.BITMAP)

Linstruction suivante cre un document identique sauf que la rsolution nest pas dfinie.
app.documents.add(4000, 5000, undefined, "My Document", NewDocumentMode.BITMAP)

REMARQUE : Utilisez la balise demplacement undefined uniquement pour atteindre les paramtres
dfinir. Linstruction suivante dfinit uniquement la hauteur et la largeur du document ; les balises
demplacement ne sont pas ncessaires pour les paramtres en option suivants.
app.documents.add(4000, 5000)

VBS
En VBS, vous devez saisir des valeurs de paramtres dans lordre dans lequel ils sont rpertoris afin que le
compilateur de scripts connaisse quelle valeur dfinit quel paramtre.
Pour ignorer un paramtre en option, saisissez la balise demplacement undefined. Linstruction suivante
cre un document Photoshop CS6 dont la largeur est 4 000 pixels, la hauteur 5 000 pixels, la rsolution 72,
le nom Mon document . Le mode du document est bitmap.
Set appRef = CreateObject("Photoshop.Application")
Set myDoc = appRef.Documents.Add(4000, 5000, 72, "My Document", 5)

Linstruction suivante cre un document identique sauf que la rsolution nest pas dfinie.
Set appRef = CreateObject("Photoshop.Application")
Set myDoc = appRef.Documents.Add(400, 500, undefined, "My Document", 5)

CHAPITRE 2 : Bases de lcriture de scripts

Instructions Tell (AS uniquement)

27

REMARQUE : Utilisez la balise demplacement undefined uniquement pour atteindre les paramtres
dfinir. Linstruction suivante dfinit uniquement la hauteur et la largeur du document ; les balises
demplacement ne sont pas ncessaires pour les paramtres en option suivants.
Set appRef = CreateObject("Photoshop.Application")
Set myDoc = appRef.Documents.Add(4000, 5000)

La balise demplacement undefined nest pas sensible la casse.

Instructions Tell (AS uniquement)


Vous avez peut-tre remarqu que les exemples AppleScript commencent et se terminent par les
instructions :
tell application "Nom de lapplication"
end tell

Linstruction tell nomme lobjet par dfaut qui excute toutes les commandes contenues dans linstruction.
Dans lexemple prcdent, linstruction tell cible lobjet application. En consquence, toute commande
contenue dans linstruction doit tre excute par lobjet application sauf si un autre objet est explicitement
nomm dans une instruction de script dans linstruction tell.
Le script suivant prsente clairement la totalit de la hirarchie de confinement de chaque objet afin
dindiquer lobjet cibl par la commande :
tell application "Adobe InDesign CS6"
set myDoc to make document
set myLayer to make layer in myDoc
set myLayer2 to make layer in myDoc
end tell

Vous pouvez crer un raccourci en changeant la cible de la commande. Pour ce faire, ajoutez une instruction
tell imbrique. Le script suivant effectue exactement la mme opration que le script prcdent. Puisque
linstruction tell imbrique cible lobjet document, il nest pas ncessaire de faire rfrence lobjet
document dans les instructions qui crent les calques.
tell application "Adobe InDesign CS6"
set myDoc to make document
tell myDoc
set myLayer to make layer
set myLayer2 to make layer
end tell
end tell

Notez que chaque instruction tell doit tre incluse dans sa propre instruction end tell.
Vous pouvez imbriquer autant dinstructions tell que vous le souhaitez.

CHAPITRE 2 : Bases de lcriture de scripts

Remarques sur les variables

28

Remarques sur les variables


Cette section fournit des informations supplmentaires sur lutilisation des variables.

Modification de la valeur dune variable


Vous pouvez modifier la valeur dune variable nimporte quel moment. Pour ce faire, utilisez simplement
le nom de la variable suivi de loprateur daffectation (to en AS ; = en JS ou VBS) et de la nouvelle valeur.
Les scripts suivants crent la variable layerRef pour contenir un nouveau calque, puis crent
immdiatement un second calque et laffectent comme nouvelle valeur de layerRef.
AS

Pour modifier la valeur dune variable en AS, utilisez la commande set.


tell application "Adobe Illustrator CS6"
set docRef to make document
set layerRef to make layer in myDoc with properties {name:"First Layer"}
set layerRef to make layer in myDoc with properties {name:"Second Layer"}
end tell

JS

Pour modifier la valeur dune variable en JS, utilisez le nom de la variable suivi du symbole gal (=) et de la
nouvelle valeur. Ne commencez pas linstruction de raffectation par var ; utilisez var uniquement lorsque
vous crez une nouvelle variable.
var docRef = app.documents.add()
var layerRef = myDoc.layers.add()
layerRef.name = "First Layer"
layerRef = myDoc.layers.add()
layerRef.name = "Second Layer"

VBS

Pour modifier la valeur dune variable en VBS, utilisez la commande Set.


Set appRef = CreateObject("Illustrator.Application")
Set docRef = appRef.Documents.Add
Set layerRef = docRef.Layers.Add
layerRef.Name = "First Layer"
layerRef = docRef.Layers.Add
layerRef.Name = "Second Layer"

Utilisation de variables pour faire rfrence des objets existants


Vous pouvez galement crer des variables pour contenir des objets existants.
AS

tell application "Adobe Photoshop CS6"


set myDoc to active document
end tell

JS

var myDoc = app.activeDocument

VBS

Set appRef = CreateObject("Illustrator.Application")


Set docRef = appRef.ActiveDocument

CHAPITRE 2 : Bases de lcriture de scripts

Rendre les fichiers de script lisibles

29

Rendre les fichiers de script lisibles


Cette section prsente deux options qui vous aident rendre les fichiers de script plus lisibles :
X

Commentaires

Sauts de ligne

Commenter le script
Un commentaire de script est un texte que le moteur de script ignore lorsquil excute le script.
Les commentaires sont trs utiles lorsque vous voulez documenter le fonctionnement ou lobjet dun script
(pour vous-mme ou pour quelquun dautre). La plupart des programmeurs, mme les plus qualifis,
prennent du temps pour insrer des commentaires pour presque chaque lment dun script. Les
commentaires peuvent ne pas vous sembler importants lorsque vous rdigez vos scripts mais vous serez
content davoir inclus des commentaires lorsque, un mois ou une anne plus tard, vous ouvrirez un script
et vous vous demanderez ce que vous aviez essay de faire et pourquoi.
AS

Pour commenter toute ou partie dune ligne en AS, saisissez deux traits dunion (--) au dbut du
commentaire. Pour commenter plusieurs lignes, entourez le commentaire par (* et *).
tell application "Adobe InDesign CS6"
--This is a single-line comment
print current document --this is a partial-line comment
--the hyphens hide everything to their right from the scripting engine
(* This is a multi-line
comment, which is completely
ignored by the scripting engine, no matter how
many lines it contains.
The trick is to remember to close the comment.
If you dont the rest of your script is
hidden from the scripting engine!*)
end tell

REMARQUE : La seule chose que fait ce script est dimprimer le document ouvert.
JS

Pour commenter toute ou partie dune ligne en JS, saisissez deux barres obliques (//) au dbut du
commentaire. Pour commenter plusieurs lignes, entourez le commentaire de /* et */.
//This is a single-line comment
app.activeDocument.print() //this part of the line is also a comment
/* This is a multi-line
comment, which is completely
ignored by the scripting engine, no matter how
many lines it contains.
Don?t forget the closing asterisk and slash
or the rest of your script will be commented out...*/

REMARQUE : La seule chose que fait ce script est dimprimer le document actif.

CHAPITRE 2 : Bases de lcriture de scripts

VBS

Rendre les fichiers de script lisibles

30

En VBS, saisissez Rem (pour remarque ) ou ' (une apostrophe simple droite) au dbut du commentaire.
VBS ne prend pas en charge les commentaires sur plusieurs lignes. Pour commenter plusieurs lignes en
une seule fois, commencez chaque ligne avec lun des deux formats de commentaire.
'This is a comment.
Set appRef = CreateObject("Photoshop.Application")
Rem This is also a comment.
appRef.ActiveDocument.PrintOut 'This part of the line is a comment.
' This is a multi-line
' comment that requires
' a comment marker at the beginning
' of each line.
Rem This is also a multi-line comment. Generally, multi-line
Rem comments in VBS are easier for you to identify (and read) in your scripts
Rem if they begin with a single straight quote (') rather than if they begin
Rem with Rem, because Rem can look like any other text in the script
' The choice is yours but isn?t this more easily
' identifiable as a comment than the preceding
' four lines were?

REMARQUE : La seule chose que fait ce script est dimprimer le document actif.

Continuer des lignes longues en AppleScript et VBScript


En AppleScript et VBScript, un retour chariot la fin dune ligne signale la fin dune instruction. Lorsque
votre script est trop long pour tenir sur une ligne, vous pouvez utiliser des caractres spciaux de
continuation - caractres qui insrent un saut de ligne, mais indiquent au script de lire la ligne coupe
comme une seule instruction.
REMARQUE : Vous pouvez galement tendre la fentre dditeur de scripts pour poursuivre linstruction
sur une seule ligne.
AS

Tapez le caractre (Option+Retour) pour couper une longue ligne tout en continuant linstruction.
tell application "Adobe InDesign CS6"
set myDoc to make document
set myLayer to make layer in myDoc with properties {name:"Mon premier calque"} at
the
beginning of myDoc (* sans le caractre de saut de ligne, AS considrerait que cette
ligne est une instruction incomplte*)
(* notez que les caractres de continuation ne sont pas requis dans un commentaire sur
plusieurs lignes
tel que celui-ci*)
set myLayer2 to make layer in myDoc with properties {name:"Mon autre calque"}
before myLayer
end tell

VBS

Saisissez un tiret long (_) suivi dun retour chariot pour couper une longue ligne tout en continuant
linstruction.
REMARQUE : Dans les deux langages, le caractre de continuation perd ses fonctionnalits sil est plac
lintrieur dune chane (cest--dire lintrieur de guillemets). Si le saut de ligne se produit au sein dune
valeur de chane, placez le caractre de saut avant la chane et insrez le saut de ligne avant.
REMARQUE : En JavaScript, les instructions peuvent contenir des retours chariot. Il nest donc pas ncessaire
dutiliser un caractre de continuation. Nanmoins, linterprteur ExtendScript interprte chaque ligne
comme une instruction complte. Ainsi, en gnral, il est prfrable dinsrer des retours uniquement la
fin des instructions.

CHAPITRE 2 : Bases de lcriture de scripts

Utilisation de tableaux

31

Utilisation de tableaux
En VBScript et JavaScript, les tableaux sont similaires des ensembles. Nanmoins, la diffrence des
ensembles, les tableaux ne sont pas crs automatiquement.
Vous pouvez vous reprsenter un tableau comme une liste de valeurs pour une seule variable. Par exemple,
le tableau JavaScript suivant rpertorie quatre valeurs pour la variable myFiles :
var myFiles = new Array ()
myFiles[0] = "clouds.bmp"
myFiles[1] = "clouds.gif"
myFiles[2] = "clouds.jpg"
myFiles[3] = "clouds.pdf"

Remarquez que chaque valeur est numrote. Pour utiliser une valeur dans une instruction, vous devez
inclure le numro. Linstruction suivante ouvre le fichier clouds.gif:
open(myFiles[1])

Lexemple suivant inclut les mmes instructions en VBScript :


Dim myFiles (4)
myFiles(0) = "clouds.bmp"
myFiles(1) = "clouds.gif"
myFiles(2) = "clouds.jpg"
myFiles(3) = "clouds.pdf"
appRef.Open myFiles(1)

REMARQUE : Alors que les indices des ensembles VBS commencent toujours la numrotation par (1), vous
pouvez indiquer dans vos scripts VBS si les tableaux que vous crez commencent la numrotation par (1)
ou (0). Pour savoir comment dfinir le numro de dbut dindice dun tableau, reportez-vous la
documentation VBScript. Pour plus dinformations sur les ensembles et les numros dindice, reportez-vous
Ensembles ou lments dobjets comme rfrences dobjet , page 13.

Cration dobjets
Votre premier script dmontrait comment crer un objet en utilisant la commande make (AS), la mthode
add() (JS) ou la mthode Add (VBS) de lobjet densemble de lobjet. Par exemple :
AS

tell application "Adobe Photoshop CS6"


make document
end tell

JS

app.documents.add()

VBS

Set appRef = CreateObject("Photoshop.Application")


appRef.Documents.Add()

Nanmoins, certains objets nont pas de commande make (AS), de mthode add() (JS) ou de mthode Add
(VBS). Pour crer des objets de ce type, reportez-vous la section Cration dobjets du chapitre correspondant
votre langage de script dans le guide dcriture de scripts Adobe de votre application.

CHAPITRE 2 : Bases de lcriture de scripts

Informations supplmentaires sur lcriture de scripts

32

Informations supplmentaires sur lcriture de scripts


Vous avez prsent suffisamment de connaissances pour crer des scripts simples qui excutent des tches
de base. Pour approfondir vos connaissances dans le domaine de lcriture de scripts, reportez-vous aux
documents suivants :
X

Techniques dcriture de scripts avances , page 46

Le guide dcriture de scripts Adobe de votre application.

Chapitre 6, Bibliographie

Recherche de proprits et de mthodes dobjets


Adobe fournit les ressources suivantes pour vous permettre de trouver et dutiliser les objets, mthodes ou
commandes, proprits, numrations et paramtres dont vous avez besoin pour crer des scripts efficaces.
X

Dictionnaires dobjets ou bibliothques de types. Chaque application Adobe compatible avec les scripts
fournit une bibliothque ou un dictionnaire de rfrence dans votre environnement dditeur de scripts.

Les documents de rfrence sur lcriture de scripts dAdobe (au format PDF) qui se trouvent sur votre
CD dinstallation. (Les documents de rfrence sur lcriture de scripts ne sont pas fournis avec toutes
les applications Adobe.)

Utilisation de navigateurs dans un environnement de script


Cette section explique comment afficher et utiliser des navigateurs dobjets dans un environnement de
script pour chaque langage de script.

Dictionnaires de donnes AppleScript


Les dictionnaires AppleScript sont disponibles dans lapplication Editeur de scripts dApple.

Affichage des dictionnaires AppleScript


REMARQUE : Lemplacement par dfaut de lapplication Editeur de scripts est Applications > AppleScript >
Editeur de scripts.
1. Dans lEditeur de scripts, choisissez Fichier > Ouvrir le dictionnaire. LEditeur de scripts affiche la bote
de dialogue Ouvrir un dictionnaire.
2. Choisissez votre application Adobe, puis cliquez sur Ouvrir. LEditeur de scripts ouvre lapplication
Adobe et affiche ensuite le dictionnaire de lapplication.

Utilisation des dictionnaires AppleScript


Le dictionnaire AS divise les objets en suites. Les noms de suites indiquent le type dobjets contenus dans
la suite.
Pour consulter les proprits dun objet :
1. Dans la fentre en haut gauche de lcran du dictionnaire, slectionnez la suite qui contient lobjet.
2. Slectionnez lobjet dans la fentre de la partie haute de lcran.
REMARQUE: Les objets sont indiqus par une icne carre :
ronde : .

; les commandes le sont par une icne

La description dun objet figure dans la fentre de visualisation infrieure. Les lments et proprits
dun objet sont numrs sous sa description. Chaque nom dlment constitue un lien hypertexte
vers le type dobjet de llment.

33

CHAPITRE 3 : Recherche de proprits et de mthodes dobjets

Utilisation de navigateurs dans un environnement de script

34

3. Chaque liste de proprits contient les informations suivantes :


Z

Le nom de la proprit.

Le type de donnes entre parenthses.


Si le type de donnes est un objet, ce type de donnes constitue un lien hypertexte vers lobjet.
Si le type de donnes est une numration, le type de donnes est anything (nimporte lequel).
Les valeurs valides sont listes aprs la description de la proprit et spares par des barres
obliques (/), elles sont galement prcdes de la mention Can return: .

La valeur daccs :
Si lobjet est en lecture seule, r/o apparat aprs le type de donnes.
Si lobjet est en lecture-criture, aucune valeur daccs nest donne.

Une description de la proprit.

1. Slectionnez une suite pour afficher les objets et


commandes de cette suite dans la fentre de la partie
haute de lcran.

2. Slectionnez
lobjet.

3. Affichez les
informations sur
lobjet dans la
fentre infrieure.
Description
de lobjet.
Liens vers les
lments de
lobjet.

Liste des
proprits.
Les types de donnes et valeurs daccs sont mis
entre parenthses aprs le nom de la proprit.
Remarque : La valeur daccs napparat que
lorsque la proprit est en lecture seule.

Les valeurs numres


sont prcdes de la
mention Can return: .

Affichage des commandes et des paramtres des commandes


REMARQUE : Le dictionnaire de donnes liste les objets que vous pouvez utiliser avec une commande.
Toutefois, il nindique pas les commandes que vous pouvez utiliser avec un objet. Pour afficher une liste
des commandes que vous pouvez utiliser avec un objet, reportez-vous la rfrence dcriture de scripts
AppleScript de votre application. Reportez-vous Utilisation des documents de rfrence Adobe relatifs
lcriture de scripts , page 41 pour plus dinformations.

CHAPITRE 3 : Recherche de proprits et de mthodes dobjets

Utilisation de navigateurs dans un environnement de script

35

Pour afficher les commandes dans le dictionnaire de donnes, suivez la procdure suivante :
1. Dans la fentre en haut gauche de lcran du dictionnaire de donnes, slectionnez la suite qui contient
la commande.
La fentre de la partie haute de lcran numre les commandes et objets contenus dans la suite.
2. Slectionnez la commande dans la fentre de la partie haute lcran.
REMARQUE : Les commandes sont indiques par une icne ronde :
icne carre :
.

; les objets sont indiqus par une

La description dune commande figure dans la fentre de visualisation infrieure.


Z

Sous la description, les objets avec lesquels vous pouvez utiliser la commande sont numrs.

Les paramtres sont numrs sous la liste des objets pris en charge.
Si le paramtre est optionnel, il est indiqu entre crochets ([ ]).
Si aucun crochet napparat avant et aprs le nom du paramtre, celui-ci est obligatoire.

Chaque nom de paramtre est suivi du type de donnes.


Si le type de donnes est un objet, ce type de donnes constitue un lien hypertexte vers lobjet.
Si le type de donnes est une numration, les valeurs valides sont prcdes de la mention
Can return: , puis listes et spares par des barres obliques (/).

1. Slectionnez une suite pour afficher les objets et


commandes de cette suite dans la fentre de la partie
haute de lcran.

2. Slectionnez la
commande.

3. Affichez les
informations sur la
commande dans la
fentre infrieure.
Description de
la commande.
Liste des objets
qui utilisent la
commande.
Paramtres,
avec les types
et descriptions
des donnes.

Les paramtres optionnels sont


indiqus entre crochets ([ ]).

Remarque : Lorsque la valeur du paramtre


est une numration, les valeurs numres
sont prcdes de la mention Can accept: .

CHAPITRE 3 : Recherche de proprits et de mthodes dobjets

Utilisation de navigateurs dans un environnement de script

36

Visionneuse de modle objet (Object Model Viewer) JavaScript


Vous pouvez utiliser lESTK install sur vos applications Adobe pour afficher les objets et mthodes
JavaScript disponibles pour votre application Adobe.
Pour plus dinformations sur laffichage et lutilisation de la visionneuse de modle objet JavaScript pour
votre application Adobe, reportez-vous au Guide JavaScript Tools .

Bibliothques de types VBScript


Vous pouvez utiliser lditeur Visual Basic (Visual Basic Editor) dans nimporte quelle application Microsoft
Office pour afficher les objets et mthodes VBScript disponibles pour votre application Adobe.
REMARQUE : Si vous utilisez un diteur diffrent, rfrez-vous son systme daide pour savoir comment
afficher les bibliothques de types.

Affichage des bibliothques de types VBScript


Pour afficher la bibliothque dobjets VBS, suivez la procdure suivante :
1. Dmarrez une application Microsoft Office, puis slectionnez Outils > Macro > Visual Basic Editor.
2. Dans la fentre Visual Basic Editor, choisissez Outils > Rfrences.
3. Dans la liste Rfrences disponibles de la bote de dialogue Rfrence - Project, slectionnez votre
application Creative Suite, puis cliquez sur OK.
4. Dans la fentre Visual Basic Editor, slectionnez Affichage > Explorateur dobjets.
5. Slectionnez votre application Adobe dans la liste droulante situe dans le coin suprieur gauche de
la fentre Explorateur dobjets.

Slectionnez
votre
application CS6
dans la liste
droulante.
Fentre
Classes.

Fentre
Membres de .

CHAPITRE 3 : Recherche de proprits et de mthodes dobjets

Utilisation de navigateurs dans un environnement de script

37

Utilisation des bibliothques de types VBScript


La bibliothque de types dobjets VBS affiche les objets et les constantes dans la fentre Classes situe
gauche dans la fentre Explorateur dobjets. Dans la fentre Classes :
X

Les objets sont indiqus par licne suivante :

Les constantes sont indiques par licne suivante :

Pour afficher les proprits et mthodes dun objet, slectionnez le type dobjet dans la fentre Classes.
Les proprits et mthodes sont listes dans la fentre Membres de situe droite de la fentre Classes.
X

Les proprits sont indiques par licne suivante :

Les mthodes sont indiques par licne suivante :

Utilisation de listes de proprits dans lExplorateur dobjets


Lorsque vous slectionnez une proprit dans la fentre Membres de, les informations concernant cette
proprit saffichent dans la fentre dinformations au bas de la fentre Explorateur dobjets comme suit :
X

Le nom de la proprit est suivi du type de donnes.


Z

Si le type de donnes est une constante, cette constante constitue un lien hypertexte vers les
valeurs de la constante. Les noms de constante commencent par un prfixe correspondant
labrviation du nom de lapplication Adobe. Par exemple :
Le prfixe Ps est utilis pour des numrations dans Photoshop CS6.
Exemples : PsColorProfileType, PsBitsPerChannelType
Le prfixe id est utilis pour des numrations dans InDesign CS6.
Exemples : idRenderingIntent, idPageOrientation
Le prfixe Ai est utilis pour les numrations dans Adobe Illustrator CS6.
Exemples : AiCropOptions, AiBlendModes

Si le type de donnes est un objet, le nom de lobjet constitue un lien hypertexte vers le type
dobjet.

CHAPITRE 3 : Recherche de proprits et de mthodes dobjets


X

Utilisation de navigateurs dans un environnement de script

38

La valeur daccs napparat que lorsque la proprit est en lecture seule. Si la proprit est en
lecture-criture, aucune valeur daccs napparat.

1. Slectionnez
la proprit
dans la fentre
Membres de .

Le type de
donnes
apparat ct
du nom de la
proprit.
La valeur
daccs nest
rpertorie que
lorsque laccs
est en lecture
seule.

La description de la proprit figure


au bas de la fentre dinformations.

CHAPITRE 3 : Recherche de proprits et de mthodes dobjets

Utilisation de navigateurs dans un environnement de script

39

Recherche de la valeur numrique dune numration


En langage VBS, la valeur numrique dune numration est utilise comme une valeur de proprit.
Par exemple, dans le script ci-dessous, le type de calque, reprsent par la proprit Kind dans la dernire
ligne du script, est dfini par la valeur numrique 2, qui reprsente la valeur de la constante TextLayer.
Set appRef = CreateObject("Photoshop.Application")
Set docRef = appRef.Documents.Add
Set layerRef = docRef.ArtLayers.Add
layerRef.Kind = 2 'PsTextLayer

Pour rechercher la valeur numrique dune numration, suivez la procdure suivante :


1. Cliquez sur le lien menant aux informations concernant lnumration.

Cliquez sur le
lien menant aux
informations
concernant
lnumration.

CHAPITRE 3 : Recherche de proprits et de mthodes dobjets

Utilisation de navigateurs dans un environnement de script

40

2. Cliquez sur la valeur dnumration pour afficher la valeur numrique dans la fentre du bas.

Cliquez sur la valeur


dnumration dans la
fentre de droite pour
afficher sa valeur
numrique dans la
fentre du bas.
Utilisation des listes de mthodes
Lorsque vous slectionnez une mthode dans la fentre Membres de , les informations concernant cette
mthode saffichent dans le volet dinformations au bas de la fentre Explorateur dobjets comme suit :
X

Le nom de la mthode est suivi des paramtres.


Z

Les paramtres optionnels sont indiqus entre crochets ([ ]).

Si aucun crochet napparat avant et aprs le nom du paramtre, celui-ci est obligatoire.

Chaque nom de paramtre est suivi du type de donnes.


Z

Si le type de donnes est un objet, ce type de donnes constitue un lien hypertexte vers lobjet.

Si le type de donnes est une numration, le nom de lnumration commence par les initiales
de lapplication et constitue un lien hypertexte vers les informations concernant lnumration.

Si une valeur par dfaut existe pour un paramtre, cette valeur est liste aprs le type de donnes,
aprs le symbole gal (=).

REMARQUE : La valeur par dfaut est utilise si vous ne dfinissez aucune valeur pour un paramtre.
Seuls les paramtres optionnels ont des valeurs par dfaut.

CHAPITRE 3 : Recherche de proprits et de mthodes dobjets

Le type de
donnes est
indiqu aprs
le nom de la
mthode.
Si le type de
donnes est une
numration,
le nom de
lnumration
commence par
les initiales de
lapplication et
constitue un lien
hypertexte vers
les informations
concernant
lnumration.

Utilisation des documents de rfrence Adobe relatifs lcriture de scripts

41

1. Slectionnez la
mthode dans la
fentre Membres
de .
Les paramtres sont
rpertoris entre
parenthses aprs le
nom de la mthode,
les paramtres
optionnels tant
indiqus entre
crochets ([ ]).
La description de la mthode
apparat au bas de la fentre
dinformations.

Sil existe une valeur par dfaut, celle-ci


est prcde du symbole gal (=).
Remarque : Nimporte quel type de
donnes peut avoir une valeur par dfaut.

Utilisation des documents de rfrence Adobe relatifs


lcriture de scripts
Adobe fournit des rfrences relatives lcriture de scripts pour de nombreuses applications. Les rfrences
figurent sur votre CD dinstallation.
Dans les rfrences relatives lcriture de scripts, chaque langage est document dans un chapitre
diffrent. Dans chaque chapitre, les objets sont numrs par ordre alphabtique. Les tableaux suivants
sont fournis pour chaque objet :
X

Elments (AS uniquement)

Proprits

Mthodes, commandes ou fonctions

De plus, la plupart des sections dobjets contiennent un exemple dcriture de script utilisant lobjet ainsi
que certaines de ses proprits, mthodes et commandes. Vous pouvez vous servir de nimporte quel script
comme exemple ou point de dpart pour votre propre script, dans lequel vous pourrez changer des
proprits ou des mthodes.

CHAPITRE 3 : Recherche de proprits et de mthodes dobjets

Utilisation des documents de rfrence Adobe relatifs lcriture de scripts

42

Utilisation du tableau dlments dun objet (AS uniquement)


Les lments sont les ensembles dobjets contenus par un objet. Lorsquun objet contient des lments,
un tableau indique les diffrents moyens de se rfrer aux lments. Pour ceux qui dbutent dans lcriture
de scripts, la chose la plus importante retenir concernant le tableau dlments est la colonne du nom ou
de llment, qui vous indique quels objets se trouvent directement en dessous de lobjet dans la hirarchie
de confinement. Par exemple, le tableau dlments suivant est tir dun objet document dans InDesign.
Nom

Rfrence par

character style

indice, nom, plage, relatif, satisfaire un test, ID

layer

indice, nom, plage, relatif, satisfaire un test, ID

story

indice, nom, plage, relatif, satisfaire un test, ID

Les informations que vous pouvez tirer de ce tableau sont que, dans les objets document que vous crez
pour cette application, vous pouvez crer des objets character style, layer et story.
Par exemple :
tell application "Adobe InDesign CS6"
set myDoc to make document
set myCharStyle to make character style in myDoc with properties {name:"Bold"}
set myLayer to make layer in myDoc
set myStory to make story in myDoc
end tell

Linstruction de script suivante produira une erreur car stroke style nest pas un lment de lobjet
document de cette application.
tell application "Adobe InDesign CS6"
set myDoc to make document
set myStrokeStyle to make stroke style in myDoc with properties {name:"Erratic"}
end tell

Utilisation du tableau de proprits dun objet


Le tableau de proprits dun objet contient les informations suivantes :
X

Les proprits que vous pouvez utiliser avec lobjet

Le type de valeur pour chaque proprit


Lorsque le type de valeur est une constante ou une numration, la valeur est prsente soit comme
une liste de valeurs valides, soit comme un lien hypertexte vers la liste de constantes.
Lorsque le type de valeur est un autre objet, la valeur est prsente comme un lien hypertexte vers la
liste dobjets.

Le statut dentre de la proprit : lecture seule ou lecture-criture

CHAPITRE 3 : Recherche de proprits et de mthodes dobjets


X

Utilisation des documents de rfrence Adobe relatifs lcriture de scripts

Une description qui comprend les informations suivantes :


Z

Une explication de ce que fait ou dfinit la proprit

Les plages de valeurs valides

Les dpendances dautres proprits

Lexemple suivant de tableau de proprits pour un objet art layer dans Photoshop contient des
exemples de chaque type de donnes.
Proprit

Type de valeur

Ce que cest

bounds

Tableau de 4
chiffres

Lecture seule. Un tableau de coordonnes qui dcrivent le rectangle


limitatif du calque au format [y1, x1, y2, x2].

kind

LayerKind

Lecture seule. Le type de calque.

name

string

Lecture-criture. Le nom du calque.

opacity

number (double)

Lecture-criture. Lopacit en pourcentage. (Plage : de 0.0 100.0)

textItem

Objet TextItem

Lecture seule. Llment de texte qui est associ au calque.


REMARQUE : Valide uniquement quand kind = LayerKind.TEXT.
Voir kind.

visible

Boolen

Lecture-criture. Si la valeur est true (vraie), le calque est visible.

Par exemple :
AS

tell application "Adobe Photoshop CS6"


set myDoc to make document
set myLayer to make art layer in myDoc
set properties of myLayer to {kind:text layer, name:"Captions", opacity:45.5,
visible:true}
set contents of text object in myLayer to "Photo Captions"
end tell

REMARQUE : Vous ne pouvez pas dfinir les limites du calque car la proprit bounds est en lecture seule.
JS

var myDoc = app.documents.add()


var myLayer = myDoc.artLayers.add()
alert(myLayer.bounds) // can't set the property because it is read-only
myLayer.kind = LayerKind.TEXT
myLayer.name = "Captions"
myLayer.opacity = 45.5 // can use a decimal point because the type is not integer
myLayer.textItem.contents = "Day 1: John goes to school"
//see the properties table for the textItem object to find the contents property
myLayer.visible = true

43

CHAPITRE 3 : Recherche de proprits et de mthodes dobjets

VBS

Utilisation des documents de rfrence Adobe relatifs lcriture de scripts

44

Set appRef = CreateObject("Photoshop.Application")


Set docRef = appRef.Documents.Add
Set layerRef = docRef.Layers.Add
msgBox(layerRef.Bounds) ' can?t set the property because it is read-only
layerRef.Kind = 2
layerRef.Name = "Captions"
layerRef.Opacity = 45.5 // can use a decimal point because the type is not integer
layerRef.TextItem.Contents = "Day 1: John goes to school"
//see the Properties table for the TextItem object to find the Contents property
layerRef.Visible = true

REMARQUE : En JS et VBS, les objets densemble sont conservs dans les proprits de lobjet qui les contient.
Pour dterminer la hirarchie de confinement dun objet, vous devez localiser lobjet ou les objets qui
utilisent lobjet densemble de cet objet (cest--dire, la forme plurielle de lobjet) en tant que proprit.
Par exemple, documents.layers ou layers.textFrames.

Utilisation du tableau de mthodes dun objet


Le tableau de mthodes dun objet contient les informations suivantes :
X

Les mthodes que vous pouvez utiliser avec lobjet

Le(s) paramtre(s) de chaque mthode

Lorsque le type de paramtre est une constante ou un autre objet, la valeur est prsente comme
un lien hypertexte vers la constante ou la liste dobjets. Dans lexemple suivant de tableau de
mthodes, les types de paramtres NewDocumentMode et DocumentFill sont des constantes.

Les paramtres peuvent tre obligatoires ou optionnels. Les paramtres optionnels sont indiqus
entre crochets ([]).

Le(s) type(s) de valeurs de retour, qui est (sont) ce que produit la mthode
Lorsque le retour est une constante ou un autre objet, la valeur est prsente comme un lien hypertexte
vers la constante ou la liste dobjets. Dans lexemple suivant de tableau de mthodes, la valeur de retour
Document est un objet.

Une description, qui dfinit ce que fait la mthode

Lexemple suivant de tableau de mthodes numre les paramtres pour la mthode add pour un
document Photoshop CS6.
Mthode

Type de paramtre

add
[width]
[, height]
[, resolution])
[, name]
[, mode])
[, initialFill]
[, pixelAspectRatio])

UnitValue
UnitValue
number (double)
string
NewDocumentMode
DocumentFill
number (double)

Retours

Ce que cela fait

Document

Ajoute un objet document.


(pixelAspectRatio
Plage : 0.10 10.00)

CHAPITRE 3 : Recherche de proprits et de mthodes dobjets

Utilisation des documents de rfrence Adobe relatifs lcriture de scripts

45

Dans le tableau prcdent :


X

Tous les paramtres sont optionnels, comme indiqu par la prsence des crochets.

Les paramtres width et height sont par dfaut les units de rgle actuelles et, en consquence, le
type de donnes est donc UnitValue. En dautres termes, si lunit de la rgle verticale est en pouces
et que celle de la rgle horizontale est en centimtres, linstruction suivante cre un document large
de 5 pouces et haut de 7 centimtres :

AS :

make document with properties {width:5, height:7}

JS :

app.documents.add(5, 7)

VBS :

appRef.Documents.Add(5, 7)

mode et initialFill prennent des valeurs constantes.

Les instructions de script suivantes dfinissent des valeurs pour chaque paramtre numr dans
lexemple de tableau des mthodes.
AS

make documement with properties {width:5, height:7, resolution:72, name:"Diary",


mode:bitmap, initial fill:transparent, pixel aspect ratio: 4.7}

JS

app.documents.add(5, 7, 72, "Diary", NewDocumentMode.BITMAP,


DocumentFill.TRANSPARENT, 4.7)

VBS

appRef.Documents.Add(5, 7, 72, "Diary", 5, 3, 4.7 )

Techniques dcriture de scripts avances


La plupart des scripts ne procdent pas de manire squentielle du dbut jusqu la fin. Il arrive souvent
que les scripts prennent des chemins diffrents selon les donnes obtenues partir du document en cours,
ou quils rptent les commandes multiples reprises. Les structures de contrle sont des fonctionnalits
de langage de script qui permettent vos scripts deffectuer de telles actions.

Instructions conditionnelles
instructions if
Si vous pouviez parler votre application Adobe, vous souhaiteriez pouvoir lui dire : si le document na
quun calque, cre un deuxime calque . Cela constitue un exemple dinstruction conditionnelle. Les
instructions conditionnelles prennent des dcisions ; elles donnent vos scripts un moyen dvaluer
quelque chose, comme le nombre de calques, et dagir en fonction du rsultat. Si la condition est satisfaite,
le script excute alors laction comprise dans linstruction if. Si la condition nest pas satisfaite, le script
ignore laction comprise dans linstruction if.
Chacun des scripts suivants ouvre un document puis vrifie si le document comprend un calque unique.
Sil nexiste quun seul calque, le script ajoute un calque et rgle lopacit de remplissage du nouveau
calque sur 65 %.
AS

Une instruction if en langage AS commence par le mot if suivi par la phrase de comparaison entre
parenthses, puis du mot then. Vous devez fermer linstruction if par end if.
tell application "Adobe Photoshop CS6"
--modify the hard-drive name at the beginning of the filepath, if needed
set myFilepath to alias "c:Applications:Adobe Photoshop CS6:Samples:Ducky.tif"
open myFilepath
set myDoc to current document
tell myDoc
if (art layer count = 1) then
set myLayer to make art layer with properties {fill opacity:65}
end if
end tell
end tell

REMARQUE : AS utilise un symbole gal unique (=) pour comparer les valeurs.
Fermez maintenant Ducky.tif et essayez nouveau le script en changeant linstruction if comme suit :
if (art layer count < 1) then

46

CHAPITRE 4 : Techniques dcriture de scripts avances

JS

Instructions conditionnelles

47

Une instruction if en langage JS commence par le mot if suivi par la phrase de comparaison entre
parenthses. Placez laction de linstruction if entre accolades ({}).
var myDoc = app.open(File("/c/Program Files/Adobe/Adobe Photoshop
CS6/Samples/Ducky.tif"));
if(myDoc.artLayers.length == 1){
var myLayer = myDoc.artLayers.add()
myLayer.fillOpacity = 65
}

REMARQUE : JavaScript utilise un symbole gal double (==) pour comparer les valeurs, au lieu dun symbole
gal simple (=) utilis pour affecter des valeurs aux proprits ou aux variables.
Fermez maintenant Ducky.tif et essayez nouveau le script en changeant linstruction if comme suit :
if(myDoc.artLayers.length < 1){

VBS

Une instruction if en langage VBS commence par le mot if suivi par la phrase de comparaison, puis du
mot then. Vous devez fermer linstruction if par End If.
Set appRef = CreateObject("Photoshop.Application")
Set myDoc = appRef.Open("/c/Program Files/Adobe/Adobe Photoshop
CS6/Samples/Ducky.tif")
If myDoc.ArtLayers.Count = 1 Then
Set myLayer = myDoc.ArtLayers.Add
myLayer.FillOpacity = 65
End If

REMARQUE : VBS utilise un symbole gal unique (=) la fois pour comparer et affecter les valeurs.
Fermez maintenant Ducky.tif et essayez nouveau le script en changeant linstruction if comme suit :
If myDoc.ArtLayers.Count < 1 Then

Instructions if else
Vous pouvez parfois avoir besoin de formuler des demandes lgrement plus complexes, telles que : si le
document a un calque, rgler lopacit de remplissage du calque sur 50 %, mais si le document a plusieurs
calques, rgler lopacit du calque actif sur 65 % . Ce type de situation ncessite une instruction if else.
AS

tell application "Adobe Photoshop CS6"


--modify the hard-drive name at the beginning of the filepath, if needed
set myFilepath to alias "c:Applications:Adobe Photoshop CS6:Samples:Ducky.tif"
open myFilepath
set myDoc to current document
tell myDoc
if (count of art layers < 2) then
set fill opacity of current layer to 50
else
set fill opacity of current layer to 65
end if
end tell
end tell

CHAPITRE 4 : Techniques dcriture de scripts avances

JS

var myDoc = app.open(File("/c/Program Files/Adobe/Adobe Photoshop


CS6/Samples/Ducky.tif"));
if(myDoc.artLayers.length < 2){
myDoc.activeLayer.fillOpacity = 50
}
else{
myDoc.activeLayer.fillOpacity = 65
}

VBS

Set appRef = CreateObject("Photoshop.Application")


Set myDoc = appRef.Open("/c/Program Files/Adobe/Adobe Photoshop
CS6/Samples/Ducky1.tif")
If myDoc.ArtLayers.Count < 2 Then
myDoc.ActiveLayer.FillOpacity = 50
Else
myDoc.ActiveLayer.FillOpacity = 65
End If

Boucles

48

Boucles
Il se peut que vous vouliez que votre script trouve et modifie tous les objets dun certain type. Par exemple,
votre document peut comporter des calques visibles et des calques invisibles et vous aimeriez les rendre
tous visibles. Vous voudriez que ce script sapplique plusieurs documents, mais vos documents possdent
un nombre diffrent de calques.
Dans une situation comme celle-ci, une instruction repeat (AS) ou une boucle (JS et VBS) peut vous tre
utile. Une boucle passe dans un ensemble dobjets et excute une action pour chaque objet.
Pour utiliser les scripts de cette section, ouvrez votre application Adobe et crez un document qui contient
au moins neuf calques. Rendez certains calques visibles et cachez les autres calques. Sauvegardez le
document, puis excutez le script, en substituant le nom de votre application et celui de lobjet layer dans
le DOM de votre application.
Le principe de base lorigine de ces boucles consiste dans le fait que le script identifie le premier calque
dans llment ou lensemble et rgle la visibilit de ce calque sur true, puis identifie le calque suivant et
rpte laction, et ainsi de suite jusqu ce quune action ait t excute pour chaque calque.
AS

tell application "Adobe Illustrator CS6"


set myDoc to current document
tell myDoc
set myLayerCount to (count layers)
set myCounter to 1
repeat while myCounter <= (myLayerCount + 1)
set myLayer to layer myCounter
set myLayer with properties {visible:true}
--the next statement increments the counter to get the next layer
set myCounter to myCounter + 1
end repeat
end tell
end tell

Ce script utilise deux variables, myLayerCount et myCounter pour identifier un calque, puis incrmente le
numro du calque jusqu ce que tous les calques aient t identifis dans le document.

CHAPITRE 4 : Techniques dcriture de scripts avances

JS

Boucles

49

var myDoc = app.activeDocument


var myLayerCount = myDoc.layers.length
for(var myCounter = 0; myCounter < myLayerCount; myCounter++)
{var myLayer = myDoc.layers[myCounter]
myLayer.visible = true}

Ce script utilise une boucle for, qui constitue lune des techniques les plus courantes en JavaScript. Tout
comme lAppleScript mentionn plus haut, ce script utilise deux variables, myLayerCount et myCounter,
pour identifier un calque, puis incrmente le numro du calque jusqu ce que tous les calques du
document aient t identifis. Lincrmentation a lieu dans la troisime instruction, dans linstruction for :
myCounter++. La syntaxe ++ ajoute 1 la valeur actuelle, mais najoute pas 1 tant que laction de boucle na
pas eu lieu.
En langage commun, la boucle for de ce script peut correspondre :
1. Commencer la valeur de myCounter 0.
2. Si la valeur de myCounter est infrieure la valeur de myLayerCount, utiliser alors la valeur de myCounter
comme indice pour le calque assign myLayer, et rgler la visibilit de myLayer sur true.
3. Ajouter 1 la valeur de myCounter, puis comparer la nouvelle valeur de myCounter la valeur de
myLayerCount.
4. Si myCounter est toujours infrieur myLayerCount, utiliser alors la nouvelle valeur de myCounter
comme indice de myLayer et rgler la visibilit de myLayer sur true, puis ajouter 1 la valeur de
myCounter.
5. Rpter jusqu ce que myCounter ne soit plus infrieur myLayerCount.
VBS

Set appRef = CreateObject("Illustrator.Application")


Set myDoc = appRef.ActiveDocument
For Each object in myDoc.Layers
object.Visible = True
Next

La boucle For Each Next en langage VBScript dit simplement lapplication de dfinir la proprit
Visible de chaque objet de lensemble Layers du document actif sur True. Vous remarquerez que
lensemble est identifi par la hirarchie de confinement des objets parents (dans ce cas, par la variable
myDoc) suivie du nom de lensemble, qui est la forme plurielle du nom de lobjet (dans ce cas Layers).
REMARQUE : Lobjet nomm dans la boucle peut tre nimporte lequel. Le script fonctionne de la mme
manire si vous substituez x object dans le script ci-dessous :
Set appRef = CreateObject("Illustrator.Application")
Set myDoc = appRef.ActiveDocument
For Each x in myDoc.Layers
x.Visible = True
Next

CHAPITRE 4 : Techniques dcriture de scripts avances

Informations supplmentaires sur lcriture de scripts

50

Informations supplmentaires sur lcriture de scripts


Chaque langage de script contient un grand nombre supplmentaire de mcanismes et de techniques
pour renforcer vos scripts et les rendre plus complexes. Pour continuer vous informer sur la manire
dcrire des scripts pour vos applications Adobe, reportez-vous au guide dcriture de scripts dAdobe de
votre application. Reportez-vous galement au Chapitre 6, Bibliographie .

Rsolution des problmes


Ce chapitre explique comment interprter certains messages derreur de base pouvant survenir lors de
lexcution dun script.

Mots rservs
Tout comme de nombreux autres diteurs de scripts, Script Editor et lESTK mettent certains mots en
surbrillance lorsque vous les tapez.
Par exemple, les valeurs Boolennes true et false sont toujours en surbrillance. Dautres exemples sont
lists ci-dessous.
AS

tell
end
with
set

JS

var
if
else
with

VBS

Dim
Set
MsgBox

Ces mots en surbrillance sont rservs par le langage de script des fins spciales et ne peuvent pas tre
utiliss comme noms de variable. Vous pouvez utiliser des mots rservs dans une chane, car ils seront
alors entre guillemets. Vous pouvez galement les utiliser dans des commentaires, car les commentaires
sont ignors par le moteur de script.
Si votre script indique une erreur de syntaxe, vrifiez que vous navez pas utilis un mot rserv. Pour
obtenir la liste complte des mots rservs dans votre langage de script, reportez-vous lune des ressources
rpertories au Chapitre 6, Bibliographie .

Messages derreur de lditeur de scripts AppleScript


Lorsque votre script AppleScript contient une erreur, lEditeur de scripts met en surbrillance la partie errone
du script et affiche un message derreur.
Vrifiez la prsence de fautes dorthographe ou de ponctuation dans la partie du script mise en surbrillance.
Si aucune erreur ne figure dans le texte en surbrillance, vrifiez le texte qui prcde directement la partie
en surbrillance. Si le texte qui prcde contient une erreur, celle-ci peut avoir conduit lditeur de scripts
sattendre autre chose qu ce qui est indiqu dans la section mise en surbrillance.

51

CHAPITRE 5 : Rsolution des problmes

Messages derreur de lESTK

52

Les messages derreur les plus courants sont expliqus ci-dessous.


X

Cant get object : cela indique gnralement que vous navez pas bien dfini lobjet dans la hirarchie
de confinement. Essayez dajouter in parent-object (o parent-object est lobjet qui contient lobjet
indiqu dans le message derreur) aprs le nom de lobjet dans votre script, ou crez une instruction
imbrique tell qui nomme lobjet parent.

Expected "" but found end of script : assurez-vous que tous les guillemets ouvrent et ferment bien
les chanes.

Requested property not available for this object : vrifiez lorthographe des noms de toutes les
proprits.

CONSEIL : Slectionnez le journal des rsultats (Result Log) en bas de la fentre de lditeur de scripts
pour voir la progression de votre script ligne par ligne.

Messages derreur de lESTK


LESTK vous prvient de la prsence derreurs de plusieurs manires :
X

Si votre script contient une erreur de syntaxe, il ne sexcute pas et la section errone est grise.
Une description du problme est souvent affiche dans la barre dtat au bas de la fentre ESTK.
Lorsquune erreur de syntaxe a lieu, vrifiez les points suivants :
Z

Assurez-vous davoir fait un usage correct des majuscules et des minuscules. Rappelez-vous que
tous les termes en JavaScript (sauf les noms dnumration) commencent par une minuscule, une
majuscule tant utilise au dbut de chaque mot dun terme compos, comme ici : artLayer.
Rappelez-vous galement que les noms de variables sont sensibles la casse.

Fermez toutes les parenthses, toutes accolades et tous les guillemets. Assurez-vous que ces
caractres vont bien par deux.

Assurez-vous dutiliser des guillemets droits. Ne mlangez pas non plus les guillemets simples et
doubles. Par exemple :
Incorrect : myDoc.name = "Mon document'
Correct : myDoc.name = 'Mon document'
Correct : myDoc.name = "Mon document"

REMARQUE : Certaines erreurs de syntaxe, telles que les guillemets droits ou courbes sont mises en
surbrillance rouge. Le message de barre dtat dit simplement Syntax error (Erreur de syntaxe).
Assurez-vous de bien utiliser des guillemets droits.
X

Si votre script contient une erreur dexcution, telle quun objet incorrectement identifi ou une
proprit qui nexiste pas pour lobjet quelle essaye dutiliser, linstruction errone est mise en
surbrillance mais le script continue de sexcuter, comme lindique licne tournante dans le coin
infrieur droit de lcran. En outre, lerreur est dcrite la fois dans la fentre de la console JavaScript et
dans la barre dtat.

CHAPITRE 5 : Rsolution des problmes

Messages derreur de VBScript

53

Lorsquune erreur dexcution se produit :


Z

Slectionnez Debug (Dbogage) > Stop (Arrter) ou appuyez sur la touche Shift+F5 pour arrter
le script.

Cherchez la nature de lerreur dans la console JavaScript. De brves descriptions des messages
derreur les plus frquents figurent ci-dessous et peuvent vous aider savoir par o commencer.
element is undefined : si llment non dfini est une variable, assurez-vous que le nom de cette
variable ne contient pas de faute dorthographe et que la casse est respecte. Assurez-vous
galement que la variable a t dfinie par une instruction var ou quune valeur lui a t attribue.
Si llment non dfini est une valeur de chane, assurez-vous que cette valeur figure bien entre
guillemets.
undefined is not an object : assurez-vous que lobjet figurant dans linstruction mise en surbrillance
est correctement identifi dans la hirarchie de confinement. Par exemple, si lobjet est un calque,
assurez-vous davoir bien dfini le document qui contient ce calque. Pour les objets document,
il peut tre ncessaire dinclure lobjet parent app.

Messages derreur de VBScript


Lorsque votre script VBScript contient une erreur, un hte de script Windows (Windows Script Host) affiche
un message derreur qui indique quelle ligne sest produite lerreur et quel endroit de la ligne commence
la syntaxe ou lobjet erron.
Ce message indique que le problme se situe
au commencement de la ligne 3 du script.

Bibliographie
Ce chapitre contient une liste douvrages sur lcriture de scripts destins aux dbutants. Cette liste nest
pas exhaustive. Vous pouvez galement rechercher des didacticiels en ligne pour votre langage de script.

AppleScript
Pour obtenir plus dinformations et dinstructions sur lutilisation du langage de script AppleScript,
reportez-vous aux documents et sources suivants :
X

AppleScript for the Internet: Visual QuickStart Guide, 1st ed., Ethan Wilde, Peachpit Press, 1998.
ISBN 0-201-35359-8.

AppleScript Language Guide: English Dialect, 1st ed., Apple Computer, Inc., Addison-Wesley Publishing
Co., 1993. ISBN 0-201-40735-3.

Danny Goodmans AppleScript Handbook, 2nd ed., Danny Goodman, iUniverse, 1998.
ISBN 0-966-55141-9.

Site web AppleScript dApple Computer, Inc. :


www.apple.com/applescript

JavaScript
Pour obtenir plus dinformations et dinstructions sur lutilisation du langage de script JavaScript,
reportez-vous aux documents et sources suivants :
X

JavaScript: The Definitive Guide, David Flanagan, OReilly Media Inc, 2002. ISBN 0-596-00048-0

JavaScript Bible, Danny Goodman, Hungry Minds Inc, 2001. ISBN 0-7645-4718-6

Adobe Scripting, Chandler McWilliams, Wiley Publishing, Inc., 2003. ISBN 0-7645-2455-0

VBScript :
Pour obtenir plus dinformations et dinstructions sur lutilisation du langage de script VBScript,
reportez-vous aux documents et sources suivants :
X

Learn to Program with VBScript 6, 1st ed., John Smiley, Active Path, 1998. ISBN 1-902-74500-0

Microsoft VBScript 6.0 Professional, 1st ed., Michael Halvorson, Microsoft Press, 1998.
ISBN 1-572-31809-0.

VBS & VBSA in a Nutshell, 1st ed., Paul Lomax, OReilly, 1998. ISBN 1-56592-358-8

Site web de scripts du rseau des dveloppeurs Microsoft (MSDN) :


msdn.microsoft.com/scripting

54

Index
A

actions, 6
AppleScript
dfinition, 6
dictionnaires, 33
premier script, 8
site Web, 54
arguments
dfinition, 9
utilisation, 24
avertissement de scurit, 20

criture de scripts
dfinition, 6
en savoir plus, 6
utilisation, 5
Editeur de scripts
dictionnaires AppleScript, 33
emplacement par dfaut, 6
rsolution des problmes dans, 51
lments
affichage dans les rfrences relatives
lcriture de scripts, 42
numrations
dfini, 17
utilisation, 21
ESTK
affichage du modle objet JS, 36
emplacement par dfaut, 7
rsolution des problmes dans, 52
ExtendScript
dfinition, 7

B
bibliographie, 54
botes de dialogue, 20
boolen, 17
boucles, 48

C
chanes, 16
commandes
affichage dans les dictionnaires AS, 33, 35
proprits, 24
utilisation, 24
commentaires, 29
commentaires de script, 29
constantes
dfini, 17
utilisation, 21

G
Guide JavaScript Tools, 7

H
hirarchie de confinement, 10, 12
dans les rfrences relatives lcriture de
scripts, 42

dictionnaires, 33
DOM
consultation, 10
dfinition, 10
dossier de dmarrage, 7

Illustrator, Voir Adobe Illustrator


indice
dfinition, 13
schmas de numrotation, 14
instructions conditionnelles, 46
instructions if, 46
instructions if else, 47
instructions tell (AS), 27

55

Index

56

J
JavaScript
avantages de, 7
dfinition, 7
premier script, 8
utilisation de la casse, 15

L
longues lignes, 30

proprits
affichage dans les bibliothques de types VBS,
37
affichage dans les dictionnaires AS, 33
affichage dans les rfrences relatives
lcriture de scripts, 42
dfinition, 9
lecture seule, 20
lecture-criture, 20
types de donnes, 16
utilisation, 16
valeurs multiples, 17

M
macros, 6
mthodes
affichage dans les bibliothques de types VBS,
40
affichage dans les rfrences relatives
lcriture de scripts, 44
arguments, 24
dfinition, 9
utilisation, 24

S
scripts
excution automatique, 7

T
tableaux, 31
cration, 31
dfini, 17
types de donnes, 16

O
objet parent, 10
objets
actif, 15
actuel, 15
affichage dans les bibliothques de types VBS,
37
affichage dans les dictionnaires AS, 33, 35
affichage dans les rfrences relatives
lcriture de scripts, 42
dfinition, 9
lments, 13
ensembles, 13
parent, 10
rfrences, 11
utilisation, 10

P
paramtres
affichage dans les rfrences relatives
lcriture de scripts, 44
dfinition, 9
direct (AS), 25
en option, 24
libell (AS), 25
requis, 24
utilisation, 24
utilisation de paramtres multiples, 25

V
var, 11
variables
changement de valeur de, 28
comme valeurs de proprit, 17
cration, 11
dfinition, 11
dfinition des valeurs, 11
dnomination, 13
pour des objets existants, 28
utilisation pour les valeurs de proprit, 23
VBScript :
bibliothques de types, 36
dfinition, 7
extension, 8
premier script, 8

You might also like