Pular para o conteúdo
Conteúdo
Tutorial7 min de leitura

Como tratar imagens de listas do SharePoint no Power Automate

A coluna do tipo Imagem não devolve um arquivo, e sim um JSON. Como ler esse JSON, buscar o binário e anexar a imagem em um e-mail ou PDF sem o fluxo quebrar.

O problema

Você criou uma lista do SharePoint com uma coluna de Imagem, montou o fluxo no Power Automate e tentou anexar a foto num e-mail. O anexo chega corrompido, vazio, ou o fluxo estoura antes disso. O motivo é simples e quase nunca está documentado onde você procurou: a coluna de Imagem não guarda o arquivo, guarda um texto JSON apontando para ele.

Quando você adiciona uma coluna do tipo Imagem numa lista do SharePoint, o que fica gravado na coluna é um texto JSON. O arquivo em si vai para uma pasta de anexos oculta da lista.

Se você jogar o conteúdo dinâmico dessa coluna direto no campo de anexo de um e-mail, o Power Automate vai anexar o JSON, não a foto.

O que a coluna realmente contém

json
{
  "fileName": "vistoria-frente.jpg",
  "serverRelativeUrl": "/sites/Obras/Lists/Vistorias/Attachments/42/vistoria-frente.jpg",
  "id": "9f4c0f1e-...",
  "serverUrl": "https://suaempresa.sharepoint.com",
  "type": "thumbnail",
  "fieldName": "Foto"
}

Os dois campos que interessam são serverUrl e serverRelativeUrl. Juntos, eles formam o endereço absoluto do arquivo.

Passo 1: transformar o texto em objeto

O conteúdo dinâmico chega como *string*. Antes de acessar qualquer propriedade, converta com json(). Numa ação Compor:

text
json(triggerOutputs()?['body/Foto'])?['serverRelativeUrl']
text
if(
  empty(coalesce(triggerOutputs()?['body/Foto'], '')),
  '',
  json(triggerOutputs()?['body/Foto'])?['serverRelativeUrl']
)

Passo 2: buscar o binário

Com o caminho em mãos, use Obter conteúdo do arquivo usando o caminho (conector SharePoint). O endereço do site vai no campo *Endereço do Site*; o caminho relativo vai no segundo campo.

Passo 3: anexar

A saída dessa ação já é o binário. No Enviar um email (V2), em Anexos:

  • Nome: json(triggerOutputs()?['body/Foto'])?['fileName']
  • Conteúdo: a saída de *Obter conteúdo do arquivo*

Quando há várias imagens

Uma coluna de Imagem guarda uma foto só. Para várias, o caminho é usar anexos do item e percorrer com *Obter anexos* + *Obter conteúdo do anexo*, montando um array de anexos com Selecionar em vez de um laço Aplicar a cada. Assim fica mais rápido e não estoura o limite de ações do fluxo.

json
{
  "Name": "@item()?['DisplayName']",
  "ContentBytes": "@body('Obter_conteúdo_do_anexo')"
}

O que levar disso

O erro não estava no Power Automate. Estava em assumir que uma coluna chamada *Imagem* guarda uma imagem. Antes de automatizar, vale sempre olhar o que o sistema de origem grava de verdade. Quase todo fluxo que quebra em produção quebra por causa de um formato de dado que ninguém conferiu.

Tecnologias e temas

Power AutomateIntegraçõesPower AutomateSharePoint OnlineExpressões WDL

Materiais

Conteúdos relacionados