Skip to main content

ExtendScript: Fundamentos

ExtendScript é JavaScript de 1999. Limitado, sem recursos modernos, mas ainda é a única forma de automatizar o after nativamente. Vale aprender, o ROI é alto.

O que é ExtendScript

ExtendScript é uma implementação proprietária da Adobe do ECMAScript 3 (JavaScript antigo).

Não tem:

  • Arrow functions
  • Template literals
  • let/const (use var)
  • Promises ou async/await
  • Módulos ES6

Tem:

  • Acesso completo à API do after
  • Criação de interfaces (ScriptUI)
  • Leitura e escrita de arquivos
  • Integração com outros apps Adobe

Acessando o ExtendScript

  • File > Scripts > Run Script File: executa um .jsx diretamente
  • File > Scripts > Edit Script: abre um editor básico
  • ScriptUI Panel (mais útil): copie para a pasta Scripts do after e aparece no menu Window

Pasta no Mac: /Applications/Adobe After Effects [versao]/Scripts/ScriptUI Panels/

Pasta no Windows: C:\Program Files\Adobe\Adobe After Effects [versao]\Support Files\Scripts\ScriptUI Panels\

Estrutura básica

// Sempre envolva em try-catch para erros amigáveis
try {
// Acessa o documento ativo
var comp = app.project.activeItem;
if (!comp || !(comp instanceof CompItem)) {
alert("Selecione uma composição.");
exit();
}
// Agrupa operações em um undo group
app.beginUndoGroup("Nome da Operacao");
// Seu código aqui
app.endUndoGroup();
} catch(e) {
alert("Erro: " + e.toString());
}

Acessando layers e propriedades

var comp = app.project.activeItem;
// Layers (index começa em 1, não 0)
var layer = comp.layer(1); // primeira layer
var layer = comp.layer("Nome"); // por nome
// Total de layers
var totalLayers = comp.numLayers;
// Propriedades básicas
layer.name; // nome
layer.enabled; // visível?
layer.startTime; // início (em segundos)
layer.inPoint; // in point
layer.outPoint; // out point
// Transformação
var pos = layer.property("Position").value;
var scale = layer.property("Scale").value;
var opacity = layer.property("Opacity").value;

Criando keyframes

var layer = comp.layer(1);
var position = layer.property("Position");
// Adiciona keyframe no tempo 0 com valor [960, 540]
position.setValueAtTime(0, [960, 540]);
// Adiciona keyframe no tempo 2 segundos
position.setValueAtTime(2, [1600, 540]);
// Define interpolação do keyframe como Easy Ease
position.setTemporalEaseAtKey(1,
[new KeyframeEase(0, 33)],
[new KeyframeEase(0, 33)]
);

Iterando sobre layers

var comp = app.project.activeItem;
for (var i = 1; i <= comp.numLayers; i++) {
var layer = comp.layer(i);
// Pula layers de ajuste
if (layer.adjustmentLayer) continue;
// Só trabalha com shape layers
if (layer instanceof ShapeLayer) {
// ...
}
}

Tip

$.writeln("valor: " + someValue) aparece no console do ExtendScript Toolkit. É o console.log do ExtendScript. Indispensável para debugar.