Você configurou um fluxo do Power Automate para ser executado quando um item do SharePoint é modificado. O fluxo é executado uma vez e imediatamente se aciona novamente. Esse ciclo se repete infinitamente, criando centenas de execuções e potencialmente bloqueando outras automações. A causa raiz é que o fluxo modifica o mesmo item que o acionou, e o Power Automate trata isso como outro evento de modificação.
Este artigo explica por que o loop de gatilho acontece e fornece três soluções específicas que você pode aplicar hoje. Você aprenderá a interromper o loop usando condições de gatilho, modificações de coluna e design de ramificação paralela.
Principais Conclusões: Interrompendo o Loop Infinito de Gatilho no Power Automate
- Condição de gatilho na coluna modificada: Adicione uma condição que verifica se uma coluna específica mudou, não apenas qualquer alteração.
- Modificar uma coluna diferente: Atualize uma coluna separada que o fluxo ignora para evitar reativação.
- Ramificação paralela com atraso: Use uma ramificação paralela para atualizar o item somente após a lógica principal do fluxo ser concluída.
Por que o Loop de Gatilho Ocorre no SharePoint e no Power Automate
Os fluxos do Power Automate que são acionados na modificação de itens usam o gatilho “Quando um item é modificado” do conector do SharePoint. Esse gatilho é disparado sempre que qualquer valor de coluna é alterado no item. Quando seu fluxo atualiza o mesmo item que iniciou o fluxo, o SharePoint envia um novo evento de modificação. O Power Automate vê esse evento e inicia o fluxo novamente. O ciclo se repete porque cada execução do fluxo cria um novo evento de modificação.
Esse comportamento é proposital. O Power Automate não consegue distinguir entre uma edição humana e uma edição feita pelo fluxo. O gatilho é disparado para ambos. Se o seu fluxo modificar o item que o acionou, ele sempre se reativará, a menos que você adicione um mecanismo de controle.
Cenários Comuns que Causam o Loop
O loop ocorre com mais frequência nestas situações:
- Atualizar uma coluna de status após aprovação ou rejeição
- Adicionar um carimbo de data/hora ou nota de auditoria ao item
- Alterar um valor calculado ou resultado de fórmula no item
- Usar a ação “Atualizar item” no mesmo item que acionou o fluxo
Soluções para Interromper o Loop de Gatilho
Você pode interromper o loop usando três métodos. Cada método exige que você modifique a lógica do seu fluxo do Power Automate. Escolha o método que melhor se adapta à sua automação existente.
Método 1: Adicionar uma Condição de Gatilho em uma Coluna Específica
Este método impede que o fluxo seja executado quando apenas determinadas colunas são alteradas. Por exemplo, você quer que o fluxo seja executado apenas quando a coluna “Status” mudar, não quando o próprio fluxo atualizar uma coluna de timestamp.
- Abra seu fluxo no Power Automate
Vá para Power Automate, selecione Meus fluxos e abra o fluxo que está em loop. - Selecione o cartão do gatilho
Clique no gatilho “Quando um item é modificado” para abrir suas configurações. - Adicione uma condição de gatilho
Clique nos três pontos (…) no gatilho e selecione Configurações. Na seção Condições de Gatilho, adicione esta expressão:@equals(triggerBody()?['{ModerationStatus}'], 'Approved')
Substitua{ModerationStatus}pelo nome interno da coluna que você deseja monitorar. Para colunas padrão, useStatusouTitle. Para colunas personalizadas, use o nome interno das configurações da lista do SharePoint. - Teste o fluxo
Salve o fluxo e teste modificando a coluna especificada. O fluxo deve ser executado apenas quando essa coluna mudar. Modificar qualquer outra coluna não deve acionar o fluxo.
Este método funciona melhor quando você sabe qual alteração de coluna deve iniciar o fluxo. Se o seu fluxo modificar a mesma coluna que monitora, o loop ainda ocorrerá. Nesse caso, use o Método 2.
Método 2: Atualizar uma Coluna Diferente que o Fluxo Ignora
Em vez de atualizar a mesma coluna que aciona o fluxo, atualize uma coluna separada. O fluxo não deve monitorar essa coluna separada. Por exemplo, se o seu fluxo é executado quando o “Status” muda, atualize uma coluna chamada “ÚltimoProcessadoPor” com o nome do fluxo. O fluxo ignora alterações em “ÚltimoProcessadoPor” porque ele monitora apenas “Status”.
- Adicione uma coluna dedicada à lista do SharePoint
Na sua lista do SharePoint, adicione uma coluna chamada “ProcessadoPeloFluxo” do tipo Sim/Não. Defina o valor padrão como Não. Esta coluna armazenará se o fluxo processou o item. - Modifique a lógica do seu fluxo
No Power Automate, edite seu fluxo. Após a lógica principal ser concluída, adicione uma ação “Atualizar item” que define a coluna “ProcessadoPeloFluxo” como Sim. Não atualize nenhuma coluna que o fluxo monitora. - Adicione uma condição de gatilho para verificar a nova coluna
No gatilho, adicione uma condição de que a coluna “ProcessadoPeloFluxo” é igual a Não. Use esta expressão:@equals(triggerBody()?['ProcessadoPeloFluxo'], false)
Isso garante que o fluxo seja executado apenas para itens que ainda não foram processados. - Redefina a coluna para novos itens
Quando um usuário modificar o item novamente, redefina a coluna “ProcessadoPeloFluxo” para Não usando um fluxo separado ou atualização manual. Alternativamente, use um fluxo agendado para redefinir a coluna periodicamente.
Método 3: Usar uma Ramificação Paralela com Atraso
Este método adiciona um atraso antes que o fluxo atualize o item. O atraso dá tempo para o Power Automate concluir o gatilho inicial antes que a ação de atualização seja disparada. O loop ainda ocorre, mas apenas uma vez, não infinitamente.
- Adicione uma ramificação paralela
No seu fluxo, após o gatilho, clique no sinal de mais (+) para adicionar uma ramificação paralela. Nomeie a nova ramificação como “Atualizar Item com Atraso”. - Adicione uma ação de atraso
Na nova ramificação, adicione uma ação “Atraso”. Defina o atraso para 30 segundos. Isso dá tempo suficiente para a execução inicial do fluxo terminar. - Adicione a ação de atualização após o atraso
Após o atraso, adicione uma ação “Atualizar item”. Configure-a para atualizar o mesmo item com as alterações necessárias para o seu fluxo. - Teste o fluxo
Salve e teste. O fluxo deve ser executado uma vez e, após 30 segundos, executar novamente devido à atualização. A segunda execução não deve acionar uma terceira porque a atualização ocorre após o atraso e o fluxo já foi concluído.
Este método não elimina o loop completamente. Ele limita o loop a duas execuções. Para a maioria dos cenários, duas execuções são aceitáveis. Se você precisar de uma única execução, use o Método 1 ou 2.
Problemas Comuns Quando o Loop de Gatilho Persiste
O Fluxo é Executado Mais do que o Esperado Mesmo Após Adicionar uma Condição
Se a sua condição de gatilho usar o nome interno da coluna errado, a condição falha e o fluxo é executado para cada modificação. Para encontrar o nome interno correto, vá para as configurações da lista do SharePoint, selecione a coluna e observe o parâmetro de URL Field=. Use esse valor na sua condição. Por exemplo, uma coluna personalizada chamada “Status de Aprovação” pode ter o nome interno Status_x0020_de_x0020_Aprovação.
O Fluxo Atualiza o Item Antes da Condição de Gatilho ser Avaliada
Isso acontece quando você coloca a ação de atualização antes da condição de gatilho. A condição de gatilho deve estar no próprio gatilho, não em uma ação posterior. Revise as configurações do gatilho e certifique-se de que a condição seja aplicada no nível do gatilho. Se você adicionou uma condição dentro do fluxo usando uma ação “Condição”, mova-a para as configurações do gatilho.
Múltiplos Fluxos Modificam o Mesmo Item
Se dois ou mais fluxos modificarem o mesmo item, eles podem causar um loop entre si. Por exemplo, o Fluxo A atualiza o item, o que aciona o Fluxo B, que atualiza o item novamente, acionando o Fluxo A. Para interromper isso, coordene quais colunas cada fluxo monitora. Certifique-se de que dois fluxos não monitorem a mesma coluna que o outro fluxo atualiza.
| Método | Eliminação do Loop | Complexidade do Fluxo |
|---|---|---|
| Condição de gatilho em uma coluna específica | Eliminação total se a coluna monitorada não for atualizada pelo fluxo | Baixa |
| Atualizar uma coluna diferente | Eliminação total | Média |
| Ramificação paralela com atraso | Limita a duas execuções | Média |
Cada método tem suas vantagens e desvantagens. O método da condição de gatilho é o mais simples, mas requer uma seleção cuidadosa da coluna. O método da coluna separada é confiável, mas adiciona uma coluna extra à sua lista. O método do atraso é rápido de implementar, mas não interrompe o loop completamente.
Após aplicar uma dessas soluções, monitore as execuções do seu fluxo por pelo menos 24 horas. Verifique o histórico de execuções no Power Automate para confirmar que o loop parou. Se o loop continuar, verifique se nenhum outro fluxo ou processo está modificando o mesmo item. Você também pode desabilitar o fluxo temporariamente e reabilitá-lo após fazer alterações para garantir um início limpo.
Para cenários avançados, considere usar um fluxo de trabalho de lista do SharePoint em vez do Power Automate. Os fluxos de trabalho do SharePoint Designer têm comportamento de gatilho diferente e não se reativam com suas próprias atualizações. No entanto, a Microsoft recomenda migrar para o Power Automate para novas automações. Os métodos deste artigo ajudarão você a gerenciar o problema do loop até que a Microsoft forneça uma solução nativa.