Ir al contenido

Gmail Activities

Versión: 1.0.4  ·  ID: zoan-packages-gmail  ·  Autor: Zoan Software

El paquete Gmail envía, busca, lee y organiza correos de un buzón de Gmail o Google Workspace mediante conexiones OAuth2 de Zoan Cloud. Automatiza el correo sin tener un cliente instalado: funciona igual en robots atendidos y desatendidos.

Connect admite dos modos:

ModoQué necesitas
OAuth (por defecto)Una conexión OAuth de Google de Zoan Cloud autorizada con la cuenta del buzón: credential = credential("gmail-soporte").
Cuenta de servicioLa llave JSON guardada como credencial, el buzón en impersonateUser y la delegación de todo el dominio autorizada en Google Workspace con el alcance https://mail.google.com/. Ideal para procesos desatendidos sobre buzones del dominio.

Alcances de Gmail que necesita la conexión OAuth:

AlcanceCubre
https://www.googleapis.com/auth/gmail.modifyTodo el paquete excepto el borrado permanente: buscar, leer, enviar, responder, reenviar, etiquetar, archivar, enviar a la papelera.
https://mail.google.com/Todo, incluido Delete con permanent = true.

Connect abre una sesión (ZoanGmailSession) sobre un buzón:

  • Con body: las actividades de dentro la heredan y se cierra sola al terminar.
  • Sin body: guárdala en una variable, pásala por session y ciérrala con Close.

En modo OAuth la sesión usa el token vigente al conectar, que dura alrededor de una hora: en procesos largos, trabaja por lotes y conecta en cada lote.

Get emails y Get email by ID devuelven cada correo como un Dictionary<string,object> con las claves id, threadId, from, to, cc, subject, date, snippet, labels, unread y, con el cuerpo, body, bodyHtml y attachments (el detalle está en Get emails). Lee cada dato por su clave: correo["subject"]. Las cabeceras (from, to, date) vienen tal cual las escribió el remitente, con nombre y dirección.

El id de un correo no cambia al etiquetarlo, archivarlo o marcarlo: puedes encadenar varias actividades sobre el mismo id.

En Gmail un correo no está «en» una carpeta: tiene etiquetas. La bandeja de entrada es la etiqueta INBOX, los no leídos llevan UNREAD. Por eso Archive quita INBOX, Mark read/unread pone o quita UNREAD, y Apply label / Remove label clasifican. Consulta nombres e IDs con Get labels.

ActividadTipoSalidaDescripción
Gmail — Connectgmail-connectZoanGmailSessionAbre una sesión autenticada con Gmail (OAuth o cuenta de servicio)
Gmail — Sendgmail-sendstringEnvía un correo desde la cuenta de la sesión
Gmail — Replygmail-replystringResponde a un correo existente manteniendo el hilo
Gmail — Forwardgmail-forwardstringReenvía un correo existente a nuevos destinatarios, con sus adjuntos
Gmail — Get emailsgmail-get-emailsList<Dictionary<string,object>>Busca correos con la sintaxis de Gmail y devuelve una lista
Gmail — Get email by IDgmail-get-emailDictionary<string,object>Trae un correo completo por su ID (cuerpo, cabeceras y adjuntos)
Gmail — Download attachmentsgmail-download-attachmentsList<string>Descarga los adjuntos de un correo a una carpeta
Gmail — Mark read/unreadgmail-mark-read—Marca un correo como leído o no leído
Gmail — Apply labelgmail-apply-label—Aplica una o varias etiquetas a un correo (por nombre o ID)
Gmail — Remove labelgmail-remove-label—Quita una o varias etiquetas de un correo (por nombre o ID)
Gmail — Archivegmail-archive—Archiva un correo (lo saca de la bandeja de entrada) o lo devuelve
Gmail — Get labelsgmail-get-labelsList<Dictionary<string,object>>Lista las etiquetas del buzón
Gmail — Deletegmail-delete—Mueve un correo a la papelera (o lo elimina permanentemente)
Gmail — Closegmail-close—Cierra una sesión de Gmail
Gmail — Connect credential = credential("gmail-facturas")
└─ body:
Gmail — Get emails query = "in:inbox is:unread has:attachment subject:factura" → output: pendientes
For each correo in pendientes
└─ Gmail — Download attachments id = correo["id"] folder = "C:\facturas\entrada"
Gmail — Reply id = correo["id"] body = "Recibimos tu factura; la registraremos en los próximos días."
Gmail — Apply label id = correo["id"] labels = "Procesado"
Gmail — Archive id = correo["id"]