Cómo exportar correos con adjuntos a SharePoint en Power Automate
Este tutorial muestra cómo crear un flujo en Power Automate para exportar automáticamente correos con adjuntos a una biblioteca de SharePoint, útil para organizar y compartir archivos sin intervención manual. La solución filtra correos por asunto, guarda el adjunto y registra metadatos básicos para búsqueda posterior. La idea es reducir trabajo repetitivo, mejorar la auditoría de los archivos y facilitar el acceso por parte de compañeros del equipo o stakeholders.
Requisitos previos
- Cuenta Microsoft con acceso a Power Automate. Para escenarios empresariales, verifique la licencia (per-user o per-flow) si espera procesar muchos correos por día.
- Sitio y biblioteca en SharePoint Online con permisos de escritura para la cuenta del flujo. Configure columnas en la biblioteca como Title (Single line of text), Sender (Single line of text), Subject (Single line of text) y ReceivedTime (Date and Time).
- Bandeja de correo en Exchange Online u Outlook.com accesible por la misma cuenta usada en Power Automate. Tenga en cuenta límites: Outlook.com suele aceptar adjuntos hasta 25 MB; Exchange Online puede permitir valores mayores según la configuración del tenant (p. ej.: 100–150 MB).
- Conocimientos básicos de creación de flujos en Power Automate (interfaz y triggers). Es útil saber usar expresiones como formatDateTime() y concat() para manipular nombres de archivo.
Paso 1: Crear el flujo con el trigger "When a new email arrives (V3)"
Abra Power Automate, elija "Automated cloud flow" y seleccione el trigger "When a new email arrives (V3)" del conector Office 365 Outlook. Configure la carpeta (Inbox) y, opcionalmente, filtre por From, Subject Filter o Importance para reducir disparos innecesarios. Por ejemplo, si solo necesita informes mensuales, use Subject Filter: "Relatório Mensal" — esto puede reducir el número de ejecuciones de cientos a unas pocas por mes.
// Exemplos de campos do trigger
Folder: Inbox
Include Attachments: Yes
Only with Attachments: Yes
Subject Filter: Relatório Mensal
Explicación: el filtro en el trigger evita costes y throttling. Si su flujo se ejecuta 1000 veces al día sin necesidad, rápidamente alcanzará límites de uso. Empiece con filtros simples y pruebe durante una semana para ajustar.
Paso 2: Verificar si el correo tiene adjuntos e iterar
Añada una condición simple para garantizar que el correo tiene adjuntos. Normalmente el trigger proporciona la propiedad Has Attachments; si no, use la acción "Get attachments" y verifique que la lista no esté vacía. A continuación, use "Apply to each" para procesar cada adjunto. Se recomienda definir Concurrency Control en "Apply to each" a 1 si es importante preservar el orden o evitar colisiones en la creación de archivos.
// Condición exemplo
Condition: @equals(triggerOutputs()?['body/HasAttachments'], true)
// Apply to each
Select: List of Attachments (do Get attachments ou body('When_a_new_email_arrives')?['Attachments'])
Ejemplo práctico: si recibe de media 20 correos con adjuntos al día y cada adjunto tiene 2 MB, eso suma unos 40 MB/día → ~1.2 GB/mes. Planifique cuota y limpieza automática si se espera un volumen mayor (p. ej.: >1000 adjuntos/mes).
Paso 3: Guardar cada adjunto en SharePoint con metadatos
Dentro del "Apply to each", añada la acción "Create file" del conector SharePoint para crear el archivo en la biblioteca. Use dynamic content para File Name y ContentBytes. Después, añada la acción "Update file properties" para rellenar columnas como "Sender", "Subject" y "ReceivedTime". Cree columnas adecuadas en la biblioteca antes de ejecutar el flujo para evitar errores.
// Create file
Site Address: https://contoso.sharepoint.com/sites/Projeto
Folder Path: /Shared Documents/AnexosEmails
File Name: @{items('Apply_to_each')?['Name']}
File Content: @{items('Apply_to_each')?['ContentBytes']}
// Update file properties
ID: ID (da Create file)
Title: @{items('Apply_to_each')?['Name']}
Sender: @{triggerOutputs()?['body/From']}
Subject: @{triggerOutputs()?['body/Subject']}
ReceivedTime: @{triggerOutputs()?['body/DateTimeReceived']}
Sugerencia práctica: mapear Sender a la dirección de correo (p. ej.: joao.silva@contoso.com) en un campo de texto, y añadir una columna "ProcessedBy" (Choice o Person) si varios equipos son responsables de los archivos.
Paso 4: Tratar nombres duplicados y errores comunes
Para evitar sobrescribir archivos con nombres iguales, puede prefijar el nombre con la fecha/hora o usar un GUID. También puede crear una carpeta por remitente. Si encuentra errores de permisos o límites de tamaño, captúrelos con un bloque "Configure run after" y envíe una notificación por correo al administrador. Considere también registros en una lista de SharePoint para auditoría de cada ejecución.
// Prefixo com timestamp
File Name: @{formatDateTime(utcNow(),'yyyyMMdd-HHmmss')}_@{items('Apply_to_each')?['Name']}
// Exemplo de ação após erro
Configure run after: has failed
Ação: Send an email (V2) -> Aviso de erro com corpo: @{outputs('Create_file')?['body']}
Notas sobre límites: SharePoint Online soporta archivos grandes (hasta 250 GB por archivo, según políticas actuales), pero Power Automate puede fallar si el adjunto es demasiado grande para ser leído por el conector. Para volúmenes elevados, evalúe soluciones ETL o OneDrive for Business como repositorio intermedio.
Verificar el resultado
Envíe un correo de prueba con adjunto y el asunto que corresponde al filtro. Verifique la biblioteca de SharePoint: el archivo debe existir con el nombre correcto y las columnas de metadatos rellenadas. Consulte el historial de ejecución del flujo en Power Automate para ver detalles y mensajes de error si algo falla. Un flujo bien configurado muestra el tiempo de ejecución (p. ej.: 3–7 segundos por adjunto) y el payload enviado.
Si algo no aparece, verifique permisos de la cuenta del conector, la ruta del Folder Path y si las columnas fueron correctamente rellenadas (tipos incompatibles provocan fallos en la acción "Update file properties").
Conclusión
Esta automatización reduce trabajo manual y centraliza adjuntos importantes en SharePoint con facilidad de búsqueda. Próximos pasos recomendados: añadir etiquetas automáticas con lógica condicional, guardar adjuntos en carpetas por remitente, o integrar con Power BI para dashboards que muestren volumen y origen de los adjuntos. Consejo práctico: empiece con filtros simples y monitorice 7–14 días para ajustar thresholds y evitar ruido y errores.