Vous êtes sur la page 1sur 56

ADOBE INTRODUCTION LCRITURE DE SCRIPTS

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

Table des matires


1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Est-ce difficile de crer des scripts ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Pourquoi utiliser un script? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Comment savoir quand utiliser un script ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Quen est-il des actions ou des macros ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 Lcriture de scripts, cest quoi au juste ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . AppleScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . VBScript : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Par o dois-je commencer ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . AS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . JS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . VBS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 6 7 7 8 8 8 8

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


Modules de lcriture de scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Utilisation des objets, des proprits, des mthodes et des commandes . . . . . . . . . . . . . . . . . . . . . . . 9 Utilisation des objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Concepts DOM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Les rfrences dobjet facilitent la vie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Les variables offrent un raccourci convivial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dnomination des variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ensembles ou lments dobjets comme rfrences dobjet . . . . . . . . . . . . . . . . . . . . . . . . . . Comment les lments et les ensembles numrotent les lments suivants ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Rfrence lobjet actuel ou actif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Utilisation des proprits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . AS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . JS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . VBS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Utilisation des proprits lecture seule et lecture-criture . . . . . . . . . . . . . . . . . . . . . . . . . . . . Utilisation des avertissements de scurit pour afficher la valeur dune proprit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Valeurs constantes et numrations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . AS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . JS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . VBS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Utilisation de variables pour les valeurs de proprit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Utilisation de mthodes ou commandes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Paramtres des commandes ou mthodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Paramtres requis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Paramtres multiples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 10 11 11 12 13 13 14 15 16 18 18 19 20 20 21 22 22 23 23 24 24 24 25
3

Table des matires

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

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


Utilisation de navigateurs dans un environnement de script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dictionnaires de donnes AppleScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Affichage des dictionnaires AppleScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Utilisation des dictionnaires AppleScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Visionneuse de modle objet (Object Model Viewer) JavaScript . . . . . . . . . . . . . . . . . . . . . . Bibliothques de types VBScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Affichage des bibliothques de types VBScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Utilisation des bibliothques de types VBScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Utilisation des documents de rfrence Adobe relatifs lcriture de scripts . . . . . . . . . . . . . . . . . . . Utilisation du tableau dlments dun objet (AS uniquement) . . . . . . . . . . . . . . . . . . . . . . . . Utilisation du tableau de proprits dun objet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Utilisation du tableau de mthodes dun objet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 33 33 33 36 36 36 37 41 42 42 44

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


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

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


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

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

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

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

Est-ce difficile de crer des scripts ?


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

Pourquoi utiliser un script ?


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

Comment savoir quand utiliser un script ?


Pensez votre travail : ne comporte-t-il pas une tche rptitive qui vous ennuie au plus haut point ? Si cest le cas, voil dj une bonne raison dcrire un script. Il vous suffira ensuite de dterminer : quelles sont les tapes ncessaires lexcution de cette tche et? quelles sont les conditions dans lesquelles vous devez effectuer cette tche? Une fois que vous avez compris le processus dexcution manuelle de cette tche, vous tes prt en crire le script.

CHAPITRE 1 : Introduction

Quen est-il des actions ou des macros ?

Quen est-il des actions ou des macros ?


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

Lcriture de scripts, cest quoi au juste ?


Un script est une srie dinstructions qui ordonnent une application dexcuter un ensemble de tches. Le truc consiste crire ces instructions dans un langage reconnu par lapplication. Les applications Adobe pour lesquelles vous pouvez crire des scripts prennent en charge plusieurs langages. Si vous travaillez sous Mac OS, vous pouvez utiliser : AppleScript JavaScript Si vous travaillez sous Windows, vous pouvez utiliser : VBScript (Visual Basic et VBA fonctionnent galement) JavaScript Les brves descriptions ci-dessous peuvent vous aider dterminer le langage qui vous conviendra le mieux.

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

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

CHAPITRE 1 : Introduction

Lcriture de scripts, cest quoi au juste ?

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

JavaScript
JavaScript est un langage de script trs rpandu dvelopp lorigine pour rendre les pages Web interactives. Tout comme AppleScript, JavaScript est facile apprendre. REMARQUE : Adobe a dvelopp une version amliore de JavaScript appele ExtendScript, qui vous permet de bnficier des avantages de certains outils et fonctionnalits de script dAdobe. Si vous tes dbutant, la diffrence entre ces deux langages ne devrait pas vous affecter. Prenez toutefois lhabitude de donner une extension .jsx vos scripts JavaScript, plutt que lextension habituelle .js. JavaScript possde quelques petits avantages sur AppleScript et Visual Basic : Vos scripts peuvent tre utiliss soit sous Windows, soit sous Mac OS. Si vous tes amen partager ou utiliser vos scripts dans les deux plates-formes, apprenez alors utiliser JavaScript. Sous Adobe Illustrator et InDesign, vous pouvez accder aux scripts dans nimporte quel langage pris en charge partir de lapplication. Nanmoins, sous Photoshop, vous ne pouvez accder quaux fichiers .jsx partir de lapplication. Vous devez utiliser les scripts AppleScript ou Visual Basic en dehors de lapplication. Cela ne constitue pas un inconvnient majeur, mais il vous faudra quelques clics de plus pour excuter vos scripts. Vous pouvez configurer les scripts .jsx pour quils sexcutent automatiquement lorsque vous ouvrez lapplication, en les plaant dans le dossier Startup Scripts de lapplication. Pour plus dinformations sur les dossiers Startup Scripts, reportez-vous au guide dcriture de scripts de votre application. Pour crire des scripts en JavaScript, vous pouvez utiliser nimporte quel diteur de texte, ou encore lESTK (ExtendScript Tool Kit) fourni avec vos applications Adobe. LESTK possde un large ventail de fonctionnalits qui rendent son utilisation plus facile quun diteur de texte, notamment grce un correcteur de syntaxe intgr qui identifie les problmes lis votre script et suggre des moyens de les rsoudre, et grce la possibilit dexcuter vos scripts directement partir de lESTK sans sauvegarder le fichier. Cette deuxime fonctionnalit vous permet de gagner beaucoup de temps, surtout au dbut sil vous faut tester et modifier un script plus dune fois avant que celui-ci ne soit prt fonctionner. Dans une installation Adobe par dfaut, lESTK se trouve lemplacement suivant : Mac OS : disque systme:Applications:Utilities:Adobe Utilities - CS6:ExtendScript Toolkit CS6 Windows : lecteur:/Program Files/Adobe/Adobe Utilities - CS6/ExtendScript Toolkit CS6 Pour plus dinformations, reportez-vous au Guide JavaScript Tools.

CHAPITRE 1 : Introduction

Par o dois-je commencer ? 8

Par o dois-je commencer ?


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

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

2. Cliquez sur Excuter.

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

3. Effectuez lune des oprations suivantes : Cliquez sur licne Excuter dans la barre doutils situe en haut de la fentre du document. Appuyez sur la touche F5. Slectionnez Debug (Dbogage) -> Run (Excuter).

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

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

Bases de lcriture de scripts


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

Modules de lcriture de scripts


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

Utilisation des objets, des proprits, des mthodes et des commandes


Lorsque vous utilisez une application Adobe, vous ouvrez un fichier ou un document, puis, au sein du document, vous crez ou manipulez des calques, du texte, des blocs, des couches, des lignes de graphique, des couleurs et dautres lments cratifs. Ces lments sont des objets. Pour crer une instruction de script, vous crez un objet ou faites rfrence un objet existant, puis vous procdez comme suit : Dfinissez des valeurs pour les proprits de lobjet. Par exemple, vous pouvez indiquer le nom, la hauteur ou la largeur dun document. Vous pouvez spcifier le nom, la couleur ou lopacit dun calque. Spcifiez des commandes ou des mthodes pour indiquer au script ce quil doit faire vos objets. Par exemple, vous pouvez ouvrir, fermer, enregistrer et imprimer un document. Vous pouvez fusionner, dplacer ou pixelliser un calque. Gardez lesprit lorsque vous rdigez un script que vous ne pouvez utiliser que les proprits ou mthodes/commandes autorises pour lobjet. Comment savoir quelles proprits et mthodes sont autorises pour quel objet ? La plupart du temps, cest logique. En gnral, si vous pouvez indiquer quelque chose dans votre application Adobe, vous pouvez lindiquer dans un script. Nanmoins, Adobe lexplique galement en dtail dans les ressources de lcriture de scripts qui contiennent les informations dont vous avez besoin pour crer, dfinir et manipuler les objets de script. Pour plus dinformations sur lemplacement et lutilisation de ces ressources, reportez-vous au Chapitre 3, Recherche de proprits et de mthodes dobjets .

CHAPITRE 2 : Bases de lcriture de scripts

Utilisation des objets

10

Utilisation des objets


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

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

JS VBS

Set appRef = CreateObject("Illustrator.Application") docRef.Documents.Add appRef.Documents.Layers.Add

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

CHAPITRE 2 : Bases de lcriture de scripts

Utilisation des objets

11

Ce guide prsente trois moyens de faire rfrence aux objets : Variables Numros densemble ou dlment Objet actuel ou proprit de lobjet actif

Variables
Une variable est un lment que vous crez pour contenir des donnes dans votre script. Les donnes, appeles valeur de la variable, peuvent tre un objet de votre script ou une proprit qui dcrit un objet. Vous pouvez galement considrer une variable comme un surnom que vous donnez un objet ou dautres donnes. Lutilisation dune variable pour contenir un objet facilite la rfrence cet objet. La plupart des rdacteurs de script crent une variable pour chaque objet de leur script. Les scripts suivants crent un document, comme vous lavez fait dans votre premier script. Nanmoins, cette version du script cre une variable nomme myDoc pour contenir le document. Etudiez ces scripts, puis comparez-les votre premier script. (Reportez-vous Par o dois-je commencer ? , page 8.) AS Pour crer une variable en langage AS, utilisez la commande set suivie par le nom de la variable. Pour affecter une valeur de donnes la variable, utilisez to suivi de la valeur.
tell application "Adobe Illustrator CS6" set myDoc to make document end tell

JS

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

VBS

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

Les rfrences dobjet facilitent la vie


Maintenant que vous connaissez une mthode pour faire rfrence lobjet document cr dans le script, il est facile dajouter le calque. (Pour modifier ce script pour Photoshop, notez quun calque est appel art layer en AS et les calques sont appels artLayers en JS ou ArtLayers en VBS). AS
tell application "Adobe Illustrator CS6" set myDoc to make document make layer in myDoc end tell

CHAPITRE 2 : Bases de lcriture de scripts

Utilisation des objets

12

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

JS

var myDoc = app.documents.add() myDoc.layers.add()

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

VBS

Set appRef = CreateObject("Illustrator.Application") Set docRef = appRef.Documents.Add docRef.Layers.Add

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

Les variables offrent un raccourci convivial


Les variables qui contiennent des objets contiennent galement lensemble de la hirarchie de confinement qui identifie lobjet. Par exemple, pour faire rfrence myLayer, vous navez pas besoin de faire rfrence au document qui contient le calque. Les scripts suivants crent un bloc de texte dans myLayer. Notez que, lorsque vous utilisez myLayer, vous navez pas besoin de fournir dinformations de hirarchie de confinement relatives au calque. REMARQUE : Le script suivant utilise la proprit contents pour ajouter du texte au bloc. Pour linstant, ne vous souciez pas du mcanisme dutilisation des proprits. Le script suivant utilise des objets et des proprits dfinis dans le modle objet Illustrator CS6 ; il ne fonctionne donc pas pour, par exemple, InDesign ou Photoshop. AS
tell application "Adobe Illustrator CS6" set myDoc to make document set myLayer to make layer in myDoc set myTextFrame to make text frame in myLayer set contents of myTextFrame to "Hello world!" end tell var myDoc = app.documents.add() var myLayer = myDoc.layers.add() var myTextFrame = myLayer.textFrames.add() myTextFrame.contents = "Hello world!" Set Set Set Set appRef = CreateObject("Illustrator.Application") docRef = appRef.Documents.Add layerRef = docRef.Layers.Add frameRef = layerRef.TextFrames.Add myTextFrame.Contents = "Hello world!"

JS

VBS

CHAPITRE 2 : Bases de lcriture de scripts

Utilisation des objets

13

Dnomination des variables


Vos scripts seront plus faciles lire si vous crez des noms descriptifs pour vos variables. Des noms de variable comme x ou c naident pas beaucoup lorsque vous rtudiez un script. Les noms qui indiquent les donnes que la variable contient sont plus appropris, comme theDocument ou myLayer. Le fait de donner vos noms de variable un prfixe standard permet de diffrencier les variables des objets, commandes et mots-cls de votre systme dcriture de scripts. Par exemple : Vous pouvez utiliser le prfixe doc au dbut de chaque variable qui contient des objets Document, par exemple docRef ou layer pour identifier les variables qui contiennent les objets Art Layer, par exemple layerRef et layerRef2. Vous pouvez utiliser le prfixe my pour ajouter un lment personnel qui distingue vos variables des objets de script. Par exemple, myDoc ou myLayer ou myTextFrame. Tous les noms de variable doivent se conformer aux rgles suivantes : Les noms de variable doivent tre composs dun seul mot (sans espace). De nombreuses personnes utilisent des majuscules (par exemple myFirstPage) ou des tirets longs (my_first_page) pour crer des noms plus lisibles. Le nom de la variable ne peut pas commencer par un tiret long. Les noms de variable peuvent contenir des chiffres mais ne peuvent pas commencer par un chiffre. Ils ne peuvent pas contenir de guillemets ou de marques de ponctuation autres que le tiret long. Les noms de variable en JavaScript et VBScript sont sensibles la casse. thisString est diffrent de thisstring ou ThisString. Les noms de variable en AppleScript ne sont pas sensibles la casse. Chaque variable de votre script doit avoir un nom unique.

Ensembles ou lments dobjets comme rfrences dobjet


Les langages de script placent chaque objet dans un ensemble (JS ou VBS) ou un lment (AS), puis affectent un numro lobjet appel lindice au sein de llment ou de lensemble. Les objets dun lment ou dun ensemble sont des types identiques dobjets. Par exemple, chaque objet channel de votre document appartient un lment ou un ensemble channels ; chaque objet art layer appartient un lment art layers ou un ensemble artLayers. En franais, vous pouvez faire rfrence un document en disant Donnez-moi le premier document de lensemble . Les langages de script vous permettent didentifier un objet de la mme manire, en utilisant son nom dlment ou densemble et son indice. En AS, vous faites rfrence au premier document de llment documents en tant que document 1. En JS, le premier document est documents[0], (remarquez les crochets entourant lindice) car (et cest difficile de sen souvenir au dbut) JavaScript commence numroter les objets dun ensemble par 0. En VBS, le premier document est Documents(0), (remarquez la parenthse autour de lindice). VBS commence la numrotation des objets dun ensemble par 1.

CHAPITRE 2 : Bases de lcriture de scripts

Utilisation des objets

14

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

REMARQUE : Les rdacteurs de script dbutants utilisant AppleScript ne sont pas incits utiliser les numros dlment comme rfrences dobjet lorsque llment contient plus dun objet. Pour plus dexplications, reportez-vous Comment les lments et les ensembles numrotent les lments suivants ? , page 14. JS En JavaScript, vous indiquez lindice dun lment en utilisant le nom de lensemble suivi par lindice entre crochets ([]).
app.documents.add() app.documents[0].layers.add() app.documents[0].layers[0].textFrames.add()

REMARQUE : Souvenez-vous, en langage JS, les numros dindice dun ensemble commencent par 0. VBS En VBScript, vous indiquez lindice dun lment en utilisant le nom de lensemble suivi de lindice entre parenthses.
appRef.Documents.Add appRef.Documents(1).Layers.Add appRef.Documents(1).Layers(1).TextFrames.Add

Comment les lments et les ensembles numrotent les lments suivants ?


Voici comment les langages de script grent la numrotation automatique si vous ajoutez un second objet un ensemble ou un lment : AS affecte le numro 1 au nouvel objet et renumrote lobjet dj existant qui devient le numro 2. Les numros dobjet AppleScript parcourent les objets pour indiquer lobjet sur lequel vous avez travaill le plus rcemment. Ce processus peut rendre les longs scripts confus. En consquence, nous encourageons les rdacteurs dbutants utiliser des variables comme rfrences dobjet et viter lutilisation dindices. Les numros densemble JS sont statiques ; ils ne changent pas lorsque vous ajoutez un nouvel objet lensemble. La numrotation des objets sous JS indique lordre dans lequel les objets ont t ajouts lensemble. Comme le premier objet que vous avez ajout a reu le numro 0, lobjet suivant que vous ajoutez lensemble porte le numro 1 ; si vous ajoutez un troisime objet, il portera le numro 2. Par exemple, lorsque vous ajoutez un document, le document contient automatiquement un calque. Lindice du calque est [0]. Si vous ajoutez un calque, lindice du nouveau calque est [1] ; si vous ajoutez un second calque, son indice est [2]. Si vous faites glisser le calque [2] en haut de la palette Calques, il aura toujours lindice [2]. Les numros densemble VBS sont galement statiques et la numrotation seffectue exactement comme pour les ensembles JS, la diffrence prs que le premier objet de lensemble est toujours (1) en VBS.

CHAPITRE 2 : Bases de lcriture de scripts

Utilisation des objets

15

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

Rfrence lobjet actuel ou actif


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

CHAPITRE 2 : Bases de lcriture de scripts

Utilisation des proprits

16

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

Les scripts suivants crent un document, puis utilisent ce principe pour crer un calque dans le nouveau document. AS
tell application "Adobe Illustrator CS6" make document make layer in current document end tell app.documents.add() app.activeDocument.layers.add()

JS

REMARQUE : Vrifiez que vous avez saisi activeDocument sans s la fin. VBS
Set appRef = CreateObject("Illustrator.Application") docRef.Documents.Add appRef.ActiveDocument.Layers.Add

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

Utilisation des proprits


Pour dfinir ou modifier une proprit dun objet, vous devez faire trois choses : 1. Nommer lobjet. 2. Nommer la proprit. 3. Indiquer la valeur de la proprit. La valeur peut tre un des types de donnes suivants (nimporte lequel) : Une chane, qui est du texte alphanumrique, qui est interprte comme du texte. Les chanes doivent tre entoures de guillemets (" "). Les chanes incluent des valeurs comme le nom dun objet. Un nombre qui est une valeur numrique pouvant tre utilise dans des oprations mathmatiques comme laddition ou la division. Les nombres mathmatiques incluent la longueur dun ct dun bloc ou lespace entre des paragraphes, le pourcentage dopacit, la taille de police, lpaisseur du contour, etc. Notez que certaines valeurs qui ressemblent des nombres sont en fait des chanes. Par exemple, un numro de tlphone ou de scurit sociale sont des nombres mais vous les formateriez comme chanes (entre guillemets) car les donnes ne seraient pas considres comme des nombres mathmatiques.

CHAPITRE 2 : Bases de lcriture de scripts

Utilisation des proprits

17

Au sein de la catgorie numrique, il existe diffrents types de nombres : Nombre entier qui est un nombre sans dcimale. Nombres rel, fixe, court, long ou double qui sont des numros qui peuvent inclure des dcimales, comme 5,9 ou 1,0. Remarque :Ces diffrences peuvent sembler futiles mais gardez-les lesprit pour plus tard. Une variable. Lorsque vous utilisez une variable comme valeur de la proprit, vous ne placez pas la variable entre des guillemets comme vous le feriez pour une chane. Une valeur boolenne, qui est soit true ou false. REMARQUE : Souvent, les valeurs boolennes agissent comme des interrupteurs. Une valeur constante (galement appele enumeration) qui est un ensemble prdfini de valeurs dans lequel vous pouvez effectuer une slection. Lutilisation de valeurs constantes pour une proprit est similaire en termes de concept lutilisation dun menu droulant dans une application Adobe. Les constantes ainsi que leur mode dutilisation sont prsents dans Valeurs constantes et numrations , page 21. Une liste (AS) ou un tableau (JS et VBS). Certaines proprits requirent plusieurs valeurs comme les coordonnes demplacement dun point (coordonnes x et y) ou les limites dun bloc de texte ou dun objet gomtrique. Des valeurs multiples pour une seule proprit sont appeles liste en AS et tableau en JS ou VBS. Chaque langage spcifie des rgles de formatage. La liste ou le tableau doit tre prsent(e) comme suit : En AS, la liste est entoure daccolades : {} En JS, le tableau est entour de crochets : [] En VBS, le tableau est entour de parenthses et suit le mot-cl Array: Array() Les valeurs sont spares par une virgule (,). Vous pouvez inclure ou omettre des espaces aprs les virgules ; cela na pas dimportance. AS JS VBS
{3,4,5} ou {"string1", "string2", "string3"} [3,4,5] ou ["string1", "string2", "string3"] Array(3,4,5)ou Array("string1", "string2", "string3")

Une liste ou un tableau peut inclure des listes ou des tableaux imbriqus, comme une liste de coordonnes. Dans les exemples suivants, remarquez que chaque tableau imbriqu est entour individuellement daccolades, de parenthses ou de crochets et que les tableaux imbriqus sont spars par des virgules. AS JS VBS
{{x1, y1}, {x2, y2}, {x3, y3}} [[x1, y1], [x2, y2], [x3, y3]] Array(Array(x1, y1), Array(x2, y2), Array(x3, y3))

CHAPITRE 2 : Bases de lcriture de scripts

Utilisation des proprits

18

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

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

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

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

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

CHAPITRE 2 : Bases de lcriture de scripts

Utilisation des proprits

19

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

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

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

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

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

CHAPITRE 2 : Bases de lcriture de scripts

Utilisation des proprits

20

Utilisation des proprits lecture seule et lecture-criture


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

Utilisation des avertissements de scurit pour afficher la valeur dune proprit


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

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

CHAPITRE 2 : Bases de lcriture de scripts

Utilisation des proprits

21

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

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


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

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

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


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

Valeurs constantes et numrations


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

CHAPITRE 2 : Bases de lcriture de scripts

Utilisation des proprits

22

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

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

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

JS
En langage JS, saisissez le nom de lnumration, un point (.), puis la valeur de lnumration. Vous devez utiliser lorthographe et lemploi de majuscules exacts dfinis dans les rfrences de lcriture de scripts fournies par Adobe. Le formatage diffre selon les applications Adobe. Par exemple : Sous InDesign : Chaque numration commence par une lettre majuscule et tous les mots du terme compos commencent galement par une lettre majuscule. La valeur dnumration commence par une minuscule. Lexemple suivant utilise lnumration UIColor pour dfinir la couleur du calque sur vert fonc.
var myDoc = app.documents.add() var myLayer = mydoc.layers.add() myLayer.layerColor = UIColor.darkGreen

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

CHAPITRE 2 : Bases de lcriture de scripts

Utilisation des proprits

23

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

Sous Photoshop : Chaque numration commence par une lettre majuscule et tous les mots du terme compos commencent galement par une lettre majuscule. Les valeurs dnumration sont uniquement constitues de majuscules. Lexemple suivant utilise lnumration LayerKind pour faire du calque un calque de texte.
var myDoc = app.documents.add() var myLayer = mydoc.artLayers.add() myLayer.kind = LayerKind.TEXT

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

Utilisation de variables pour les valeurs de proprit


Vous pouvez utiliser des variables pour contenir des valeurs de proprit. Cela peut vous aider mettre jour un script rapidement et avec prcision. Par exemple, vous avez une publication dont toutes les photos sont au format 10 x 15 cm. Si vous utilisez une variable pour dfinir la hauteur et la largeur et que les mesures changent, vous navez qu modifier les valeurs dune variable au lieu de modifier les mesures de chaque photo du document. Le script suivant cre des variables pour contenir les valeurs de largeur et de hauteur du document, puis utilise les variables comme valeurs dans linstruction qui modifie la largeur et la hauteur. AS
tell application "Adobe Illustrator CS6" set myDoc to make document with properties {height:10, width:7} set docHeight to height of myDoc set docWidth to width of myDoc set myDoc with properties {height:docHeight - 2, width:docWidth - 2} end tell var myDoc = app.documents.add(7, 10) var docHeight = myDoc.height var docWidth = myDoc.width myDoc.resizeCanvas((docHeight - 2), (docWidth - 2))

JS

CHAPITRE 2 : Bases de lcriture de scripts

Utilisation de mthodes ou commandes

24

VBS

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

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

Utilisation de mthodes ou commandes


Les commandes (en AS) et les mthodes (en VBS et JS) sont des instructions que vous ajoutez un script pour effectuer des tches ou obtenir des rsultats. Par exemple, vous pouvez utiliser la commande/mthode print/print()/PrintOut pour imprimer un document. AS Les commandes AS apparaissent au dbut dune instruction de script comme un verbe limpratif. La commande est suivie par une rfrence lobjet sur lequel vous souhaitez que la commande agisse. Le script suivant imprime le document actif :
tell application "Adobe InDesign CS6" print current document end tell

JS

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

VBS

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

Paramtres des commandes ou mthodes


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

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

CHAPITRE 2 : Bases de lcriture de scripts

Utilisation de mthodes ou commandes

25

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

JS Le paramtre de la mthode est entour de parenthses qui suivent le nom de la mthode.


var myDoc = app.documents.add() var myLayer = myDoc.layers.add() var myLayer2 = myDoc.layers.add() myLayer2.merge(myLayer)

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

Paramtres multiples
Lorsque vous dfinissez plus dun paramtre pour une commande ou une mthode, vous devez suivre des rgles spcifiques. AS Il existe deux types de paramtres pour les commandes AS : Un paramtre direct qui dfinit lobjet direct de laction excute par la commande Des paramtres libells qui sont tous les paramtres autres que les paramtres directs Le paramtre direct doit suivre directement la commande. Dans linstruction suivante, la commande est make et le paramtre direct est document.
make document

CHAPITRE 2 : Bases de lcriture de scripts

Utilisation de mthodes ou commandes

26

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

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

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

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

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

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

CHAPITRE 2 : Bases de lcriture de scripts

Instructions Tell (AS uniquement)

27

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

La balise demplacement undefined nest pas sensible la casse.

Instructions Tell (AS uniquement)


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

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

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

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

CHAPITRE 2 : Bases de lcriture de scripts

Remarques sur les variables

28

Remarques sur les variables


Cette section fournit des informations supplmentaires sur lutilisation des variables.

Modification de la valeur dune variable


Vous pouvez modifier la valeur dune variable nimporte quel moment. Pour ce faire, utilisez simplement le nom de la variable suivi de loprateur daffectation (to en AS ; = en JS ou VBS) et de la nouvelle valeur. Les scripts suivants crent la variable layerRef pour contenir un nouveau calque, puis crent immdiatement un second calque et laffectent comme nouvelle valeur de layerRef. AS Pour modifier la valeur dune variable en AS, utilisez la commande set.
tell application "Adobe Illustrator CS6" set docRef to make document set layerRef to make layer in myDoc with properties {name:"First Layer"} set layerRef to make layer in myDoc with properties {name:"Second Layer"} end tell

JS

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

VBS

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


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

Utilisation de variables pour faire rfrence des objets existants


Vous pouvez galement crer des variables pour contenir des objets existants. AS
tell application "Adobe Photoshop CS6" set myDoc to active document end tell var myDoc = app.activeDocument

JS VBS

Set appRef = CreateObject("Illustrator.Application") Set docRef = appRef.ActiveDocument

CHAPITRE 2 : Bases de lcriture de scripts

Rendre les fichiers de script lisibles

29

Rendre les fichiers de script lisibles


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

Commenter le script
Un commentaire de script est un texte que le moteur de script ignore lorsquil excute le script. Les commentaires sont trs utiles lorsque vous voulez documenter le fonctionnement ou lobjet dun script (pour vous-mme ou pour quelquun dautre). La plupart des programmeurs, mme les plus qualifis, prennent du temps pour insrer des commentaires pour presque chaque lment dun script. Les commentaires peuvent ne pas vous sembler importants lorsque vous rdigez vos scripts mais vous serez content davoir inclus des commentaires lorsque, un mois ou une anne plus tard, vous ouvrirez un script et vous vous demanderez ce que vous aviez essay de faire et pourquoi. AS Pour commenter toute ou partie dune ligne en AS, saisissez deux traits dunion (--) au dbut du commentaire. Pour commenter plusieurs lignes, entourez le commentaire par (* et *).
tell application "Adobe InDesign CS6" --This is a single-line comment print current document --this is a partial-line comment --the hyphens hide everything to their right from the scripting engine (* This is a multi-line comment, which is completely ignored by the scripting engine, no matter how many lines it contains. The trick is to remember to close the comment. If you dont the rest of your script is hidden from the scripting engine!*) end tell

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

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

CHAPITRE 2 : Bases de lcriture de scripts

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.

Continuer des lignes longues en AppleScript et VBScript


En AppleScript et VBScript, un retour chariot la fin dune ligne signale la fin dune instruction. Lorsque votre script est trop long pour tenir sur une ligne, vous pouvez utiliser des caractres spciaux de continuation - caractres qui insrent un saut de ligne, mais indiquent au script de lire la ligne coupe comme une seule instruction. REMARQUE : Vous pouvez galement tendre la fentre dditeur de scripts pour poursuivre linstruction sur une seule ligne. AS Tapez le caractre (Option+Retour) pour couper une longue ligne tout en continuant linstruction.
tell application "Adobe InDesign CS6" set myDoc to make document set myLayer to make layer in myDoc with properties {name:"Mon premier calque"} at the beginning of myDoc (* sans le caractre de saut de ligne, AS considrerait que cette ligne est une instruction incomplte*) (* notez que les caractres de continuation ne sont pas requis dans un commentaire sur plusieurs lignes tel que celui-ci*) set myLayer2 to make layer in myDoc with properties {name:"Mon autre calque"} before myLayer end tell

VBS

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

CHAPITRE 2 : Bases de lcriture de scripts

Utilisation de tableaux

31

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

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

Lexemple suivant inclut les mmes instructions en VBScript :


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

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

Cration dobjets
Votre premier script dmontrait comment crer un objet en utilisant la commande make (AS), la mthode add() (JS) ou la mthode Add (VBS) de lobjet densemble de lobjet. Par exemple : AS
tell application "Adobe Photoshop CS6" make document end tell app.documents.add()

JS VBS

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

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

CHAPITRE 2 : Bases de lcriture de scripts

Informations supplmentaires sur lcriture de scripts

32

Informations supplmentaires sur lcriture de scripts


Vous avez prsent suffisamment de connaissances pour crer des scripts simples qui excutent des tches de base. Pour approfondir vos connaissances dans le domaine de lcriture de scripts, reportez-vous aux documents suivants : Techniques dcriture de scripts avances , page 46 Le guide dcriture de scripts Adobe de votre application. Chapitre 6, Bibliographie

Recherche de proprits et de mthodes dobjets


Adobe fournit les ressources suivantes pour vous permettre de trouver et dutiliser les objets, mthodes ou commandes, proprits, numrations et paramtres dont vous avez besoin pour crer des scripts efficaces. Dictionnaires dobjets ou bibliothques de types. Chaque application Adobe compatible avec les scripts fournit une bibliothque ou un dictionnaire de rfrence dans votre environnement dditeur de scripts. Les documents de rfrence sur lcriture de scripts dAdobe (au format PDF) qui se trouvent sur votre CD dinstallation. (Les documents de rfrence sur lcriture de scripts ne sont pas fournis avec toutes les applications Adobe.)

Utilisation de navigateurs dans un environnement de script


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

Dictionnaires de donnes AppleScript


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

Affichage des dictionnaires AppleScript


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

Utilisation des dictionnaires AppleScript


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

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

33

CHAPITRE 3 : Recherche de proprits et de mthodes dobjets

Utilisation de navigateurs dans un environnement de script

34

3. Chaque liste de proprits contient les informations suivantes : Le nom de la proprit. Le type de donnes entre parenthses. Si le type de donnes est un objet, ce type de donnes constitue un lien hypertexte vers lobjet. Si le type de donnes est une numration, le type de donnes est anything (nimporte lequel). Les valeurs valides sont listes aprs la description de la proprit et spares par des barres obliques (/), elles sont galement prcdes de la mention Can return: . La valeur daccs : Si lobjet est en lecture seule, r/o apparat aprs le type de donnes. Si lobjet est en lecture-criture, aucune valeur daccs nest donne. Une description de la proprit. 1. Slectionnez une suite pour afficher les objets et commandes de cette suite dans la fentre de la partie haute de lcran. 3. Affichez les informations sur lobjet dans la fentre infrieure. Description de lobjet. Liens vers les lments de lobjet. 2. Slectionnez 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. 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. Les valeurs numres sont prcdes de la mention Can return: .

CHAPITRE 3 : Recherche de proprits et de mthodes dobjets

Utilisation de navigateurs dans un environnement de script

35

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

La description dune commande figure dans la fentre de visualisation infrieure. Sous la description, les objets avec lesquels vous pouvez utiliser la commande sont numrs. Les paramtres sont numrs sous la liste des objets pris en charge. Si le paramtre est optionnel, il est indiqu entre crochets ([ ]). Si aucun crochet napparat avant et aprs le nom du paramtre, celui-ci est obligatoire. Chaque nom de paramtre est suivi du type de donnes. Si le type de donnes est un objet, ce type de donnes constitue un lien hypertexte vers lobjet. Si le type de donnes est une numration, les valeurs valides sont prcdes de la mention Can return: , puis listes et spares par des barres obliques (/). 1. Slectionnez une suite pour afficher les objets et commandes de cette suite dans la fentre de la partie haute de lcran. 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. 2. Slectionnez la commande.

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

Remarque : Lorsque la valeur du paramtre est une numration, les valeurs numres sont prcdes de la mention Can accept: .

CHAPITRE 3 : Recherche de proprits et de mthodes dobjets

Utilisation de navigateurs dans un environnement de script

36

Visionneuse de modle objet (Object Model Viewer) JavaScript


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

Bibliothques de types VBScript


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

Affichage des bibliothques de types VBScript


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

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

Fentre Membres de .

CHAPITRE 3 : Recherche de proprits et de mthodes dobjets

Utilisation de navigateurs dans un environnement de script

37

Utilisation des bibliothques de types VBScript


La bibliothque de types dobjets VBS affiche les objets et les constantes dans la fentre Classes situe gauche dans la fentre Explorateur dobjets. Dans la fentre Classes : Les objets sont indiqus par licne suivante : Les constantes sont indiques par licne suivante : Pour afficher les proprits et mthodes dun objet, slectionnez le type dobjet dans la fentre Classes. Les proprits et mthodes sont listes dans la fentre Membres de situe droite de la fentre Classes. Les proprits sont indiques par licne suivante : Les mthodes sont indiques par licne suivante : Utilisation de listes de proprits dans lExplorateur dobjets Lorsque vous slectionnez une proprit dans la fentre Membres de, les informations concernant cette proprit saffichent dans la fentre dinformations au bas de la fentre Explorateur dobjets comme suit : Le nom de la proprit est suivi du type de donnes. Si le type de donnes est une constante, cette constante constitue un lien hypertexte vers les valeurs de la constante. Les noms de constante commencent par un prfixe correspondant labrviation du nom de lapplication Adobe. Par exemple : Le prfixe Ps est utilis pour des numrations dans Photoshop CS6. Exemples : PsColorProfileType, PsBitsPerChannelType Le prfixe id est utilis pour des numrations dans InDesign CS6. Exemples : idRenderingIntent, idPageOrientation Le prfixe Ai est utilis pour les numrations dans Adobe Illustrator CS6. Exemples : AiCropOptions, AiBlendModes Si le type de donnes est un objet, le nom de lobjet constitue un lien hypertexte vers le type dobjet.

CHAPITRE 3 : Recherche de proprits et de mthodes dobjets

Utilisation de navigateurs dans un environnement de script

38

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

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

1. Slectionnez la proprit dans la fentre Membres de .

La description de la proprit figure au bas de la fentre dinformations.

CHAPITRE 3 : Recherche de proprits et de mthodes dobjets

Utilisation de navigateurs dans un environnement de script

39

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

Pour rechercher la valeur numrique dune numration, suivez la procdure suivante : 1. Cliquez sur le lien menant aux informations concernant lnumration.

Cliquez sur le lien menant aux informations concernant lnumration.

CHAPITRE 3 : Recherche de proprits et de mthodes dobjets

Utilisation de navigateurs dans un environnement de script

40

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

Cliquez sur la valeur dnumration dans la fentre de droite pour afficher sa valeur numrique dans la fentre du bas. Utilisation des listes de mthodes Lorsque vous slectionnez une mthode dans la fentre Membres de , les informations concernant cette mthode saffichent dans le volet dinformations au bas de la fentre Explorateur dobjets comme suit : Le nom de la mthode est suivi des paramtres. Les paramtres optionnels sont indiqus entre crochets ([ ]). Si aucun crochet napparat avant et aprs le nom du paramtre, celui-ci est obligatoire. Chaque nom de paramtre est suivi du type de donnes. Si le type de donnes est un objet, ce type de donnes constitue un lien hypertexte vers lobjet. Si le type de donnes est une numration, le nom de lnumration commence par les initiales de lapplication et constitue un lien hypertexte vers les informations concernant lnumration. Si une valeur par dfaut existe pour un paramtre, cette valeur est liste aprs le type de donnes, aprs le symbole gal (=). REMARQUE : La valeur par dfaut est utilise si vous ne dfinissez aucune valeur pour un paramtre. Seuls les paramtres optionnels ont des valeurs par dfaut.

CHAPITRE 3 : Recherche de proprits et de mthodes dobjets

Utilisation des documents de rfrence Adobe relatifs lcriture de scripts

41

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.

1. Slectionnez la mthode dans la fentre Membres de . Les paramtres sont rpertoris entre parenthses aprs le nom de la mthode, les paramtres optionnels tant indiqus entre crochets ([ ]). La description de la mthode apparat au bas de la fentre dinformations. Sil existe une valeur par dfaut, celle-ci est prcde du symbole gal (=). Remarque : Nimporte quel type de donnes peut avoir une valeur par dfaut.

Utilisation des documents de rfrence Adobe relatifs lcriture de scripts


Adobe fournit des rfrences relatives lcriture de scripts pour de nombreuses applications. Les rfrences figurent sur votre CD dinstallation. Dans les rfrences relatives lcriture de scripts, chaque langage est document dans un chapitre diffrent. Dans chaque chapitre, les objets sont numrs par ordre alphabtique. Les tableaux suivants sont fournis pour chaque objet : Elments (AS uniquement) Proprits Mthodes, commandes ou fonctions De plus, la plupart des sections dobjets contiennent un exemple dcriture de script utilisant lobjet ainsi que certaines de ses proprits, mthodes et commandes. Vous pouvez vous servir de nimporte quel script comme exemple ou point de dpart pour votre propre script, dans lequel vous pourrez changer des proprits ou des mthodes.

CHAPITRE 3 : Recherche de proprits et de mthodes dobjets

Utilisation des documents de rfrence Adobe relatifs lcriture de scripts

42

Utilisation du tableau dlments dun objet (AS uniquement)


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

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

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

Utilisation du tableau de proprits dun objet


Le tableau de proprits dun objet contient les informations suivantes : Les proprits que vous pouvez utiliser avec lobjet Le type de valeur pour chaque proprit Lorsque le type de valeur est une constante ou une numration, la valeur est prsente soit comme une liste de valeurs valides, soit comme un lien hypertexte vers la liste de constantes. Lorsque le type de valeur est un autre objet, la valeur est prsente comme un lien hypertexte vers la liste dobjets. Le statut dentre de la proprit : lecture seule ou lecture-criture

CHAPITRE 3 : Recherche de proprits et de mthodes dobjets

Utilisation des documents de rfrence Adobe relatifs lcriture de scripts

43

Une description qui comprend les informations suivantes : Une explication de ce que fait ou dfinit la proprit Les plages de valeurs valides Les dpendances dautres proprits Lexemple suivant de tableau de proprits pour un objet art layer dans Photoshop contient des exemples de chaque type de donnes. Proprit
bounds

Type de valeur Tableau de 4 chiffres


LayerKind string number (double)

Ce que cest Lecture seule. Un tableau de coordonnes qui dcrivent le rectangle limitatif du calque au format [y1, x1, y2, x2]. Lecture seule. Le type de calque. Lecture-criture. Le nom du calque. Lecture-criture. Lopacit en pourcentage. (Plage : de 0.0 100.0) Lecture seule. Llment de texte qui est associ au calque. REMARQUE : Valide uniquement quand kind = LayerKind.TEXT. Voir kind.

kind name opacity textItem

Objet TextItem

visible

Boolen

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

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

REMARQUE : Vous ne pouvez pas dfinir les limites du calque car la proprit bounds est en lecture seule. JS
var myDoc = app.documents.add() var myLayer = myDoc.artLayers.add() alert(myLayer.bounds) // can't set the property because it is read-only myLayer.kind = LayerKind.TEXT myLayer.name = "Captions" myLayer.opacity = 45.5 // can use a decimal point because the type is not integer myLayer.textItem.contents = "Day 1: John goes to school" //see the properties table for the textItem object to find the contents property myLayer.visible = true

CHAPITRE 3 : Recherche de proprits et de mthodes dobjets

Utilisation des documents de rfrence Adobe relatifs lcriture de scripts

44

VBS

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

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

Utilisation du tableau de mthodes dun objet


Le tableau de mthodes dun objet contient les informations suivantes : Les mthodes que vous pouvez utiliser avec lobjet Le(s) paramtre(s) de chaque mthode Lorsque le type de paramtre est une constante ou un autre objet, la valeur est prsente comme un lien hypertexte vers la constante ou la liste dobjets. Dans lexemple suivant de tableau de mthodes, les types de paramtres NewDocumentMode et DocumentFill sont des constantes. Les paramtres peuvent tre obligatoires ou optionnels. Les paramtres optionnels sont indiqus entre crochets ([]). Le(s) type(s) de valeurs de retour, qui est (sont) ce que produit la mthode Lorsque le retour est une constante ou un autre objet, la valeur est prsente comme un lien hypertexte vers la constante ou la liste dobjets. Dans lexemple suivant de tableau de mthodes, la valeur de retour Document est un objet. Une description, qui dfinit ce que fait la mthode Lexemple suivant de tableau de mthodes numre les paramtres pour la mthode add pour un document Photoshop CS6. Mthode
add [width] [, height] [, resolution]) [, name] [, mode]) [, initialFill] [, pixelAspectRatio])

Type de paramtre
UnitValue UnitValue number (double) string NewDocumentMode DocumentFill number (double)

Retours Document

Ce que cela fait Ajoute un objet document. (pixelAspectRatio Plage : 0.10 10.00)

CHAPITRE 3 : Recherche de proprits et de mthodes dobjets

Utilisation des documents de rfrence Adobe relatifs lcriture de scripts

45

Dans le tableau prcdent : 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 : VBS :
make document with properties {width:5, height:7} app.documents.add(5, 7) appRef.Documents.Add(5, 7)

mode et initialFill prennent des valeurs constantes.

Les instructions de script suivantes dfinissent des valeurs pour chaque paramtre numr dans lexemple de tableau des mthodes. AS
make documement with properties {width:5, height:7, resolution:72, name:"Diary", mode:bitmap, initial fill:transparent, pixel aspect ratio: 4.7}

JS VBS

app.documents.add(5, 7, 72, "Diary", NewDocumentMode.BITMAP, DocumentFill.TRANSPARENT, 4.7) appRef.Documents.Add(5, 7, 72, "Diary", 5, 3, 4.7 )

Techniques dcriture de scripts avances


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

Instructions conditionnelles
instructions if
Si vous pouviez parler votre application Adobe, vous souhaiteriez pouvoir lui dire : si le document na quun calque, cre un deuxime calque . Cela constitue un exemple dinstruction conditionnelle. Les instructions conditionnelles prennent des dcisions ; elles donnent vos scripts un moyen dvaluer quelque chose, comme le nombre de calques, et dagir en fonction du rsultat. Si la condition est satisfaite, le script excute alors laction comprise dans linstruction if. Si la condition nest pas satisfaite, le script ignore laction comprise dans linstruction if. Chacun des scripts suivants ouvre un document puis vrifie si le document comprend un calque unique. Sil nexiste quun seul calque, le script ajoute un calque et rgle lopacit de remplissage du nouveau calque sur 65 %. AS Une instruction if en langage AS commence par le mot if suivi par la phrase de comparaison entre parenthses, puis du mot then. Vous devez fermer linstruction if par end if.
tell application "Adobe Photoshop CS6" --modify the hard-drive name at the beginning of the filepath, if needed set myFilepath to alias "c:Applications:Adobe Photoshop CS6:Samples:Ducky.tif" open myFilepath set myDoc to current document tell myDoc if (art layer count = 1) then set myLayer to make art layer with properties {fill opacity:65} end if end tell end tell

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

46

CHAPITRE 4 : Techniques dcriture de scripts avances

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

CHAPITRE 4 : Techniques dcriture de scripts avances

Boucles

48

JS

var myDoc = app.open(File("/c/Program Files/Adobe/Adobe Photoshop CS6/Samples/Ducky.tif")); if(myDoc.artLayers.length < 2){ myDoc.activeLayer.fillOpacity = 50 } else{ myDoc.activeLayer.fillOpacity = 65 } Set appRef = CreateObject("Photoshop.Application") Set myDoc = appRef.Open("/c/Program Files/Adobe/Adobe Photoshop CS6/Samples/Ducky1.tif") If myDoc.ArtLayers.Count < 2 Then myDoc.ActiveLayer.FillOpacity = 50 Else myDoc.ActiveLayer.FillOpacity = 65 End If

VBS

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

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

CHAPITRE 4 : Techniques dcriture de scripts avances

Boucles

49

JS

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

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

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

CHAPITRE 4 : Techniques dcriture de scripts avances

Informations supplmentaires sur lcriture de scripts

50

Informations supplmentaires sur lcriture de scripts


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

Rsolution des problmes


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

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

JS

var if else with

VBS

Dim Set MsgBox

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

Messages derreur de lditeur de scripts AppleScript


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

51

CHAPITRE 5 : Rsolution des problmes

Messages derreur de lESTK

52

Les messages derreur les plus courants sont expliqus ci-dessous. Cant get object : cela indique gnralement que vous navez pas bien dfini lobjet dans la hirarchie de confinement. Essayez dajouter in parent-object (o parent-object est lobjet qui contient lobjet indiqu dans le message derreur) aprs le nom de lobjet dans votre script, ou crez une instruction imbrique tell qui nomme lobjet parent. Expected "" but found end of script : assurez-vous que tous les guillemets ouvrent et ferment bien les chanes. Requested property not available for this object : vrifiez lorthographe des noms de toutes les proprits. CONSEIL : Slectionnez le journal des rsultats (Result Log) en bas de la fentre de lditeur de scripts pour voir la progression de votre script ligne par ligne.

Messages derreur de lESTK


LESTK vous prvient de la prsence derreurs de plusieurs manires : 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 : 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. Si votre script contient une erreur dexcution, telle quun objet incorrectement identifi ou une proprit qui nexiste pas pour lobjet quelle essaye dutiliser, linstruction errone est mise en surbrillance mais le script continue de sexcuter, comme lindique licne tournante dans le coin infrieur droit de lcran. En outre, lerreur est dcrite la fois dans la fentre de la console JavaScript et dans la barre dtat.

CHAPITRE 5 : Rsolution des problmes

Messages derreur de VBScript

53

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

Messages derreur de VBScript


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

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

AppleScript
Pour obtenir plus dinformations et dinstructions sur lutilisation du langage de script AppleScript, reportez-vous aux documents et sources suivants : AppleScript for the Internet: Visual QuickStart Guide, 1st ed., Ethan Wilde, Peachpit Press, 1998. ISBN 0-201-35359-8. AppleScript Language Guide: English Dialect, 1st ed., Apple Computer, Inc., Addison-Wesley Publishing Co., 1993. ISBN 0-201-40735-3. Danny Goodmans AppleScript Handbook, 2nd ed., Danny Goodman, iUniverse, 1998. ISBN 0-966-55141-9. Site web AppleScript dApple Computer, Inc. : www.apple.com/applescript

JavaScript
Pour obtenir plus dinformations et dinstructions sur lutilisation du langage de script JavaScript, reportez-vous aux documents et sources suivants : 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 : Learn to Program with VBScript 6, 1st ed., John Smiley, Active Path, 1998. ISBN 1-902-74500-0 Microsoft VBScript 6.0 Professional, 1st ed., Michael Halvorson, Microsoft Press, 1998. ISBN 1-572-31809-0. VBS & VBSA in a Nutshell, 1st ed., Paul Lomax, OReilly, 1998. ISBN 1-56592-358-8 Site web de scripts du rseau des dveloppeurs Microsoft (MSDN) : msdn.microsoft.com/scripting

54

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

E
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

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

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

55

Index

56

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

L
longues lignes, 30

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

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

S
scripts excution automatique, 7

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

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

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

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

Vous aimerez peut-être aussi