Power Automate Não Consegue Ler uma Coluna de Pessoa: Causa e Solução
🔍 WiseChecker

Power Automate Não Consegue Ler uma Coluna de Pessoa: Causa e Solução

Ao criar um fluxo do Power Automate para ler uma coluna de pessoa do SharePoint, o fluxo pode retornar um erro ou exibir valores vazios. Isso acontece porque o Power Automate trata colunas de pessoa de forma diferente de outros tipos de coluna. O fluxo recebe um objeto complexo com metadados em vez de uma simples string de texto. Este artigo explica por que o erro ocorre e oferece duas correções concretas: usar a ação Parse JSON ou a ação Apply to Each para extrair o nome de exibição da pessoa.

Principais Conclusões: Corrigindo Erros de Leitura de Coluna de Pessoa no Power Automate

  • Ação Parse JSON com esquema: Converte o objeto da coluna de pessoa em um formato legível para usar o nome de exibição diretamente.
  • Loop Apply to Each: Itera sobre o array de objetos de usuário da coluna de pessoa para extrair o email ou nome de exibição de cada pessoa.
  • Ação Compose com expressão: Usa first(outputs('Get_item')?['NomeColunaPessoa'])['DisplayName'] para obter o nome de uma única pessoa sem loop.

ADVERTISEMENT

Por que o Power Automate Retorna um Valor Vazio ou Erro para uma Coluna de Pessoa

O SharePoint armazena colunas de pessoa como objetos, não como texto simples. Ao usar a ação Get item ou Get items no Power Automate, a coluna de pessoa aparece como um array de objetos. Cada objeto contém propriedades como DisplayName, Email, Claims e Department. O Power Automate não consegue exibir essas propriedades aninhadas automaticamente no conteúdo dinâmico. Se você tentar usar o nome da coluna diretamente em uma ação Send an email, o fluxo falha ou exibe [object Object].

A causa raiz é a estrutura de dados. O Power Automate espera um valor string, mas a coluna de pessoa fornece um array. O fluxo não sabe qual propriedade extrair. Você deve dizer explicitamente ao Power Automate qual propriedade ler, como DisplayName ou Email.

Exemplo de Estrutura de Dados da Coluna de Pessoa

Ao executar uma ação Get item em uma lista com uma coluna de pessoa chamada Aprovador, a saída para essa coluna se parece com isso:

[
  {
    "@odata.type": "#Microsoft.Azure.Connectors.SharePoint.SPListExpandedUser",
    "Claims": "i:0#.f|membership|usuario@dominio.com",
    "DisplayName": "João Silva",
    "Email": "joao.silva@dominio.com",
    "Department": "Marketing"
  }
]

O fluxo vê esse array. Ele não o achata automaticamente em uma única string. Você deve usar um dos métodos abaixo para extrair o valor necessário.

Método 1: Usar a Ação Parse JSON para Extrair uma Coluna de Pessoa

A ação Parse JSON converte o objeto da coluna de pessoa em um objeto estruturado que o Power Automate pode ler. Este método funciona melhor quando a coluna de pessoa permite apenas um valor.

  1. Adicione a ação Get item
    No seu fluxo, adicione a ação Get item para a lista do SharePoint que contém a coluna de pessoa. Selecione o endereço do site e o nome da lista. Forneça o ID do item.
  2. Adicione a ação Parse JSON
    Adicione uma nova ação e pesquise por Parse JSON. Defina o campo Content como a saída da coluna de pessoa do Get item. Por exemplo, selecione Aprovador na lista de conteúdo dinâmico.
  3. Gere o esquema JSON
    Clique no botão Generate from sample. Cole um payload JSON de exemplo que corresponda à estrutura da coluna de pessoa. Use este exemplo:
    [
      {
        "DisplayName": "João Silva",
        "Email": "joao.silva@dominio.com",
        "Department": "Marketing"
      }
    ]
    

    Clique em Done. O Power Automate cria o esquema automaticamente.

  4. Use a saída analisada
    Após o Parse JSON, você pode usar as propriedades DisplayName ou Email da saída analisada. Em uma ação Send an email, selecione DisplayName no conteúdo dinâmico sob Parse JSON. O fluxo agora envia o nome de exibição da pessoa corretamente.

ADVERTISEMENT

Método 2: Usar uma Expressão na Ação Compose

Se preferir não usar o Parse JSON, você pode escrever uma expressão em uma ação Compose. Este método é mais rápido para colunas de pessoa com valor único.

  1. Adicione a ação Get item
    Mesmo que no Método 1. Obtenha o item que contém a coluna de pessoa.
  2. Adicione a ação Compose
    Adicione uma nova ação e pesquise por Compose.
  3. Insira a expressão
    Clique dentro do campo Inputs. Abra a aba Expression. Cole esta expressão, substituindo NomeColunaPessoa pelo nome interno da sua coluna de pessoa:
    first(outputs('Get_item')?['NomeColunaPessoa'])?['DisplayName']
    

    Se sua coluna de pessoa se chama Aprovador, a expressão fica:

    first(outputs('Get_item')?['Aprovador'])?['DisplayName']
    

    Clique em OK.

  4. Use a saída do Compose
    Em qualquer ação subsequente, selecione Outputs da ação Compose. Isso retorna o nome de exibição como uma string simples.

Método 3: Usar Apply to Each para Colunas de Pessoa com Múltiplos Valores

Quando a coluna de pessoa permite múltiplas seleções, a coluna retorna um array com vários objetos de usuário. Você deve percorrer cada item.

  1. Adicione a ação Get item
    Obtenha o item que contém a coluna de pessoa com múltiplos valores.
  2. Adicione uma ação Apply to Each
    Pesquise por Apply to Each. Clique dentro do campo Select an output from previous steps. Selecione a coluna de pessoa na lista de conteúdo dinâmico.
  3. Adicione ações dentro do loop
    Dentro do Apply to Each, adicione uma ação Compose. Defina o Inputs como a propriedade DisplayName do conteúdo dinâmico. O Power Automate exibe a propriedade como NomeColunaPessoa DisplayName.
  4. Colete os nomes
    Se precisar enviar todos os nomes em um único email, use uma ação Select antes do loop ou use uma variável de string para concatenar cada DisplayName com ponto e vírgula.

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

O Fluxo Retorna uma String Vazia para a Coluna de Pessoa

Se o fluxo for executado, mas o valor da coluna de pessoa estiver em branco, a coluna pode estar vazia no SharePoint. Abra o item da lista e confirme se a coluna de pessoa tem um valor. Se a coluna contiver uma pessoa, mas o fluxo mostrar vazio, verifique o nome interno da coluna. O Power Automate usa o nome interno, não o nome de exibição. Para encontrar o nome interno, vá para as configurações da lista, clique na coluna de pessoa e observe a URL. O nome interno aparece após Field=.

O Fluxo Falha com InvalidTemplateException

Esse erro ocorre quando você usa a coluna de pessoa diretamente em um campo de string. Por exemplo, você define o campo To em Send an email como a saída da coluna de pessoa. A ação de email espera uma string, mas a coluna de pessoa fornece um array. Use a ação Compose com a expressão mostrada no Método 2 para converter o array em uma string.

O Fluxo Funciona no Teste, mas Falha em Produção

Se o fluxo funciona durante o teste, mas falha em um item de produção, a coluna de pessoa pode estar vazia em alguns itens. Use uma ação Condition para verificar se a coluna de pessoa é nula antes de analisá-la. Adicione uma ação Condition após Get item. Defina a condição como NomeColunaPessoa não é igual a null. Se a condição for verdadeira, execute a ação Parse JSON ou Compose. Se falsa, pule a ação.

Método Melhor Para Complexidade
Ação Parse JSON Colunas de pessoa com valor único quando você precisa de múltiplas propriedades Médio
Compose com expressão Colunas de pessoa com valor único quando você precisa de apenas uma propriedade Baixo
Loop Apply to Each Colunas de pessoa com múltiplos valores Médio

Agora você pode ler uma coluna de pessoa no Power Automate usando Parse JSON, uma expressão ou um loop. Teste cada método com um único item primeiro. Para uma correção mais rápida, use a ação Compose com a expressão first. Se sua coluna permitir múltiplas pessoas, use o loop Apply to Each e colete os nomes de exibição em uma variável de string. Lembre-se de verificar o nome interno da coluna se o fluxo retornar um valor vazio.

ADVERTISEMENT