
gmail.send o con
await gmail.send() dentro de un paso JavaScript. Destinatarios, asunto,
cuerpo y adjuntos se describen igual. Cambia la envoltura: dónde declaras la
cuenta y cómo entran los valores que vienen del trigger o de un paso anterior.
La cuenta es una credencial conectada en Configuración → Credenciales.
Guardas su clave; los tokens de acceso no forman parte de la automatización.
Guardar o publicar una automatización que envía con Gmail requiere permisos
de administrador y una cuenta conectada. Aplica al paso
gmail.send y a
gmailCredentialKey en JavaScript.Paso gmail.send
Un correo por paso. Los campos aceptan plantillas del trigger y de pasos anteriores.
Desde JavaScript
El global
gmail en un paso code.javascript. Sirve para decidir el envío, mandar varios correos o leer el hilo.Elige la interfaz
En las pestañas de abajo, Paso y JavaScript muestran el mismo envío.
La selección se mantiene al bajar de ejemplo.
Campos del mensaje
Estos campos describen el correo. En el paso viven dentro deinput, junto a
credentialKey. En JavaScript son las propiedades de gmail.send(), y la
cuenta va aparte.
Envía
subject o replyToMessageId. Con los dos, o sin ninguno, el envío se
rechaza. Envía text, html o ambos.
replyTo es una dirección para respuestas futuras.
replyToMessageId coloca este correo dentro del hilo de un mensaje que ya
existe. Son campos distintos.storagePath reenvía un adjunto del trigger Gmail; fileId usa un archivo de
un paso anterior; url descarga un recurso HTTPS público o firmado, como el
archivo de un tablero. URLs privadas, locales, demasiado grandes o con
redirects inseguros se rechazan. También se bloquean ejecutables y tipos que
Gmail no permite.Dónde va la cuenta
- Paso
- JavaScript
credentialKey va dentro de input, mezclada con el mensaje. Las
plantillas se resuelven en cada string antes de enviar.Envío básico
- Paso
- JavaScript
Responder dentro del mismo hilo
Usa elid del mensaje que llegó por el trigger. El asunto, el hilo y las
cabeceras de respuesta salen de ese mensaje: el campo de este envío es
replyToMessageId, y subject corresponde a un correo nuevo.
message.from trae nombre y correo (María López <cliente@ejemplo.com>).
Puedes pasarlo tal cual en to.
Ese envío no vuelve a iniciar
Nuevo correo en Gmail: el trigger ignora
los mensajes de la cuenta conectada. Responder al remitente no reentra en
el flujo.
- Paso
- JavaScript
Reenviar un adjunto recibido
El ejemplo usa el primer adjunto de Nuevo correo en Gmail.- Paso
- JavaScript
Las plantillas van en cada campo del adjunto.
Adjuntos de otros orígenes
Desde una URL o un campo de tablero
Los camposfiles de un tablero entregan name, url y type. Pásalos como
plantillas; el backend descarga el archivo con límite de tamaño y protección
contra SSRF.
Desde un paso anterior
Los pasos que producenWorkflowFileRef exponen sus archivos en
steps.<índice>.files. Usa el id; el backend valida que pertenezca al mismo
tenant, run y a un paso anterior.
Enviar desde JavaScript
Además del envío, el globalgmail puede mandar varios correos en el mismo
paso y volver a leer un hilo. El contrato de cada gmail.send() es el de
Campos del mensaje, más idempotencyKey.
Guía del sandbox, de input / output y del resto de globales:
Paso JavaScript.
Varios correos
Cadaawait gmail.send() es un envío distinto. La envoltura del paso es la
de la pestaña JavaScript: actionKey, code.javascript, gmailCredentialKey
e input. En este ejemplo input.cliente es
{{trigger.body.message.from}}. Guarda messageId si un seguimiento
posterior debe responder en ese hilo.
Si omites
idempotencyKey, las llamadas de esa ejecución reciben call-1,
call-2, … según el orden en que llegan a gmail.send(). Cuando un if
puede saltarse una llamada, una clave propia mantiene el mismo correo atado
a la misma clave en el reintento. Hasta 200 caracteres: letras, números,
., _, : o -.
El paso gmail.send cubre un solo envío y el motor le asigna la clave.
Cuando el script llama gmail.send() más de una vez, idempotencyKey
distingue cada uno.
Leer el hilo
gmail.getThread(threadId) consulta la conversación en ese momento. El
trigger ya trae una copia en trigger.body.thread; usa getThread cuando
necesitas los mensajes que existan al correr el paso, por ejemplo después de
haber enviado una respuesta.
threadId es un string de hasta 200 caracteres: letras, números, _ o -.
Suele venir de trigger.body.message.threadId o del threadId que devolvió
un gmail.send() anterior.
Para reenviar un archivo usa el
storagePath del trigger, como en
Reenviar un adjunto recibido.
Salida
El paso ygmail.send() devuelven el mismo objeto:
En el paso, este objeto es la salida (
{{steps.N.output.messageId}}). En
JavaScript lo recibes como retorno; asígnalo a output (o devuélvelo con
return) si un paso posterior lo necesita.
En el paso, la clave idempotente sale del run y del índice del paso. En
JavaScript, de idempotencyKey o de call-1, call-2, …. Si el resultado
del envío queda ambiguo, no se reenvía solo: revisa Enviados antes de lanzar
otra ejecución.

