Professional Documents
Culture Documents
LCRITURE DE SCRIPTS
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
6
6
7
7
8
8
8
8
10
10
11
11
12
13
13
16
18
18
19
20
20
21
22
22
23
23
24
24
24
25
14
15
33
33
33
33
36
36
36
37
41
42
42
44
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.
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
AppleScript
JavaScript
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
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
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.
2. Dans la palette Console de JavaScript, tapez :
app.documents.add()
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).
3. Double-cliquez sur le fichier dans Windows Explorer.
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 .
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.
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
JS
app.documents.layers.add()
VBS
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.
11
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
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
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
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
JS
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!"
13
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.
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.
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.
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
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
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.
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.
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 second mot (et tous ceux qui suivent) utilisent des majuscules pour la premire lettre.
Quelques exemples :
activeDocument
activeLayer
activeChannel
activeView
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
JS
app.documents.add()
app.activeDocument.layers.add()
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.
17
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 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.
Les valeurs sont spares par une virgule (,). Vous pouvez inclure ou omettre des espaces aprs
les virgules ; cela na pas dimportance.
AS
JS
VBS
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
JS
VBS
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
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.
20
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
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.
Set appRef = CreateObject("Photoshop.Application")
MsgBox(appRef.Documents.Count)
Set myDoc = appRef.Documents.Add
MsgBox(appRef.Documents.Count)
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.
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
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.
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
JS
VBS
24
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.
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 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).
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
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)
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.
Vous pouvez imbriquer autant dinstructions tell que vous le souhaitez.
28
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
JS
VBS
29
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.
VBS
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.
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.
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 :
AS
JS
app.documents.add()
VBS
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.
32
Chapitre 6, Bibliographie
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.)
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
34
Le nom de la proprit.
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.
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.
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 :
.
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.
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.
36
Slectionnez
votre
application CS6
dans la liste
droulante.
Fentre
Classes.
Fentre
Membres de .
37
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
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.
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.
39
Cliquez sur le
lien menant aux
informations
concernant
lnumration.
40
2. Cliquez sur la valeur dnumration pour afficher la valeur numrique dans la fentre du bas.
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, 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.
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.
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.
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.
42
Rfrence par
character style
layer
story
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
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
kind
LayerKind
name
string
opacity
number (double)
textItem
Objet TextItem
visible
Boolen
Par exemple :
AS
REMARQUE : Vous ne pouvez pas dfinir les limites du calque car la proprit bounds est en lecture seule.
JS
43
VBS
44
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.
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.
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
Document
45
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 :
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.
AS
JS
VBS
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
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
JS
VBS
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
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.
JS
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.
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
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
50
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 .
51
52
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.
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.
53
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.
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.
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
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
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