segunda-feira, 29 de março de 2021

Como filtrar projetos pelo ID no Power Automate?

 Olá pessoal –

Conforme eu venho falando há bastante tempo aqui no blog, tenho procurado manter uma longa lista de recursos, funcionalidades e soluções para ajudar os usuários do Project Online na automação de seus processos de gerenciamento de projetos via Power Automate. No post de hoje vou comentar sobre como podemos filtrar um determinado projeto pelo seu ID na ação ‘Send an HTTP request to SharePoint’.  

Uns dias atrás, um cliente precisava realizar uma ação aparentemente simples: quando um novo projeto fosse criado no Project Online, o Power Automate deveria ir até o site de projetos que nasceu junto do projeto e realizar algumas mudanças nos títulos de algumas pastas padrão na biblioteca de documentos compartilhados. O problema é que ele não estava conseguindo filtrar o projeto através do seu ID, usando como parâmetro o gatilho que dispara o flow. Vamos dar uma olhada no flow original que estava sendo criado:


A lógica utilizada era simples:

  1. O gatilho seria disparado com a criação de um novo projeto no Project Online
  2. Em seguida, uma ação de ‘Delay’ foi incluída para paralizar o flow por 5 minutos – o objetivo era dar tempo ao Project Online para que fosse capaz de processar todos os trabalhos relacionados com a criação do novo projeto
  3. Por fim, a instrução era passada à ação ‘Send an HTTP request to SharePoint’ para filtrar o projeto que acabara de ser criado, usando como critério de filtro a coluna ‘Project Id’

E por que o flow não funciona? Bem, enquanto os filtros para a API do Project Online funcionam muito bem quando estamos utilizando termos comuns (por exemplo, poderíamos filtrar pela propriedade ‘ProjectName’ aplicando um filtro simples como ....Projects()?Filter=ProjectName eq 'Implantação do PMO ') infelizmente o mesmo cenário não se aplica quando o campo Project ID está sendo utilizado como parâmetro de filtro. Como o Project Id é um campo interno de identificação única dos projetos, utilizado como chave primária pelo banco de dados do Project Online, ele precisa ser filtrado incluindo o termo GUID (Global Unique Identifier) como prefixo. Dessa maneira, ao invés de utilizar o filtro ....Projects()?Filter=ProjectId eq '[Project Id]', o correto seria configurar o filtro dessa maneira: ....Projects()?Filter=ProjectId eq guid'[Project Id]'


Assim passamos os parâmetros corretos para a string e conseguimos obter as informações necessárias para dar continuidade ao flow.

Espero que ajude 😉.