Saltar para o conteúdo
Consultoria · Automação · Dados · Digital
← Blog

Comparar dois ficheiros HTML no Power Automate

Se já tentaste “comparar HTML” no Power Automate, já deves ter percebido rapidamente o problema:
HTML não é texto simples.

Pequenas diferenças invisíveis — espaços extra, quebras de linha, atributos em ordem diferente, IDs dinâmicos, timestamps escondidos em comentários — fazem dois ficheiros visualmente idênticos parecerem completamente diferentes para o motor de comparação.

A boa notícia?
👉 Dá para fazer isto bem, desde que escolhas a abordagem certa.

Primeiro passo: o que queres realmente comparar?

Antes de começares a construir o fluxo, define claramente o objetivo. Parece óbvio, mas é aqui que muitos projetos falham.

Pergunta-te:

  • Quero saber se o HTML é exatamente igual (byte a byte)?
  • Quero saber se o conteúdo é o mesmo, ignorando formatação?
  • Quero identificar o que mudou (diff) para registar ou enviar alertas?

Cada objetivo exige uma estratégia diferente.

Opção A — Igualdade “exata” (rápida e simples)

Quando usar

Quando os ficheiros são gerados de forma controlada:

  • Mesmo sistema de origem
  • Mesmo template
  • Sem elementos dinâmicos
  • Sem timestamps automáticos

Lógica do processo (alto nível)

  1. Obter o conteúdo dos dois ficheiros
    (SharePoint, OneDrive, email, HTTP request, etc.)
  2. Converter para texto (caso venha em binário)
  3. Comparar diretamente as duas strings

Exemplo de condição no Power Automate

TextoHTML_1 é igual a TextoHTML_2

Problema comum

Basta existir:

  • Um espaço extra
  • Uma quebra de linha diferente
  • Um comentário com timestamp
  • Um atributo em ordem diferente

… e a comparação falha, mesmo que visualmente os ficheiros sejam iguais.

Conclusão: útil apenas em cenários muito controlados.

Opção B — Normalizar antes de comparar (a mais útil no mundo real)

Esta é, de longe, a abordagem mais prática no dia a dia.

A ideia é simples:
👉 limpar o “ruído” do HTML antes da comparação.

Ou seja, transformar os dois ficheiros numa versão mais previsível e estável.

Técnicas de normalização que funcionam bem

Estas técnicas resolvem a maioria dos casos práticos:

  • Remover quebras de linha (\r, \n)
  • Remover tabs (\t)
  • Reduzir múltiplos espaços para um só
  • Converter tudo para lowercase (em certos cenários)
  • Remover partes dinâmicas:
    • IDs gerados automaticamente
    • Tokens
    • Timestamps
    • GUIDs

Exemplos práticos de expressões no Power Automate

Assumindo que já tens duas variáveis de texto:

  • html1
  • html2

Remover quebras de linha e tabs

replace(

  replace(

    replace(variables(‘html1’), ‘\r’, ”),

    ‘\n’, ”

  ),

  ‘\t’, ”

)

Repete o mesmo para html2.

Reduzir espaços duplos

Infelizmente, o Power Automate não tem regex nativa, por isso por vezes é necessário aplicar o replace várias vezes:

replace(<texto>, ‘  ‘, ‘ ‘)

Em casos mais problemáticos, aplicas esta operação 2 ou 3 vezes em sequência.

Converter para lowercase (opcional)

toLower(<texto_normalizado>)

Útil quando não te interessa distinguir entre maiúsculas e minúsculas nos elementos HTML.

Comparação final

Depois de normalizares ambos os textos:

  • html1_normalizado
  • html2_normalizado

A comparação torna-se muito mais fiável:

html1_normalizado é igual a html2_normalizado

E de repente, aquilo que antes parecia impossível começa a funcionar com consistência.

Conclusão

Comparar HTML no Power Automate não é um problema técnico — é um problema de abordagem.

Se comparares HTML “em bruto”, vai haver falsos positivos constantemente.
Se normalizares primeiro, consegues construir fluxos robustos e confiáveis.

A regra prática é simples:
Nunca compares HTML antes de o tornares previsível.

 

Html_Compare-1024x683 Comparar dois ficheiros HTML no Power Automate
Da ideia à solução

Tem um desafio tecnológico ou digital para resolver?

Falamos sobre o contexto, identificamos opções e desenhamos uma abordagem pragmática.

Fale connosco
Show Buttons
Hide Buttons