Saltar al contenido principal
Actualizado el Jul 26, 2026

Ejecutar JavaScript

Usa esta acción cuando un paso necesite lógica personalizada que CEL no puede expresar — reformatear datos, calcular valores o llamar a una API con código.

Mejor para

  • Transformar JSON de pasos anteriores exactamente a la forma que un paso posterior necesita
  • Cálculos, parsing y validaciones más allá de lo que pueden hacer las expresiones CEL
  • Pequeñas integraciones usando fetch cuando la acción Solicitud HTTP no es lo bastante flexible

Campos principales

CampoQué hace
Código JavaScriptEl código a ejecutar. Se envuelve en una IIFE asíncrona, así que puedes usar await en el nivel superior y terminar con return <valor> para producir el resultado del paso
Datos de entradaExpresión CEL opcional evaluada antes de la ejecución. El resultado está disponible dentro del código en la variable input
PropósitoEtiqueta opcional de lo que hace el código, mostrada en los logs
Tiempo límite (ms)Límite de tiempo de ejecución en milisegundos. Por defecto es 5000 y está limitado a 30000 — el código que lo supera (incluidos los bucles infinitos) se termina
Límite de memoria (MB)Límite de memoria del sandbox. Por defecto es 128 MB, entre 8 y 256

El código se ejecuta en un sandbox V8 aislado en un servicio de ejecución separado. No hay acceso a APIs de Node.js (require, process, sistema de archivos) — solo los recursos estándar de JavaScript más tres puentes:

  • input — el valor evaluado de Datos de entrada
  • console.log/info/warn/error — capturados y devueltos en la salida logs (hasta 200 entradas de 2.000 caracteres cada una)
  • fetch(url, options) — HTTP con protección SSRF (las direcciones privadas e internas están bloqueadas) que devuelve {ok, status, statusText, body}, con body interpretado como JSON cuando es posible y devuelto como texto en caso contrario

Qué pueden usar los pasos posteriores

  • step(N).data — el valor que devolviste con return
  • step(N).logs — la salida de consola capturada
  • step(N).executionTimeMs — cuánto tiempo se ejecutó el código

Consejos

  • Siempre usa return — el valor de retorno se copia fuera del sandbox, así que mantenlo compatible con JSON.
  • Usa console.log mientras construyes el paso; la salida logs es la forma más fácil de depurar.
  • Si el código lanza una excepción, el paso falla con code_execution_failed; superar el tiempo límite falla con code_execution_timeout.
  • Cada llamada a fetch también está limitada por el tiempo del paso, así que mantén las llamadas a terceros bien dentro del presupuesto de tiempo.