11 avril 2013
Comm. : 11

Exécuter plusieurs Scripts en séquence dans InDesign

Vous utilisez sans doute déjà des scripts dans Adobe InDesign. Les scripts sont d’excellents compagnons pour accélérer et sécuriser votre production. Mais si vous souhaitez en exécuter plusieurs, vous êtes amenés à lancer chaque script individuellement.

La plupart de ces routines agissent en quelques (milli)secondes. Mais peut-être certaines d’entre-elles prennent davantage de temps. Vous vous retrouvez alors à attendre que vos scripts s’achèvent pour en lancer d’autres, ce n’est pas très pertinent.

Il serait bon de pouvoir définir une liste de scripts à exécuter à la chaîne dans InDesign. Cette fonctionnalité n’existe pas en natif. Les développeurs savent préparer ce genre de séquence très facilement. Mais pour ceux qui ne connaissent rien au scripting, nous leur dédions un nouveau panneau : BatchRunner.

Scripter une chaîne de scripts

Il existe en javascript une méthode dédiée à l’exécution de scripts tiers : doScript. Cette méthode appartient à l’objet Application (app) et permet d’éxécuter soit du code contenu au sein du même fichier de script soit un script externe. C’est cette deuxième possibilité qui nous intéresse ici.

any doScript (script: {File | String | JavaScript Function} [, language: ScriptLanguage=ScriptLanguage.UNKNOWN][, withArguments: Array of any][, undoMode: UndoModes=UndoModes.SCRIPT_REQUEST][,undoName: string=Script]) Executes the script in the specified language as a single transaction.


Je ne m’attarderai pas davantage sur cette méthode. Vous trouverez tous les détails dans les guides du scripting pour Adobe InDesign mais cette légère introduction vous permet d’entrevoir comment écrire un script capable d’exécuter une séquence de scripts. Par exemple, le script suivant entraînera l’exécution des fichiers définis en variables.

function batch()
{
   var f1 = File ( "script_1.jsx" );
   var f2 = File ( "script_2.jsx" );
   var f3 = File ( "script_3.jsx" );

   app.doScript ( f1 );
   app.doScript ( f2 );
   app.doScript ( f3 );
}

batch();

Il est donc extrêmement aisé de bricoler une séquence de script. Mais pour certains d’entre vous, le fait même d’ouvrir un éditeur de code génère un prurit fâcheux. Pour d’autres, la migraine les aura saisi dès la lecture des quelques lignes ci-dessus. Il était donc intéressant de concevoir un outil permettant la création et l’exécution de scripts en toute transparence. C’est l’objectif de BatchRunner.

BatchRunner

BatchRunner est une extension que vous retrouverez sous le menu « Fenêtre/Extensions ». Une fois lancé, le panneau dispose d’une interface très simple.

UI BatchRunner

Les éléments clés de l’interface sont :

1. La liste des scripts (contient tous les scripts accessibles dans la palette Scripts d’InDesign)

2. La liste de séquence (les scripts placés dans cette liste seront exécutés automatiquement)

3. Le bouton de lancement de la séquence que vous aurez préparée

Créer une séquence

Pour cette démo, nous avons préparé trois scripts ( 1.jsx, 2.jsx, 3.jsx). Ces scripts vont simplement afficher leur nom de fichier. Cela va nous permettre de vérifier que notre séquence se déroule comme attendu. Comme notre liste de scripts est assez longue, nous allons utiliser le champ de filtre. Nous utilisons donc une expression régulière : ^\d

filter

Il ne reste que les trois scripts qui nous intéresse. Pour commencer, il nous suffit de glisser/déposer des scripts depuis la liste des scripts (1) vers la séquence (2).

Drag Scripts

Exécuter une séquence

Votre séquence est maintenant prête à être exécuter. Il ne vous reste plus qu’à lancer votre séquence en cliquant sur « Go ».

Qu’obtenons-nous ?

alertes 1 2 3

Nos trois scripts sont bien exécutés dans l’ordre de la séquence. Dailleurs si nous modifions l’ordre de la séquence, l’exécution des scripts s’en trouve affectée de la même façon.

Sans écrire une seule ligne de code, il est aisé de créer des séquences de script et même d’en changer l’ordre d’exécution à la volée.

Contexte d’exécution

Il faut noter que BatchRunner prend le parti pris de s’effacer devant les scripts qu’il exécute. BatchRunner ne vérifie aucun contexte d’exécution. Il exécute mécaniquement les scripts un par un sans contrôle sur les conditions d’exécution des scripts.

Une fois cela compris, vous pourrez exécuter votre séquence de scripts une fois (bouton « Go ») ou répétez votre séquence sur les documents ouverts (bouton « Docs ») ou bien sur une sélection de fichiers (bouton « Fichiers »).

Presets

Tout ajout de script est conservé automatiquement dans le panneau. Vous retrouverez vos séquences telles quelles à la prochaine ouverture. Vous pouvez aussi décidez de sauvegarder votre séquence dans un preset particulier.

Nous espérons que ce panneau vous permettra de gagner encore plus en efficacité. N’hésitez pas à nous faire part de vos remarques et commentaires.

A bientôt,

Télécharger BatchRunner

11 réponses à “Exécuter plusieurs Scripts en séquence dans InDesign

  1. Nahin dit :

    it’s a great InDesign blog you granted here. Helpful and useful sharing of yours. Plenty amazing looking of your blog. Thanks!

  2. Capucine dit :

    Bravo pour vos diverses interventions.
    BatchRunner me serait bien utile si je parvenais à l’installer. Mais je me heurte aux messages suivants :
    – avec Extension Manager CC : « Le fichier MXI de cette extension n’est pas valide »;
    – avec Extension Manager CS6 : « L’extension « BatchRunner » ne contient pas de signature valide ».
    Verriez-vous quelque raison à ce comportement ? (Je travaille sous W7 et mes applications Adobe sont à jour.)
    Merci.

  3. Loïc Aigon dit :

    @Capucine,

    Effectivement, il semble que certains aient rencontré des difficultés à l’installation. Je viens de mettre le fichier à jour et tester l’installation sous Extension Manager CC/CS6 et CS5.5.

    Téléchargez à nouveau le fichier et dîtes moi si tout est ok.

    Loic

  4. Bonjour,
    juste un petit mot pour vous signaler que le lien vers le script BatchRunner ne fonctionne pas sur cette nouvelle version du site (très agréable d’utilisation).
    Quoi qu’il en soit, merci de partager ainsi tous ces scripts. 🙂

  5. Obi-wan Kenobi dit :

    Salut Loïc,

    Peut-on installer BatchRunner sur ID CC 2015 ?
    A+
    Michel

    • Loïc Aigon dit :

      Hello comme expliqué par ailleurs, tu peux installer le swf dans le répertoire /Plugins/Panels de l’application. Il faut au préalable dézipper le zxp pour en extraire le swf. Mais sans révéler de secrets, le support des panneaux flash est compté. Le panneau pourrait ne lus fonctionner lors d’une prochaine mise à jour CC.

  6. This article is going to help me a lot. Thank you very much for your invention and sharing this with us.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *