Scripting InDesign – Débutant

Je suis un programmeur JavaScript expérimenté, et je travaille actuellement sur un projet qui nécessite beaucoup de travail et j'espère que le processus peut être automatisé en utilisant des scripts pour InDesign.

Essentiellement, voici ce que je veux faire. J'ai une chaîne de 5 (parfois, mais rarement, 4). J'ai alors trois rectangles sous le cadre de texte auquel j'aimerais appliquer un échantillon, selon les chiffres définitifs du numéro. Les chiffres 0 à 9 sont affectés d'une couleur spécifique (et d'un échantillon), et au moment où je passe manuellement chaque rectangle et en le sélectionnant selon les deux derniers chiffres, et en appliquant l'échantillon à tous ceux sélectionnés.

Je suis convaincu qu'il doit être possible d'automatiser le processus en utilisant les scripts utilisateur InDesign, mais je n'ai pas une bonne compréhension de cela. Voici un exemple de la façon dont les couleurs sont attribuées aux codes à barres spéciaux:

0 = rouge 1 = bleu 2 = vert ….

Donc pour le code suivant: 12312, j'aimerais que les barres en dessous aient les couleurs suivantes:

Bleu bleu rouge

(C.-à-d. Rangée supérieure et inférieure = avant dernier chiffre; ligne intermédiaire = dernier chiffre).

Quelqu'un pourrait-il m'indiquer comment je pourrais écrire un script qui suit les pages de mon document, trouve les codes, extrait les deux derniers chiffres puis applique un échantillon à l'objet rectangle, en fonction du nombre …

Je suis convaincu que je pourrais écrire quelque chose comme ça en utilisant régulièrement JavaScript et HTML, mais cela étant dit, je connais le DOM en HTML …

Toute aide ou pointeurs seront bien reçus!

Voici un exemple de script que je viens de taper rapide qui devrait vous aider à démarrer. Vous devrez peut-être l'adapter, mais je pense qu'il couvre ce que vous demandez.

test(); function test(){ //Open your document: var myDoc = app.open('c:/users/user/desktop/test.indd'); //Get all groups for this document: var myGroups = myDoc.groups; //Get all swatches for this document: var mySwatches = myDoc.swatches; //Loop through all of your groups: for (var i = 0; i < myGroups.length; i++){ //for each group we need to get the code from the text frame, //so get the text frame first: var myTextFrame = myGroups[i].textFrames[0]; //Now get the color code from the text frame: var myColorCode = myTextFrame.contents; //get the rectangle from this group: var myRect = myGroups[i].rectangles[0]; //here you would want to parse out whichever digits you need from myColorCode //use the code to determine which swatch to use, loop through the swatches: for(var s = 0; s < mySwatches.length; s++){ //find it: var mySwatch = mySwatches[s]; //apply this swatch to your rectangle, and leave the loop: myRect.fillColor = mySwatch; break; } } } 

J'espère que ça aide! Voici quelques références de script directement d'Adobe qui devraient vous aider. Faites-moi savoir si vous avez des questions sur l'exemple ci-dessus.