(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa

Como criar um formulário com anexos condicionais em Power Apps / Power Platform

João Barros 28 de October de 2026 4 min de leitura

Criar um formulário que peça anexos apenas quando necessário é útil para reduzir dados redundantes e orientar utilizadores. Este tutorial mostra como, em Power Apps / Power Platform, construir um Canvas App que apresenta campos condicionais de ficheiro e guarda os anexos para SharePoint ou Dataverse.

Pré-requisitos

  • Conta com acesso a Power Apps (licença com Canvas Apps).
  • Uma lista SharePoint ou uma tabela Dataverse para registo (ex.: lista "Registos").
  • Um fluxo Power Automate (opcional) para mover anexos ou processar ficheiros maiores.
  • Conhecimentos básicos de Canvas Apps: ecrãs, galerias, formulários e colecções.

Passo 1: Criar a fonte de dados (SharePoint ou Dataverse)

Decide onde vais guardar os registos. Exemplo com SharePoint: cria uma lista chamada "Registos" com colunas: Title (Texto), Tipo (Escolha) e Comentários (Multilinha). Para anexos condicionais poderás usar a funcionalidade nativa de anexos da lista ou armazenar ficheiros numa biblioteca separada e guardar o link.

// Exemplo: estrutura mínima da lista SharePoint
Lista: Registos
Colunas: Title (Texto), Tipo (Escolha: Produto, Serviço), Comentarios (Multilinha)
Ativar anexos na lista

Passo 2: Criar o Canvas App e ligar a fonte de dados

Cria um Canvas App em branco (Phone ou Tablet) e adiciona a ligação à lista SharePoint (ou à tabela Dataverse). Insere um EditForm ligado a "Registos" e os campos Title, Tipo e Comentarios.

// No Power Apps Studio
Insert > Forms > Edit Form
DataSource = Registos
Fields = [Title, Tipo, Comentarios]

Passo 3: Adicionar controlo condicional de anexos

Se usares a funcionalidade nativa de anexos do EditForm, podes mostrar/ocultar o controlo Attachments com base no campo Tipo. Alternativamente, usa um controlo de ficheiros personalizado (AddMediaButton ou Attachment control separado) e guarda os ficheiros numa colecção até submeter.

// Exemplo usando AddMediaButton para recolher ficheiros condicionalmente
// Adiciona um AddMediaButton chamado btnAddFile e uma Gallery chamada galFiles
// Colecção para guardar ficheiros temporários
OnAddFile: Collect(colFiles, {Name: Last(AddedMedia).Name, Content: Last(AddedMedia).Value})

// Visibilidade do botão controlada por Tipo
btnAddFile.Visible = (DataCardValue_Tipo.Selected.Value = "Serviço")

Passo 4: Mostrar lista de ficheiros adicionados

Cria uma Gallery simples que mostra os itens de colFiles para permitir remover ou ver o nome do ficheiro antes de submeter.

// Gallery Items
galFiles.Items = colFiles

// Botão Remover no template da Gallery
OnSelect = Remove(colFiles, ThisItem)

Passo 5: Submeter o formulário e guardar anexos

Quando o utilizador submeter o formulário, primeiro guarda o registo em SharePoint/Dataverse. Se usares SharePoint com anexos nativos, podes usar FormMode e SubmitForm; para ficheiros guardados separadamente, cria o item e depois faz upload para a biblioteca e actualiza o link no registo.

// Botão Guardar - lógica simplificada
// 1. Submeter formulário para criar o registo
SubmitForm(frmRegisto)

// 2. Quando o formulário for bem-sucedido, usar OnSuccess para processar ficheiros
// OnSuccess do frmRegisto
If(CountRows(colFiles) > 0,
   ForAll(colFiles,
     // Exemplo de criar ficheiro em SharePoint numa biblioteca chamada 'Anexos'
     // Usa a função Power Apps: Patch com SharePointAttachment não é suportado directamente
     // Recomenda-se usar Power Automate para upload; aqui mostramos chamada a um Flow
     'FlowUploadFile'.Run(RegisterID, ThisRecord.Name, ThisRecord.Content)
   )
);

// Onde RegisterID = frmRegisto.LastSubmit.ID

Passo 6: Criar o Power Automate flow para receber ficheiros

Como o Power Apps não escreve directamente binários para bibliotecas facilmente, cria um Power Automate com trigger "Power Apps" que receba parâmetros: RegisterID, FileName, FileContent (base64). O Flow usa a acção "Create file" em SharePoint e actualiza a lista/registo se necessário.

// Passos essenciais no Flow
Trigger: PowerApps
Action: Create file (SiteAddress, FolderPath, FileName, FileContent) // FileContent em base64
Optional: Update item (Registos) para acrescentar link do ficheiro
Return: success/URL para Power Apps

Verificar o resultado

Testa o cenário: escolhe Tipo = "Serviço" e adiciona ficheiros; escolhe Tipo = "Produto" e verifica que o botão de anexos fica oculto. Submete e confirma que o item foi criado na lista SharePoint e que os ficheiros aparecem na biblioteca com ligação ao registo. Erros comuns: ficheiros não enviados porque o Flow não retorna sucesso, permissões insuficientes, ou base64 mal formatado.

Conclusão

Com este padrão tens um formulário em Power Apps que solicita anexos apenas quando aplicável e os guarda de forma fiável usando Power Automate para upload. Próximos passos: tratar validação de tamanho/tipo de ficheiro, mostrar progresso de upload, e associar metadados dos ficheiros ao registo. Dica: testa sempre o Flow isoladamente com dados de exemplo para depurar problemas de ficheiro.