Ir al contenido

Gmail — Get emails

Tipo: gmail-get-emails  ·  Paquete: Gmail v1.0.4  ·  Salida: List<Dictionary<string,object>>

Busca correos en el buzón usando la sintaxis de búsqueda de Gmail y devuelve la lista de mensajes que coinciden. Es la actividad con la que normalmente arranca un proceso: localiza los correos a procesar y luego iteras sobre ellos.

Opera sobre la sesión creada con Gmail — Connect. Pásala en el parámetro session, o coloca esta actividad dentro del body de Gmail — Connect para heredarla automáticamente.

  • query acepta la misma sintaxis que la caja de búsqueda de Gmail: is:unread, from:, to:, subject:, has:attachment, filename:pdf, label:, in:inbox, after:2026/10/01, before:, newer_than:7d, older_than:1y… Vacío = todo el correo.
  • labelIds restringe a correos que tengan todas las etiquetas indicadas, por ID (INBOX, UNREAD, STARRED, Label_123…). Para usar nombres de etiqueta, ponlos en la búsqueda (label:Proveedores) o consulta los IDs con Get labels.
  • Como en Gmail, la papelera y el spam no se incluyen salvo que los pidas en la búsqueda (in:trash, in:spam, in:anywhere).
  • Los resultados vienen en el orden de Gmail: los más recientes primero.

La actividad hace una sola consulta y Gmail entrega como mucho 500 correos por consulta; no pide páginas siguientes. Para volúmenes grandes, procesa por lotes: etiqueta, archiva o marca como leído lo procesado y vuelve a consultar. Cada correo se descarga con una petición propia, así que un maxResults alto y includeBody hacen la actividad más lenta.

Ninguno.

ParámetroTipoPor defectoDescripción
sessionZoanGmailSession—Sesión de Gmail — Connect (se hereda dentro del body).
querystring—Búsqueda de Gmail (misma sintaxis que la caja del buzón). Vacío = todo el correo. Ej.: is:unread from:proveedor@example.com.
maxResultsint25Número máximo de correos a devolver (Gmail acepta hasta 500). Un valor vacío, no numérico o menor que 1 usa 25.
includeBodyboolfalseSi es true, incluye el cuerpo y la información de adjuntos de cada correo (claves body, bodyHtml, attachments).
labelIdsstring | List—ID(s) de etiqueta que deben tener los correos (p. ej. INBOX, UNREAD). Texto separado por comas o punto y coma, o una lista.

Devuelve un List<Dictionary<string,object>>: una lista en la que cada elemento es un correo con estas claves.

ClaveTipoContenido
idstringID del mensaje. Es la entrada de las demás actividades y no cambia al etiquetar o archivar.
threadIdstringID de la conversación a la que pertenece.
fromstringCabecera From tal cual, con nombre y dirección: Ana Pérez <ana@example.com>. La dirección sola es lo que va entre < y >.
tostringCabecera To tal cual (varias direcciones separadas por comas).
ccstringCabecera Cc tal cual, o null si no hay.
subjectstringAsunto.
datestringCabecera Date tal cual, en formato de correo (Wed, 15 Oct 2026 09:03:22 -0500).
snippetstringFragmento del inicio del mensaje, en texto plano.
labelsList<string>IDs de las etiquetas del correo (INBOX, UNREAD, IMPORTANT, Label_…).
unreadbooltrue si el correo está sin leer.
bodystringSolo con includeBody. Cuerpo en texto plano; si el correo solo trae HTML, ese HTML sin etiquetas; "" si no hay cuerpo.
bodyHtmlstringSolo con includeBody. Cuerpo HTML, o null si el correo no lo trae.
attachmentsList<Dictionary>Solo con includeBody. Un elemento por adjunto con filename, mimeType, size (bytes) y attachmentId.

Sin includeBody, las claves body, bodyHtml y attachments no existen en el diccionario. Si nada coincide, devuelve una lista vacía (no falla).

MensajeCausa y solución
No hay una sesión de Gmail disponible. …No pasaste session y la actividad no está dentro del body de Connect.
Error 400 de Gmail, o lista vacía cuando esperabas correoslabelIds lleva nombres de etiqueta en lugar de IDs. Usa los IDs de Get labels, o label:Nombre en query.
Request had insufficient authentication scopes.La conexión no tiene permiso de lectura de Gmail. Revisa sus alcances en Zoan Cloud.
Gmail — Connect credential = credential("gmail-soporte")
└─ body:
Gmail — Get emails query = "is:unread has:attachment subject:factura" maxResults = 50 → output: pendientes
For each correo in pendientes
└─ Gmail — Download attachments id = correo["id"] folder = "C:\facturas\entrada" → output: archivos
Log message = str(correo["subject"]) + ": " + count(archivos) + " adjunto(s)"
Gmail — Mark read/unread id = correo["id"]