Ir al contenido

Gmail — Connect

Tipo: gmail-connect  ·  Paquete: Gmail v1.0.4  ·  Salida: ZoanGmailSession

Abre una sesión autenticada con Gmail. Es el punto de partida obligatorio del paquete: todas las demás actividades (enviar, buscar, responder, etiquetar…) trabajan sobre esta sesión, que representa el acceso a un buzón concreto.

Se autentica con una conexión OAuth de Google de Zoan Cloud (o una cuenta de servicio) y abre la sesión sobre el buzón. Tiene dos formas de uso:

  • Con body: las actividades que coloques dentro heredan la sesión automáticamente y se ejecutan sobre ese buzón; al terminar el bloque (también si algo falla dentro), la sesión se cierra sola.
  • Sin body: devuelve la sesión como salida; guárdala en una variable, pásala por el parámetro session a las demás actividades y ciérrala al final con Gmail — Close.

Al conectar, lee el perfil del buzón en Gmail para saber su dirección (es el remitente de los correos que envíes). Así, si la autorización no sirve, el error aparece aquí y no a mitad del proceso.

ModoQué necesitasCuándo usarlo
oauth (por defecto)Una conexión OAuth de Google en credential, autorizada con la cuenta del buzón.La cuenta de una persona o de un buzón de equipo que alguien puede autorizar.
service-accountLa llave JSON de una cuenta de servicio guardada como credencial en serviceAccount, y el buzón en impersonateUser.Google Workspace, procesos desatendidos y varios buzones del dominio sin consentimiento de cada persona.

Con cuenta de servicio, el administrador de Google Workspace debe autorizar el ID de cliente de la cuenta de servicio en la delegación de todo el dominio con el alcance https://mail.google.com/, que es el que pide la actividad. No funciona con cuentas de Gmail personales (@gmail.com).

Ninguno. En la práctica necesitas credential (modo oauth) o serviceAccount + impersonateUser (modo service-account).

ParámetroTipoPor defectoDescripción
authTypestring"oauth"Modo de autenticación: oauth o service-account. El Designer muestra solo los campos del modo elegido.
credentialcredential—Modo oauth: conexión OAuth de Google de Zoan Cloud. Elígela en el selector del Designer o escribe credential("nombre-clave").
serviceAccountcredential—Modo service-account: credencial de Zoan Cloud con el JSON completo de la llave de la cuenta de servicio.
impersonateUserstring—Modo service-account: correo del buzón de Workspace sobre el que operar (p. ej. facturacion@example.com). Obligatorio en ese modo.

Actividades a ejecutar dentro de la sesión. Heredan la sesión automáticamente y, al terminar, esta se cierra.

Devuelve un ZoanGmailSession solo si no usas body; con body la actividad no devuelve nada (la sesión se hereda sola). La sesión expone:

PropiedadTipoContenido
EmailAddressstringDirección del buzón conectado (el usuario de la conexión o el impersonateUser).
UserIdstringSiempre me: el buzón autenticado.
MensajeCausa y solución
'credential' no contiene un access_token válido. Revisa la conexión OAuth en Zoan Cloud.La conexión no entregó token: está pendiente de autorizar o se revocó. Verifica en Zoan Cloud que esté Conectada.
'serviceAccount' debe hacer referencia a una credencial de Zoan Cloud que contenga la clave JSON de la cuenta de servicio.La credencial de serviceAccount está vacía.
La credencial de la cuenta de servicio no es una clave JSON válida de cuenta de servicio de Google. …El valor guardado no es la llave JSON completa. Descárgala de nuevo en Google Cloud y pega el archivo entero.
Gmail con una cuenta de servicio requiere 'impersonateUser' …Falta impersonateUser en modo service-account.
unauthorized_clientLa delegación de todo el dominio no está configurada para esa cuenta de servicio o no incluye el alcance https://mail.google.com/.
Request had insufficient authentication scopes.La conexión OAuth no tiene los permisos de Gmail. Edita la conexión, marca los alcances de Gmail y vuelve a autorizarla.
Gmail — Connect credential = credential("gmail-soporte")
└─ body:
Gmail — Get emails query = "is:unread in:inbox" → output: nuevos
For each correo in nuevos
└─ Gmail — Reply id = correo["id"] body = "Recibimos tu mensaje; te respondemos pronto."

Con cuenta de servicio, sin body:

Gmail — Connect authType = service-account serviceAccount = credential("google-sa") impersonateUser = "facturacion@example.com" → output: buzon
Gmail — Get emails session = buzon query = "has:attachment subject:factura" → output: facturas
Gmail — Close session = buzon