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(usevar)- 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.jsxdiretamenteFile > 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áveistry { // 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 layervar layer = comp.layer("Nome"); // por nome
// Total de layersvar totalLayers = comp.numLayers;
// Propriedades básicaslayer.name; // nomelayer.enabled; // visível?layer.startTime; // início (em segundos)layer.inPoint; // in pointlayer.outPoint; // out point
// Transformaçãovar 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 segundosposition.setValueAtTime(2, [1600, 540]);
// Define interpolação do keyframe como Easy Easeposition.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.