Pular para o conteúdo principal
Atualizado em Jul 26, 2026

Executar JavaScript

Use esta ação quando um passo precisar de lógica personalizada que o CEL não consegue expressar — reformatar dados, calcular valores ou chamar uma API com código.

Melhor para

  • Transformar JSON de passos anteriores exatamente no formato de que um passo posterior precisa
  • Cálculos, parsing e validações além do que expressões CEL conseguem fazer
  • Pequenas integrações usando fetch quando a ação Requisição HTTP não for flexível o suficiente

Campos principais

CampoO que faz
Código JavaScriptO código a executar. Ele é envolvido em uma IIFE assíncrona, então você pode usar await no nível superior e terminar com return <valor> para produzir o resultado do passo
Dados de entradaExpressão CEL opcional avaliada antes da execução. O resultado fica disponível dentro do código na variável input
PropósitoRótulo opcional do que o código faz, exibido nos logs
Tempo limite (ms)Limite de tempo de execução em milissegundos. O padrão é 5000 e o máximo é 30000 — código que ultrapassa o limite (incluindo loops infinitos) é encerrado
Limite de memória (MB)Limite de memória do sandbox. O padrão é 128 MB, entre 8 e 256

O código executa em um sandbox V8 isolado em um serviço de execução separado. Não há acesso a APIs do Node.js (require, process, sistema de arquivos) — apenas os recursos padrão do JavaScript mais três pontes:

  • input — o valor avaliado de Dados de entrada
  • console.log/info/warn/error — capturados e retornados na saída logs (até 200 entradas de 2.000 caracteres cada)
  • fetch(url, options) — HTTP com proteção SSRF (endereços privados e internos são bloqueados) que retorna {ok, status, statusText, body}, com body interpretado como JSON quando possível e retornado como texto caso contrário

O que passos posteriores podem usar

  • step(N).data — o valor que você retornou com return
  • step(N).logs — a saída de console capturada
  • step(N).executionTimeMs — quanto tempo o código executou

Dicas

  • Sempre use return — o valor de retorno é copiado para fora do sandbox, então mantenha-o compatível com JSON.
  • Use console.log enquanto constrói o passo; a saída logs é a forma mais fácil de depurar.
  • Se o código lançar uma exceção, o passo falha com code_execution_failed; ultrapassar o tempo limite falha com code_execution_timeout.
  • Cada chamada de fetch também é limitada pelo tempo do passo, então mantenha chamadas a terceiros bem dentro do orçamento de tempo.