Tout d'abord, nous avons besoin d'un conteneur pouvant accueillir les échantillons de code. Conventionnellement, nous utiliserons la palette “Intitulé de script” accessible par Fenêtre > Automatisation > Intitulé de script. Ce mystérieux réceptable permet à l'utilisateur d'attacher une chaîne de caractères arbitraire, un label, au composant de mise en page (bloc-texte, polygone, etc.) actuellement sélectionné. La seule utilité de ce dispositif est d'offrir une courroie de transmission avec le scripting. En général, la propriété label ainsi récupérée sert à identifier ou à “tatouer” les objets de mise en page impliqués dans un script, mais nous allons l'utiliser pour encapsuler les instructions à faire interpréter.

Keep in mind that the Script Label data are connected to the page item that is currently Gardez bien à l'esprit que les données saisies dans “Intitulé de script” sont connectées au composant de mise en page en cours de sélection. Par conséquent, vous devez disposer à cette fin d'un tel objet, au moins temporairement, dans votre document InDesign.

Nous voulons maintenant récupérer le label en question, de l'extérieur, pour le traiter comme s'il s'agissait d'un véritable script. La méthode doScript de l'objet Application est parfaitement adaptée à cet objectif. Nous créons donc un méta-script, RunLabel.js, avec le code suivant :

Application.prototype.main = function()
//--------------------------------------
// Interprète le label de l'objet selectionné comme
// s'il s'agissait d'un script. Attention: si vous changez
// le label, quittez Intitulé de script pour l'actualiser
{
try
    {
    if ( this.selection.length <= 0 )
        {
        throw new Error("No selection!");
        }
    var snippet = this.selection[0].label;
    this.doScript(snippet, ScriptLanguage.javascript,
        undefined, UndoModes.entireScript, "RunLabel");
    }
catch(ex)
    {
    alert(ex);
    }
}
app.main();
 

Pour installer et tester cet outil, sauvegardez le fichier RunLabel.js dans votre dossier de scripts, et voilà ! Le méta-script se charge d'envoyer à l'interpréteur Javascript le code rédigé en tant qu'intitulé de script (pour l'objet sélectionné). Notez que l'option UndoModes.fastEntireScript rend l'annulation possible après exécution de l'ensemble du code.

RunLabel Demo

RunLabel Demo