Como exportar emails com anexos para SharePoint em Power Automate
Este tutorial mostra como criar um fluxo em Power Automate para exportar automaticamente emails com anexos para uma biblioteca SharePoint, útil para organizar e partilhar ficheiros sem intervenção manual. A solução filtra emails por assunto, guarda o anexo e regista metadados básicos para pesquisa posterior. A ideia é reduzir trabalho repetitivo, melhorar a auditoria dos ficheiros e facilitar o acesso por colegas da equipa ou stakeholders.
Pré-requisitos
- Conta Microsoft com acesso a Power Automate. Para cenários empresariais, verifique a licença (per-user ou per-flow) se espera processar muitos emails por dia.
- Site e biblioteca em SharePoint Online com permissões de escrita para a conta do fluxo. Configure colunas na biblioteca como Title (Single line of text), Sender (Single line of text), Subject (Single line of text) e ReceivedTime (Date and Time).
- Caixa de correio no Exchange Online ou Outlook.com acessível pela mesma conta usada no Power Automate. Tenha em conta limites: Outlook.com costuma aceitar anexos até 25 MB; Exchange Online pode permitir valores maiores conforme configuração do tenant (ex.: 100–150 MB).
- Conhecimentos básicos de criação de fluxos em Power Automate (interface e triggers). É útil saber usar expressões como formatDateTime() e concat() para manipular nomes de ficheiro.
Passo 1: Criar o fluxo com o trigger "When a new email arrives (V3)"
Abra o Power Automate, escolha "Automated cloud flow" e selecione o trigger "When a new email arrives (V3)" do conector Office 365 Outlook. Configure a pasta (Inbox) e, opcionalmente, filtre por From, Subject Filter ou Importance para reduzir disparos desnecessários. Por exemplo, se só precisa de relatórios mensais, use Subject Filter: "Relatório Mensal" — isso pode reduzir o número de execuções de centenas para poucas por mês.
// Exemplos de campos do trigger
Folder: Inbox
Include Attachments: Yes
Only with Attachments: Yes
Subject Filter: Relatório Mensal
Explicação: o filtro no trigger evita custos e throttling. Se o seu fluxo for executado 1000 vezes por dia sem necessidade, rapidamente atingirá limites de utilização. Comece com filtros simples e teste durante uma semana para ajustar.
Passo 2: Verificar se o email tem anexos e iterar
Adicione uma condição simples para garantir que o email tem anexos. Normalmente o trigger fornece a propriedade Has Attachments; se não, use a ação "Get attachments" e verifique se a lista não está vazia. Em seguida, use "Apply to each" para processar cada anexo. Recomenda-se definir Concurrency Control no "Apply to each" para 1 se for importante preservar ordem ou evitar colisões na criação de ficheiros.
// Condição 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'])
Exemplo prático: se receber em média 20 emails com anexos por dia e cada anexo tiver 2 MB, isso perfaz cerca de 40 MB/dia → ~1.2 GB/mês. Planeie quota e limpeza automática se for esperado volume maior (ex.: >1000 anexos/mês).
Passo 3: Guardar cada anexo em SharePoint com metadados
Dentro do "Apply to each", adicione a ação "Create file" do conector SharePoint para criar o ficheiro na biblioteca. Use dynamic content para Nome do ficheiro e ContentBytes. Depois, adicione a ação "Update file properties" para preencher colunas como "Sender", "Subject" e "ReceivedTime". Crie colunas adequadas na biblioteca antes de executar o fluxo para evitar erros.
// 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']}
Sugestão prática: mapear Sender para o endereço de email (ex.: joao.silva@contoso.com) num campo de texto, e adicionar uma coluna "ProcessedBy" (Choice ou Person) se várias equipas forem responsáveis pelos ficheiros.
Passo 4: Tratar nomes duplicados e erros comuns
Para evitar sobrescrever ficheiros com nomes iguais, pode prefixar o nome com a data/hora ou usar um GUID. Também pode criar uma pasta por remetente. Se encontrar erros de permissões ou limites de tamanho, capture-os com um bloco "Configure run after" e envie uma notificação por email ao administrador. Considere também registos numa lista SharePoint para auditoria de cada execução.
// 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 limites: o SharePoint Online suporta ficheiros grandes (até 250 GB por ficheiro, conforme políticas actuais), mas o Power Automate pode falhar se o anexo for demasiado grande para ser lido pelo conector. Para volumes elevados, avalie soluções ETL ou OneDrive for Business como repositório intermédio.
Verificar o resultado
Envie um email de teste com anexo e o assunto que corresponde ao filtro. Verifique a biblioteca SharePoint: o ficheiro deve existir com o nome correcto e as colunas de metadados preenchidas. Consulte o historial de execução do fluxo no Power Automate para ver detalhes e mensagens de erro se algo falhar. Um fluxo bem configurado mostra o tempo de execução (por ex.: 3–7 segundos por anexo) e o payload enviado.
Se algo não aparecer, verifique permissões da conta do conector, o caminho do Folder Path e se as colunas foram correctamente preenchidas (tipos incompatíveis causam falhas na ação "Update file properties").
Conclusão
Esta automação reduz trabalho manual e centraliza anexos importantes em SharePoint com facilidade de pesquisa. Próximos passos recomendados: adicionar tags automáticas com lógica condicional, guardar anexos em pastas por remetente, ou integrar com Power BI para dashboards que mostrem volume e origem dos anexos. Dica prática: comece com filtros simples e monitorize 7–14 dias para ajustar thresholds e evitar ruído e erros.