Como Evitar que o Power Automate Não Consiga Ler uma Coluna Pessoa
🔍 WiseChecker

Como Evitar que o Power Automate Não Consiga Ler uma Coluna Pessoa

Ao criar um fluxo do Power Automate que lê uma coluna Pessoa de uma lista ou biblioteca do SharePoint, o fluxo pode falhar com um erro informando que o valor da coluna é nulo ou não pode ser lido. Esse problema ocorre porque o Power Automate trata colunas Pessoa como objetos complexos que contêm várias propriedades, não como valores de texto simples. O fluxo não consegue acessar o nome ou email da pessoa se você referenciar a coluna como uma única string. Este artigo explica por que a estrutura da coluna Pessoa quebra o fluxo e mostra como corrigi-lo usando a sintaxe e as ações de fluxo corretas.

Principais Conclusões: Lendo uma Coluna Pessoa no Power Automate

  • Esquema de saída da coluna Pessoa: Sempre use a ação “Aplicar a cada” ou a expressão “Primeiro” para acessar a matriz de objetos.
  • Expressão @{item()?[‘DisplayName’]}: Extrai o nome de exibição da pessoa do objeto da coluna Pessoa.
  • Ação Inicializar variável: Armazene o valor da pessoa em uma variável para evitar erros de nulo em etapas subsequentes.

ADVERTISEMENT

Por que o Power Automate Não Consegue Ler uma Coluna Pessoa Diretamente

Uma coluna Pessoa no SharePoint não armazena um único valor de texto. Ela armazena uma coleção de propriedades para cada pessoa selecionada. Essas propriedades incluem o nome de exibição, endereço de email, ID da conta e cargo. Quando o Power Automate recupera um item de lista, a coluna Pessoa aparece como uma matriz de objetos. Cada objeto contém os dados da pessoa.

Se você tentar usar a coluna Pessoa diretamente em uma condição ou em uma ação de envio de email, o mecanismo do fluxo não consegue determinar qual propriedade você deseja. O resultado é um valor nulo ou um erro em tempo de execução. A mensagem de erro geralmente diz “A expressão é inválida” ou “Não é possível avaliar a expressão”.

A solução é analisar a coluna Pessoa corretamente. Você deve iterar sobre a matriz usando um loop “Aplicar a cada” ou usar a função “Primeiro” para obter o primeiro objeto de pessoa. Em seguida, acesse a propriedade específica de que precisa, como DisplayName ou Email.

Passos para Corrigir o Erro de Leitura da Coluna Pessoa

Os passos a seguir assumem que você tem um fluxo existente que é acionado em um item do SharePoint e falha ao ler uma coluna Pessoa. Você substituirá a referência incorreta da coluna pela expressão correta.

  1. Identifique o nome da coluna Pessoa e a estrutura do objeto
    Abra seu fluxo no modo de edição. Selecione a ação que usa a coluna Pessoa, como uma ação “Enviar um email” ou “Condição”. Remova qualquer referência direta ao nome da coluna, como “CampoPessoa”. Em vez disso, use o seletor de conteúdo dinâmico para adicionar a coluna Pessoa novamente. O Power Automate mostrará a coluna como um objeto com subpropriedades. As subpropriedades incluem DisplayName, Email e Claims. Se você não vir subpropriedades, o esquema do fluxo pode estar desatualizado. Execute o acionador manualmente uma vez para atualizar o esquema.
  2. Adicione uma ação “Aplicar a cada” para iterar sobre a matriz de pessoas
    Insira uma nova ação “Aplicar a cada” do conector Controle. No campo “Selecionar uma saída das etapas anteriores”, escolha a coluna Pessoa da lista de conteúdo dinâmico. Essa ação percorrerá cada objeto de pessoa na coluna. Mesmo que você espere apenas uma pessoa, a coluna ainda é uma matriz. O loop garante que você acesse o objeto corretamente.
  3. Use a propriedade DisplayName dentro do loop
    Dentro da ação “Aplicar a cada”, adicione a ação que precisa do nome da pessoa, como “Enviar um email”. No corpo ou assunto do email, use a expressão @{items('Aplicar_a_cada')?['DisplayName']}. Substitua “Aplicar_a_cada” pelo nome real do loop mostrado em seu fluxo. Essa expressão extrai o nome de exibição do objeto de pessoa atual.
  4. Lide com o cenário de pessoa única usando a função Primeiro
    Se sua coluna Pessoa permitir apenas uma seleção, você pode evitar o loop. Use a expressão @{first(outputs('Obter_item')?['body/CampoPessoa'])?['DisplayName']}. Substitua “Obter_item” pelo nome da sua ação “Obter item” e “CampoPessoa” pelo nome interno da sua coluna Pessoa. A função Primeiro retorna o primeiro objeto da matriz. Em seguida, você acessa a propriedade DisplayName nesse objeto.
  5. Armazene o valor da pessoa em uma variável para reutilização
    Adicione uma ação “Inicializar variável” antes do loop ou após a ação Obter item. Defina o tipo como String. No campo valor, use a expressão do passo 3 ou 4. Para uma coluna de pessoa única, use @{first(outputs('Obter_item')?['body/CampoPessoa'])?['DisplayName']}. Para várias pessoas, inicialize uma variável de matriz e anexe cada nome dentro do loop. Em seguida, referencie a variável em todas as ações subsequentes. Essa abordagem evita erros de nulo se a coluna estiver vazia.
  6. Teste o fluxo com um item de lista que tenha um valor de pessoa
    Salve o fluxo. Selecione o acionador e execute o fluxo manualmente. Escolha um item de lista que tenha uma pessoa atribuída à coluna Pessoa. Verifique se o fluxo lê o nome de exibição corretamente e não gera erro. Se o fluxo ainda falhar, verifique o nome interno da coluna. O nome interno pode diferir do nome de exibição. Use a API REST do SharePoint para encontrar o nome interno: https://seutenant.sharepoint.com/sites/seustie/_api/web/lists/getbytitle('SuaLista')/fields.

ADVERTISEMENT

Se o Power Automate Ainda Não Consegue Ler a Coluna Pessoa

Coluna Pessoa retorna nulo mesmo com a expressão correta

A coluna pode estar vazia para o item selecionado. No SharePoint, uma coluna Pessoa que não é obrigatória pode não ter valor. Quando a coluna está vazia, a matriz é nula. A função Primeiro ou o loop Aplicar a cada falhará porque não há objeto. Adicione uma ação Condição antes de ler a coluna Pessoa. Verifique se a coluna é igual a nulo. Se for nula, pule as ações que dependem dos dados da pessoa. Use a expressão @empty(outputs('Obter_item')?['body/CampoPessoa']) para testar se está vazia.

O fluxo usa o nome interno errado da coluna

O Power Automate às vezes mostra o nome de exibição da coluna, mas o nome interno subjacente pode conter espaços ou caracteres especiais. O seletor de conteúdo dinâmico geralmente mapeia corretamente, mas se você digitou a expressão manualmente, pode ter usado o nome errado. Abra a saída da ação “Obter item” do histórico de execução. Expanda o objeto body e procure pela coluna Pessoa. Copie o nome exato da propriedade e use-o em sua expressão. O nome interno geralmente termina com “Id” para o campo de ID da pessoa. Use a propriedade DisplayName em vez da propriedade Id para nomes legíveis.

Várias pessoas causam ações duplicadas

Se a coluna Pessoa permitir várias seleções, o loop Aplicar a cada será executado uma vez por pessoa. Isso pode enviar vários emails ou criar entradas duplicadas. Para enviar um único email com todos os nomes, colete os nomes em uma variável de string. Dentro do loop, anexe cada DisplayName à variável com um separador de ponto e vírgula. Após o término do loop, use a variável na ação de email. Esse método consolida todos os nomes de pessoas em um único valor.

Coluna de Pessoa Única vs Coluna de Várias Pessoas: Diferenças nas Expressões

Item Coluna de Pessoa Única Coluna de Várias Pessoas
Estrutura da coluna Matriz com um objeto Matriz com um ou mais objetos
Ação recomendada Use a função Primeiro para obter o objeto Use o loop Aplicar a cada para iterar
Expressão para DisplayName @{first(outputs('Obter_item')?['body/CampoPessoa'])?['DisplayName']} @{items('Aplicar_a_cada')?['DisplayName']} dentro do loop
Tratamento de coluna vazia Verifique com @empty() antes de Primeiro Verifique com @empty() antes do loop

Agora você pode criar fluxos do Power Automate que leem colunas Pessoa sem erros. Sempre trate a coluna Pessoa como uma matriz de objetos. Use a função Primeiro para colunas de pessoa única ou um loop Aplicar a cada para colunas de várias pessoas. Armazene o nome de exibição da pessoa em uma variável para simplificar a lógica do fluxo. Se a coluna estiver vazia, adicione uma condição para pular as ações dependentes. Essas técnicas eliminam o erro “não é possível ler uma coluna Pessoa” e tornam seus fluxos confiáveis.

ADVERTISEMENT