Scripts ExtendScript pour After Effects : le guide de démarrage pour motion designers non-développeurs
This article is currently available in French only. The page chrome is translated, the article body is not yet.
Chaque motion designer a ce moment : il répète la même manipulation pour la vingtième fois en une heure, il sait qu'un script automatiserait ça en deux secondes, mais il ne sait pas par où commencer. ExtendScript fait peur parce qu'il ressemble à du code. Pourtant, la majorité des scripts utiles en production ne demandent pas de maîtriser l'informatique ; ils demandent de comprendre comment After Effects organise ses données, puis d'apprendre à les manipuler avec une syntaxe accessible.
Cet article s'adresse aux animateurs et motion designers qui n'ont jamais écrit une ligne de code, ou presque. L'objectif n'est pas de vous transformer en développeur. C'est de vous donner les clés pour automatiser vos tâches répétitives, comprendre les scripts existants que vous téléchargez, et éventuellement créer vos propres outils de production. On part de zéro, on reste dans le concret.
Comprendre ce qu'est ExtendScript et pourquoi ça concerne les motion designers
ExtendScript est le langage de script natif d'Adobe. Il s'agit d'une version étendue de JavaScript, datant des années 2000, que Adobe a intégrée à toute sa suite créative. Dans After Effects, il permet d'accéder à l'ensemble du projet : compositions, calques, propriétés d'animation, items de rendu, tout. Quand vous voyez un fichier avec l'extension .jsx ou .jsxbin dans un dossier de scripts, c'est de l'ExtendScript.
Pour un motion designer, l'intérêt est immédiat. Imaginez que vous livrez un spot décliné en douze formats, et que le client vous demande de renommer tous les calques de texte selon une convention précise. À la main, c'est vingt minutes. Avec un script de dix lignes, c'est trois secondes. ExtendScript n'est pas un outil de développeur ; c'est un outil de production que les développeurs ont simplement adopté en premier parce qu'ils connaissaient déjà la syntaxe.
Une distinction importante : ExtendScript n'est pas la même chose que les expressions After Effects. Les expressions s'écrivent dans le panneau Timeline et agissent sur une propriété précise en temps réel. Les scripts s'exécutent depuis le menu File > Scripts ou depuis un panneau dédié, et peuvent modifier l'intégralité d'un projet en une seule passe. Les deux utilisent une syntaxe proche du JavaScript, mais leur champ d'action est radicalement différent.
Mettre en place un environnement de travail minimal pour écrire ses premiers scripts
Pas besoin d'installer un environnement de développement complexe pour commencer. Adobe fournit l'ExtendScript Toolkit, un éditeur dédié, mais il est ancien et son interface est austère. En pratique, la majorité des scripters After Effects travaillent aujourd'hui avec Visual Studio Code, gratuit, avec l'extension officielle "ExtendScript Debugger" publiée par Adobe. Cette extension permet de lancer et déboguer vos scripts directement depuis VS Code, avec coloration syntaxique et autocomplétion.
Du côté d'After Effects, une étape est indispensable avant tout : aller dans Préférences > Général et cocher "Allow Scripts to Write Files and Access Network". Sans cette option, vos scripts seront bloqués dès qu'ils tentent de lire ou écrire un fichier. Pour exécuter un script rapidement pendant le développement, utilisez File > Scripts > Run Script File, ou placez votre fichier .jsx dans le dossier Scripts d'After Effects pour qu'il apparaisse directement dans ce menu.
Créez un projet After Effects de test avec quelques compositions et calques factices. C'est votre bac à sable. Un script mal écrit peut modifier ou supprimer des éléments de votre projet ; travailler sur un projet de test vous évite de mauvaises surprises sur une vraie production. Sauvegardez ce projet de test régulièrement, ou activez le versionnement automatique d'After Effects.
La logique de l'Object Model : comment After Effects voit votre projet
Avant d'écrire la moindre ligne, il faut comprendre comment After Effects structure ses données en interne. Cette structure s'appelle l'Object Model, ou modèle objet. Elle est hiérarchique : tout part de l'application, descend vers le projet, puis vers les compositions, puis vers les calques, puis vers les propriétés de ces calques.
En pratique, ça donne une chaîne de pointage : `app` désigne After Effects lui-même. `app.project` désigne le projet ouvert. `app.project.activeItem` désigne la composition active dans le panneau Composition ou Timeline. `app.project.activeItem.layers[1]` désigne le premier calque de cette composition. Cette logique de navigation est le cœur de tout script AE. Une fois qu'on comprend comment descendre dans cette hiérarchie, on peut atteindre n'importe quel élément.
Pour les propriétés d'animation, comme la position ou l'opacité, c'est une couche supplémentaire. `app.project.activeItem.layers[1].transform.position` pointe vers la propriété Position du premier calque. Pour lire la valeur : `.value`. Pour la modifier : `.setValue([960, 540])`. Pour accéder aux keyframes : `.numKeys` donne le nombre de keyframes, `.keyValue(1)` donne la valeur de la première. Cette grammaire se répète partout dans ExtendScript. Apprendre à naviguer dans le modèle objet, c'est apprendre quatre-vingt pour cent du langage pour un usage de production.
Écrire son premier script utile : renommer des calques selon une logique de production
Voici un exemple concret que vous pouvez tester immédiatement. Ce script parcourt tous les calques de la composition active et ajoute un préfixe numéroté à leur nom. C'est un cas réel : les studios de localisation demandent souvent des conventions de nommage strictes pour les calques de texte à traduire.
Copiez ce code dans VS Code ou dans un fichier .jsx :
var comp = app.project.activeItem;
if (comp && comp instanceof CompItem) {
app.beginUndoGroup("Renommer calques");
for (var i = 1; i <= comp.layers.length; i++) {
var layer = comp.layers[i];
layer.name = "TEXTE_" + i + "_" + layer.name;
}
app.endUndoGroup();
} else {
alert("Ouvrez une composition d'abord.");
}
Décortiquons les points importants. La vérification `comp instanceof CompItem` évite d'exécuter le script sur un item qui n'est pas une composition (un métrage, par exemple). La paire `app.beginUndoGroup` et `app.endUndoGroup` encapsule toutes les modifications dans une seule action annulable avec Ctrl+Z. Sans ça, annuler le script demanderait autant de Ctrl+Z qu'il y a de calques. C'est une bonne pratique à systématiser dès le premier script.
La boucle `for` part de 1 et non de 0 parce qu'en ExtendScript, les calques et les items sont indexés à partir de 1, contrairement aux tableaux JavaScript classiques qui commencent à 0. C'est une source fréquente de bugs pour ceux qui viennent du JavaScript web. Prenez l'habitude de vérifier la documentation AE Scripting Guide sur ce point avant d'itérer sur des collections.
Les erreurs classiques des débutants et comment les éviter
La première erreur est de ne pas vérifier le type de l'item sélectionné avant d'agir. Un script qui suppose qu'une composition est active plantera si l'utilisateur a cliqué sur un fichier vidéo dans le panneau Projet. Toujours vérifier avec `instanceof CompItem`, `instanceof FootageItem`, ou `instanceof FolderItem` selon le contexte.
La deuxième erreur concerne les unités de temps. After Effects stocke le temps en secondes en interne, mais affiche des timecodes ou des frames selon les paramètres du projet. Quand vous lisez ou écrivez des valeurs de temps via un script, vous travaillez en secondes. Si vous voulez placer un keyframe à la frame 24 d'un projet à 25 fps, vous écrivez `24/25` et non `24`. Des productions entières ont eu des animations décalées d'une frame parce que ce point n'était pas clair.
La troisième erreur est d'oublier de gérer les cas où aucun calque n'est sélectionné. Si votre script agit sur `comp.selectedLayers` et que l'utilisateur n'a rien sélectionné, le tableau est vide et la boucle ne fait rien, sans message d'erreur. Ajoutez systématiquement une vérification : `if (comp.selectedLayers.length === 0) { alert("Sélectionnez au moins un calque."); return; }`. Cette attention rend vos scripts utilisables par d'autres personnes de l'équipe sans qu'elles aient besoin de comprendre le code.
Enfin, ne jamais modifier un projet client sans tester le script sur une copie ou dans un projet de test. ExtendScript peut aller très vite. Un script qui supprime des calques ou modifie des propriétés en masse est difficile à annuler si vous n'avez pas utilisé `beginUndoGroup`.
Ressources concrètes pour progresser sans formation développeur
La référence absolue est le document officiel Adobe : "After Effects Scripting Guide". Il est disponible en ligne et recense l'intégralité des objets, propriétés et méthodes accessibles via ExtendScript. Ce n'est pas un tutoriel ; c'est une documentation technique. Mais une fois que vous comprenez le modèle objet, elle devient lisible et utile.
Pour apprendre la syntaxe JavaScript de base, des ressources comme MDN Web Docs suffisent pour les fondamentaux : variables, conditions, boucles, fonctions. Inutile de suivre une formation complète de développeur web. Concentrez-vous sur les variables (`var`, `let`), les conditions (`if/else`), les boucles (`for`), et les fonctions. Ce sont les quatre structures qui composent la quasi-totalité des scripts de production.
La communauté AEscripts est une mine pratique. Téléchargez des scripts gratuits sur aescripts.com, ouvrez les fichiers .jsx dans VS Code, et lisez le code. Pas pour tout comprendre, mais pour identifier des patterns : comment ce script navigue jusqu'aux calques, comment il lit une valeur, comment il crée une interface utilisateur simple avec ScriptUI. Lire du code existant est plus formateur que la plupart des tutoriels pour un non-développeur.
Pour ScriptUI, le système de panneaux et de fenêtres d'ExtendScript, le site de Peter Kahrel propose une documentation très accessible. ScriptUI vous permet d'ajouter des boutons, des menus déroulants et des champs de saisie à vos scripts pour les rendre utilisables par toute l'équipe sans qu'ils aient à modifier le code.
ConclusionConclusion
ExtendScript n'est pas réservé aux développeurs, et le prouver, c'est simplement l'ouvrir et écrire un premier script qui résout un vrai problème de production. Le chemin le plus efficace : identifier une tâche que vous répétez chaque semaine, comprendre quels objets After Effects sont impliqués, consulter la Scripting Guide pour trouver les propriétés et méthodes correspondantes, puis assembler le tout avec une dizaine de lignes. Le code de production n'a pas besoin d'être élégant ; il doit être fiable, lisible par vous dans six mois, et encapsulé dans un undo group. Tout le reste est du perfectionnement.
Questions fréquentesFrequently asked questions
Quelle est la différence entre un script .jsx et un script .jsxbin ?
Un fichier .jsx est du code ExtendScript lisible en clair dans n'importe quel éditeur de texte. Un fichier .jsxbin est le même code compilé et encodé, illisible sans décompilateur. Les développeurs utilisent le format .jsxbin pour distribuer des scripts commerciaux sans exposer leur code source. Pour votre propre usage et vos outils internes, le format .jsx est préférable : vous pouvez le modifier, le déboguer et le partager avec votre équipe.
Est-ce que les scripts ExtendScript fonctionnent sur toutes les versions d'After Effects ?
Dans l'ensemble oui, mais avec des nuances. L'Object Model évolue à chaque version majeure d'AE : de nouvelles propriétés ou méthodes apparaissent, et certaines anciennes sont dépréciées. Un script écrit pour After Effects 2019 fonctionnera généralement dans AE 2024, sauf s'il utilise des fonctionnalités très spécifiques qui ont changé. Testez toujours sur la version cible avant de déployer en production.
Peut-on créer des panneaux persistants avec ExtendScript, comme les vrais plugins ?
Oui, via ScriptUI et en plaçant le fichier .jsx dans le dossier ScriptUI Panels d'After Effects. Ces scripts apparaissent dans le menu Window et peuvent être ancrés dans l'interface comme n'importe quel panneau natif. C'est la base des outils studio type sélecteurs de couleurs, gestionnaires de nommage ou exporteurs personnalisés que les studios développent en interne.
ExtendScript peut-il lire et écrire des fichiers externes, comme des CSV ou des JSON ?
Oui, à condition d'avoir activé l'option d'accès aux fichiers dans les préférences After Effects. L'objet `File` d'ExtendScript permet d'ouvrir, lire et écrire des fichiers texte. C'est la base des workflows de data-driven animation : un script lit un fichier CSV contenant des données client, puis peuple automatiquement les calques de texte d'une composition avec ces valeurs.
Combien de temps faut-il pour écrire son premier script utile ?
Pour quelqu'un qui n'a jamais codé, comptez une à deux journées pour comprendre le modèle objet de base et écrire un script fonctionnel simple, comme un renommeur de calques ou un outil de repositionnement. Le facteur limitant n'est pas la complexité du langage mais la familiarité avec la structure d'After Effects, que les motion designers ont déjà. La courbe d'apprentissage est moins raide qu'elle n'y paraît.
Est-ce qu'ExtendScript peut interagir avec d'autres applications Adobe, comme Illustrator ou Photoshop ?
Oui. ExtendScript est partagé par toute la suite Adobe Creative Cloud. Un script peut envoyer des commandes à Illustrator pour exporter des fichiers, ou interroger Photoshop pour lire des informations de calques. Cette inter-application scripting est très utile dans les pipelines où les assets passent par plusieurs logiciels avant d'arriver dans After Effects.
Quelle est la différence entre ExtendScript et les expressions After Effects ?
Les expressions s'écrivent dans la Timeline et sont évaluées en temps réel par After Effects à chaque frame pour calculer la valeur d'une propriété. Les scripts s'exécutent ponctuellement, agissent sur la structure du projet et peuvent modifier des centaines d'éléments en une passe. Une expression anime un calque ; un script réorganise un projet entier. Les deux utilisent une syntaxe proche du JavaScript, mais ils ne se substituent pas l'un à l'autre.
Mon script est lent sur de gros projets. Comment l'optimiser ?
La première optimisation est de désactiver le rafraîchissement de l'interface pendant l'exécution avec `app.beginSuppressDialogs()` ou en définissant `app.project.renderQueue.paused`. Pour les itérations sur de nombreux calques, évitez de lire des propriétés complexes comme les keyframes à l'intérieur d'une boucle si vous pouvez les stocker en variable avant. Travaillez aussi en mode batch autant que possible : regroupez toutes les modifications avant de les appliquer plutôt que d'alterner lecture et écriture.
Peut-on distribuer ses scripts à son équipe sans qu'ils aient à les installer manuellement ?
Oui. Placez le script dans un dossier partagé accessible à toute l'équipe, puis chaque membre ajoute ce dossier comme source dans les préférences d'After Effects, ou utilise un script de lancement qui appelle les autres scripts depuis un chemin réseau. Des outils comme aescripts Manager permettent aussi de centraliser l'installation. Pour des équipes plus grandes, certains studios passent par des extensions CEP qui encapsulent plusieurs scripts dans un panneau unique distribuable facilement.
ExtendScript est-il voué à disparaître avec les nouvelles versions d'After Effects ?
Adobe pousse UXP (Unified Extensibility Platform) comme successeur d'ExtendScript pour la suite Creative Cloud, mais la migration dans After Effects est beaucoup plus lente que dans Photoshop. En 2024, ExtendScript reste le standard fonctionnel pour scripter After Effects, et la base de scripts existants est immense. Apprendre ExtendScript aujourd'hui reste pertinent pour au moins plusieurs années de production, d'autant que la logique d'accès au modèle objet sera transposable vers les futurs environnements.