Académique Documents
Professionnel Documents
Culture Documents
LCRITURE DE SCRIPTS
Copyright 2012 Adobe Systems Incorporated. Tous droits rservs.
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 ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
AppleScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
VBScript : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Par o dois-je commencer ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
AS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
JS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
VBS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3
Table des matires 4
6 Bibliographie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
AppleScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
VBScript : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
1 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.
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.
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.
X 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.
5
CHAPITRE 1 : Introduction Quen est-il des actions ou des macros ? 6
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.
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.
X AppleScript
X JavaScript
X 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 ? 7
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.
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.
X 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.
X 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 :
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
JS
1. Ouvrez lESTK et slectionnez une application dans la liste droulante situe en haut gauche de la
fentre du document.
X Cliquez sur licne Excuter dans la barre doutils situe en haut de la fentre du document.
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).
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.
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.
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.
X 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 .
9
CHAPITRE 2 : Bases de lcriture de scripts Utilisation des objets 10
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.
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).
JS app.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
X Variables
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
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).
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
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()
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 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.
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.
X 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.
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.
X Les noms de variable peuvent contenir des chiffres mais ne peuvent pas commencer par un chiffre.
X Ils ne peuvent pas contenir de guillemets ou de marques de ponctuation autres que le tiret long.
X 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.
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.
X 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.
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.
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
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.
X 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].
X 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.
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 document
current layer
current channel
current view
X 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 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 Utilisation des proprits 16
X 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.
JS app.documents.add()
app.activeDocument.layers.add()
1. Nommer lobjet.
2. Nommer la proprit.
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.
X 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
Z 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.
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.
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 Les valeurs sont spares par une virgule (,). Vous pouvez inclure ou omettre des espaces aprs
les virgules ; cela na pas dimportance.
Z 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
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
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
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.
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)
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.
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.
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.
Lexemple suivant utilise lnumration UIColor pour dfinir la couleur du calque sur vert fonc.
var myDoc = app.documents.add()
myLayer.layerColor = UIColor.darkGreen
X Sous Illustrator :
Z Chaque numration commence par une lettre majuscule et tous les mots du terme compos
commencent galement par une lettre majuscule.
Z 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()
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.
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
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.
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.
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.
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 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
JS
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
myLayer2.Merge(myLayer)
Paramtres multiples
Lorsque vous dfinissez plus dun paramtre pour une commande ou une mthode, vous devez suivre des
rgles spcifiques.
AS
X Un paramtre direct qui dfinit lobjet direct de laction excute par la commande
X 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)
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.
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"
X Commentaires
X 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 Rendre les fichiers de script lisibles 30
VBS 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.
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])
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 :
JS app.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
X Chapitre 6, Bibliographie
3 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.
X 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.)
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.
Le dictionnaire AS divise les objets en suites. Les noms de suites indiquent le type dobjets contenus dans
la suite.
1. Dans la fentre en haut gauche de lcran du dictionnaire, slectionnez la suite qui contient lobjet.
REMARQUE: Les objets sont indiqus par une icne carre : ; les commandes le sont par une icne
ronde : .
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
Z Le nom de la proprit.
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: .
Z La valeur daccs :
Description
de lobjet.
Liens vers les
lments de
lobjet.
Liste des
proprits.
Les types de donnes et valeurs daccs sont mis Les valeurs numres
entre parenthses aprs le nom de la proprit. sont prcdes de la
Remarque : La valeur daccs napparat que mention Can return: .
lorsque la proprit est en lecture seule.
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.
REMARQUE : Les commandes sont indiques par une icne ronde : ; les objets sont indiqus par une
icne carre : .
Z Sous la description, les objets avec lesquels vous pouvez utiliser la commande sont numrs.
Z Les paramtres sont numrs sous la liste des objets pris en charge.
Si aucun crochet napparat avant et aprs le nom du paramtre, celui-ci est obligatoire.
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 (/).
Description de
la commande.
Liste des objets
qui utilisent la
commande.
Paramtres,
avec les types
et descriptions
des donnes. Les paramtres optionnels sont Remarque : Lorsque la valeur du paramtre
indiqus entre crochets ([ ]). 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
Pour plus dinformations sur laffichage et lutilisation de la visionneuse de modle objet JavaScript pour
votre application Adobe, reportez-vous au Guide JavaScript Tools .
REMARQUE : Si vous utilisez un diteur diffrent, rfrez-vous son systme daide pour savoir comment
afficher les bibliothques de types.
1. Dmarrez une application Microsoft Office, puis slectionnez Outils > Macro > Visual Basic Editor.
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
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 :
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.
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 :
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 Ai est utilis pour les numrations dans Adobe Illustrator CS6.
Exemples : AiCropOptions, AiBlendModes
Z 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 Utilisation de navigateurs dans un environnement de script 38
X 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
Le type de Membres de .
donnes
apparat ct
du nom de la
proprit.
La valeur
daccs nest
rpertorie que
lorsque laccs
est en lecture
La description de la proprit figure
seule.
au bas de la fentre dinformations.
CHAPITRE 3 : Recherche de proprits et de mthodes dobjets Utilisation de navigateurs dans un environnement de script 39
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
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.
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 :
Z Si aucun crochet napparat avant et aprs le nom du paramtre, celui-ci est obligatoire.
Z Si le type de donnes est un objet, ce type de donnes constitue un lien hypertexte vers lobjet.
Z 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.
Z 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 Utilisation des documents de rfrence Adobe relatifs lcriture de scripts 41
Le type de
donnes est
indiqu aprs
le nom de la 1. Slectionnez la
mthode. mthode dans la
Si le type de fentre Membres
donnes est une de .
numration, Les paramtres sont
le nom de rpertoris entre
lnumration parenthses aprs le
commence par nom de la mthode,
les initiales de les paramtres
lapplication et optionnels tant
constitue un lien indiqus entre
hypertexte vers crochets ([ ]).
les informations La description de la mthode Sil existe une valeur par dfaut, celle-ci
concernant apparat au bas de la fentre est prcde du symbole gal (=).
lnumration. dinformations. Remarque : Nimporte quel type de
donnes peut avoir une valeur par dfaut.
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 Proprits
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
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.
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.
Lexemple suivant de tableau de proprits pour un objet art layer dans Photoshop contient des
exemples de chaque type de donnes.
Par exemple :
REMARQUE : Vous ne pouvez pas dfinir les limites du calque car la proprit bounds est en lecture seule.
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.
Z 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.
Z Les paramtres peuvent tre obligatoires ou optionnels. Les paramtres optionnels sont indiqus
entre crochets ([]).
X 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.
Lexemple suivant de tableau de mthodes numre les paramtres pour la mthode add pour un
document Photoshop CS6.
X Tous les paramtres sont optionnels, comme indiqu par la prsence des crochets.
X 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 :
JS : app.documents.add(5, 7)
VBS : appRef.Documents.Add(5, 7)
Les instructions de script suivantes dfinissent des valeurs pour chaque paramtre numr dans
lexemple de tableau des mthodes.
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 Instructions conditionnelles 47
JS 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.
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.
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 Boucles 49
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.
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.
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.
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
x.Visible = True
Next
CHAPITRE 4 : Techniques dcriture de scripts avances Informations supplmentaires sur lcriture de scripts 50
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 .
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
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.
X Expected "" but found end of script : assurez-vous que tous les guillemets ouvrent et ferment bien
les chanes.
X 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.
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.
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.
Z Fermez toutes les parenthses, toutes accolades et tous les guillemets. Assurez-vous que ces
caractres vont bien par deux.
Z Assurez-vous dutiliser des guillemets droits. Ne mlangez pas non plus les guillemets simples et
doubles. Par exemple :
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
Z Slectionnez Debug (Dbogage) > Stop (Arrter) ou appuyez sur la touche Shift+F5 pour arrter
le script.
Z 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.
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.
X AppleScript Language Guide: English Dialect, 1st ed., Apple Computer, Inc., Addison-Wesley Publishing
Co., 1993. ISBN 0-201-40735-3.
X Danny Goodmans AppleScript Handbook, 2nd ed., Danny Goodman, iUniverse, 1998.
ISBN 0-966-55141-9.
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
X JavaScript Bible, Danny Goodman, Hungry Minds Inc, 2001. ISBN 0-7645-4718-6
X 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
X Microsoft VBScript 6.0 Professional, 1st ed., Michael Halvorson, Microsoft Press, 1998.
ISBN 1-572-31809-0.
X VBS & VBSA in a Nutshell, 1st ed., Paul Lomax, OReilly, 1998. ISBN 1-56592-358-8
msdn.microsoft.com/scripting
54
Index
A E
actions, 6 criture de scripts
AppleScript dfinition, 6
dfinition, 6 en savoir plus, 6
dictionnaires, 33 utilisation, 5
premier script, 8 Editeur de scripts
site Web, 54 dictionnaires AppleScript, 33
arguments emplacement par dfaut, 6
dfinition, 9 rsolution des problmes dans, 51
utilisation, 24 lments
avertissement de scurit, 20 affichage dans les rfrences relatives
lcriture de scripts, 42
B numrations
dfini, 17
bibliographie, 54 utilisation, 21
botes de dialogue, 20 ESTK
boolen, 17 affichage du modle objet JS, 36
boucles, 48 emplacement par dfaut, 7
rsolution des problmes dans, 52
C ExtendScript
dfinition, 7
chanes, 16
commandes G
affichage dans les dictionnaires AS, 33, 35
proprits, 24 Guide JavaScript Tools, 7
utilisation, 24
commentaires, 29 H
commentaires de script, 29
constantes hirarchie de confinement, 10, 12
dfini, 17 dans les rfrences relatives lcriture de
utilisation, 21 scripts, 42
D I
dictionnaires, 33 Illustrator, Voir Adobe Illustrator
DOM indice
consultation, 10 dfinition, 13
dfinition, 10 schmas de numrotation, 14
dossier de dmarrage, 7 instructions conditionnelles, 46
instructions if, 46
instructions if else, 47
instructions tell (AS), 27
55
Index 56
J proprits
affichage dans les bibliothques de types VBS,
JavaScript 37
avantages de, 7 affichage dans les dictionnaires AS, 33
dfinition, 7 affichage dans les rfrences relatives
premier script, 8 lcriture de scripts, 42
utilisation de la casse, 15 dfinition, 9
lecture seule, 20
L lecture-criture, 20
types de donnes, 16
longues lignes, 30 utilisation, 16
valeurs multiples, 17
M
S
macros, 6
mthodes scripts
affichage dans les bibliothques de types VBS, excution automatique, 7
40
affichage dans les rfrences relatives T
lcriture de scripts, 44
arguments, 24 tableaux, 31
dfinition, 9 cration, 31
utilisation, 24 dfini, 17
types de donnes, 16
O
V
objet parent, 10
objets var, 11
actif, 15 variables
actuel, 15 changement de valeur de, 28
affichage dans les bibliothques de types VBS, comme valeurs de proprit, 17
37 cration, 11
affichage dans les dictionnaires AS, 33, 35 dfinition, 11
affichage dans les rfrences relatives dfinition des valeurs, 11
lcriture de scripts, 42 dnomination, 13
dfinition, 9 pour des objets existants, 28
lments, 13 utilisation pour les valeurs de proprit, 23
ensembles, 13
VBScript :
parent, 10
bibliothques de types, 36
rfrences, 11
dfinition, 7
utilisation, 10
extension, 8
premier script, 8
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