Extraia informações de um e-mail com o Power Automate

Por Erick Alves de Moura
Extraia informações de um e-mail com o Power Automate

Embora existam maneiras melhores de trocar informações entre vários sistemas, o e-mail é provavelmente uma das mais simples. Você envia um e-mail de um sistema para um endereço de e-mail específico, extrai as informações do corpo do e-mail e as armazena em outro lugar. No entanto, essa abordagem pode consumir muito tempo se for feita manualmente e não é muito divertida de fazer. E talvez nem seja necessário se você puder criar um fluxo do Power Automate para fazer isso por você.

Comece com a ação ‘HTML para texto’

Sempre comece com a ação ‘HTML para texto’ ao processar e-mails. O código HTML completo do e-mail pode ser bastante confuso e esta ação irá reduzi-lo a um texto simples. Tomemos como exemplo um e-mail que recebo com cada solicitação de consultoria.

Outlook

A ação ‘HTML para texto’ pegará todo o e-mail e removerá todas as tags HTML para retornar o conteúdo do e-mail como texto simples.

Fluxo Power Automate

Extraia as informações

Como agora é um texto simples, você pode processá-lo como qualquer outra string. Como você pode ver na imagem acima, os dados do meu e-mail são separados por uma linha vazia. Isso significa que o separador é um caractere de fim de linha no final da linha com texto e outro caractere de fim de linha para a linha vazia. Portanto, vou dividi-lo por dois caracteres de fim de linha.

split(body('Html_to_text'),decodeUriComponent('%0A%0A'))
Fluxo Power Automate

O resultado é uma matriz simples com cada linha como um item separado. Como acontece com qualquer outro array, agora posso usar índices para escolher uma linha específica, por exemplo, 0 para obter o nome.

outputs('Compose')[0]   ->   Nome: Erick

Mas ainda é um pouco mais de informação do que preciso. Quero armazenar apenas o nome, sem a descrição ‘Nome:’. Vamos fazer outra divisão, desta vez no caractere ‘:’ e pegar apenas a 2ª parte, o próprio nome.

split(outputs('Compose')[0],':')[1]   ->    Erick

A última etapa é remover quaisquer espaços potenciais no início ou no final do nome com a função trim(…).

trim(split(outputs('Compose')[0],':')[1])
Fluxo Power Automate

Seguindo a mesma abordagem, apenas usando números de índice diferentes você pode extrair todas as partes do e-mail, uma por uma.

E se a posição da informação mudar?

Até agora existia a expectativa de que o e-mail tivesse uma estrutura fixa. Mas e se as posições puderem mudar? Se as informações estruturadas estão no final do e-mail e você não sabe quanto texto vem antes?

Não é grande coisa, desde que você tenha uma descrição para cada uma das linhas. Se for apenas o nome, sem a descrição ‘Nome:’, você está sem sorte. Não há nada para segurar. Mas se a linha do nome começar com ‘Nome:’, você poderá usar a ação ‘Filtrar matriz’ em vez do índice.

Use o e-mail analisado como entrada e filtre apenas os itens que começam com a descrição, neste caso ‘Nome:’.

Fluxo Power Automate

Se a descrição for única (e deveria ser única), a ação ‘Filtrar matriz’ retornará apenas uma linha. Pegue-o e processe-o como acima – divida por ‘:’ e corte(…) os espaços ao seu redor.

trim(split(body('Filter_array')[0],':')[1])
Fluxo Power Automate

Repita o mesmo ‘Matriz de filtros’ para identificar todas as linhas importantes, cada uma procurando um início de linha diferente, e extrair os dados.

Resumo

Embora este não seja um guia completo sobre como extrair informações de qualquer e-mail, pois cada e-mail é diferente, ele deve lhe dar uma ideia básica de como isso é feito no Power Automate. É muito processamento de texto. Livre-se das tags HTML, converta o e-mail em texto simples e analise-o. Podem ser muitas divisões e muitos filtros para obter as informações desejadas de e-mails complexos (por exemplo, com tabelas), mas se você seguir passo a passo você chegará lá (desde que haja algo para entender).

Entre em contato ainda hoje e veja como nossos especialistas em Power Automate podem ajudar o seu negócio.

Ver mais artigos

Entre em Contato

Vamos juntos transformar sua dor
em solução!

#moveFast