Cansado de formulários em PDF? Crie uma app simples com Power Apps
Muitas organizações ainda dependem de formulários em PDF enviados por email. O resultado é previsível: versões perdidas, informação incompleta, anexos espalhados e dificuldade em acompanhar o estado dos pedidos.
A boa notícia?
Com Power Apps + SharePoint + Power Automate, consegue criar uma aplicação simples de pedidos (intake app) em poucas horas — sem necessidade de programação avançada.
Este tutorial mostra-lhe o caminho mais rápido e funcional.
🎯 Objectivo da solução
Criar uma aplicação que permita:
- Recolher dados administrativos (nome, departamento, descrição, etc.)
- Anexar documentos de suporte
- Guardar tudo de forma estruturada no SharePoint
- Facilitar o acompanhamento dos pedidos
Arquitetura recomendada (simples e eficaz)
Componente | Função |
SharePoint List | Guarda os dados do pedido |
Power Apps | Interface para o utilizador preencher o formulário |
Anexos do SharePoint | Guarda os documentos associados |
(Opcional) Power Automate | Notificações, aprovações, automações |
Se precisa apenas de substituir o PDF rapidamente, usar anexos da lista é a opção mais rápida e suficiente na maioria dos casos.
Passo 1 — Criar a lista no SharePoint
Crie uma nova Lista do SharePoint com colunas como:
- Nome do requerente (Texto)
- Email (Texto)
- Departamento (Escolha)
- Tipo de pedido (Escolha)
- Prioridade (Baixa / Média / Alta)
- Descrição (Texto multilinha)
- Data pretendida (Data)
- Estado (Novo / Em análise / Aprovado / Rejeitado)
👉 Não precisa criar coluna para anexos — o SharePoint já permite anexos automaticamente.
Passo 2 — Gerar a app automaticamente com Power Apps
Na própria lista do SharePoint:
- Clique em Integrar → Power Apps → Criar uma aplicação
- Dê um nome à app
- Aguarde a geração automática
O Power Apps cria automaticamente:
- Ecrã de listagem
- Ecrã de detalhe
- Formulário de criação/edição
Neste ponto, já tem uma app funcional.
Passo 3 — Activar upload de documentos (anexos)
No ecrã de formulário:
- Seleccione o formulário
- No painel direito, clique em Editar campos
- Adicione o campo Attachments (Anexos)
- Reorganize o formulário conforme necessário
Resultado:
O utilizador pode agora anexar ficheiros directamente no pedido, tal como faria num formulário moderno.
Passo 4 — Melhorias rápidas que aumentam muito a qualidade
Com pequenos ajustes, a app passa de “funcional” para “profissional”:
✔️ Tornar campos obrigatórios
Selecione um campo → Advanced → Required = true
✔️ Mostrar mensagens de erro
Já vem integrado nos formulários padrão do Power Apps.
✔️ Mostrar apenas pedidos do próprio utilizador
Na galeria de listagem:
Filter(ListaPedidos, CreatedBy.Email = User().Email)
✔️ Mensagem de confirmação após submissão
Após o botão de Submeter:
Notify(“Pedido submetido com sucesso.”, NotificationType.Success)
Quando usar Document Library em vez de anexos?
Use biblioteca de documentos + Power Automate se:
- Precisa de controlo documental formal
- Precisa de permissões por ficheiro
- Os documentos são reutilizados por outros processos
- Existe auditoria ou compliance envolvido
Caso contrário, para 80% dos cenários administrativos, anexos na lista são mais do que suficientes e muito mais rápidos de implementar.
Resultado final
Passa de isto:
❌ PDF por email
❌ Ficheiros perdidos
❌ Versões erradas
❌ Falta de rastreabilidade
Para isto:
✅ App moderna
✅ Dados estruturados
✅ Anexos organizados
✅ Histórico completo
✅ Fácil evolução futura
Conclusão
Não é necessário um grande projecto para eliminar formulários em PDF.
Com Power Apps e SharePoint é possível criar uma solução profissional, segura e escalável em poucas horas.
Se já trabalha com Microsoft 365, as ferramentas já estão incluídas no seu ecossistema.
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)
- Obter o conteúdo dos dois ficheiros
(SharePoint, OneDrive, email, HTTP request, etc.) - Converter para texto (caso venha em binário)
- 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.
Search
Artigos Recentes
- EuroVault360 | Gestão Financeira Inteligente
- Aprender formas nunca foi tão divertido!
- Cansado de formulários em PDF? Crie uma app simples com Power Apps
- Comparar dois ficheiros HTML no Power Automate
- Como Criar E-mails Automáticos de Aniversário no Power Automate
- Guia Prático: Espelhar Todas as Listas do SharePoint com Power Automate
- Power BI vs Excel: Quando Usar Cada Ferramenta?
- PowerApps: O Manual Essencial para Criar Apps de Forma Fácil e Transformadora
- Power Automate: A Forma Mais Rápida de Automatizar Tarefas e aumentar a Produtividade
- Guia de Estudo para a Certificação Power BI