Un gruppo di tecnologie e prodotti di Microsoft usati per condividere e gestire contenuti, conoscenze e applicazioni.
La risposta è stata tradotta automaticamente. Di conseguenza, potrebbero esserci errori grammaticali o parole insolite.
Ciao Finamore Remo,
Grazie per la tua risposta e apprezzo molto le informazioni che mi hai fornito.
Apprezzo molto la vostra pazienza mentre esaminiamo la questione. Grazie per aver scelto Microsoft e apprezziamo il tuo supporto.
In base ai dettagli, l'errore che si verifica in Power Automate, "Il flusso potrebbe avere un ciclo circolare", si verifica perché il flusso si attiva alla creazione o alla modifica del file (ad esempio, "Quando un file viene creato o modificato") e quindi aggiorna le proprietà dello stesso file (ad esempio, l'impostazione della colonna ExtractedName). Questo aggiornamento conta come una modifica, che può riattivare il flusso, creando un ciclo infinito. Di seguito, spiegherò perché questo accade, come risolverlo in Power Automate e fornirò un approccio alternativo se Power Automate continua a essere problematico.
Correggere il flusso di Power Automate per evitare cicli infiniti
Per evitare il ciclo circolare, è necessario aggiungere la logica per garantire che il flusso aggiorni il file solo quando necessario, impedendone il riattivazione. Ecco come modificare il flusso di Power Automate:
- Crea la colonna personalizzata:
- Assicurati di avere una colonna di testo (ad esempio, ExtractedName) nella tua libreria SharePoint per archiviare la stringa estratta.
- Modifica il flusso:
- Trigger: mantenere il trigger "Quando un file viene creato o modificato (solo proprietà)" per la raccolta di SharePoint.
- Ottieni le proprietà del file:
- Aggiungere un'azione "Ottieni proprietà file" per recuperare i metadati dell'elemento corrente, tra cui FileLeafRef (Name) e ExtractedName.
- Utilizzare l'ID del trigger.
- Aggiungere una condizione per evitare cicli:
- Aggiungere un'azione "Condizione" per verificare se la colonna ExtractedName contiene già il valore corretto (o non è vuota, a seconda delle esigenze).
- Condizione di esempio:
- Espressione: triggerOutputs()? ['body/ExtractedName'] non è uguale a split(triggerOutputs()?[' body/{Name}'], '_')? [1]
- In questo modo viene verificato se il valore ExtractedName corrente differisce dalla stringa estratta dopo "_".
- In alternativa, se si desidera eseguire l'aggiornamento solo quando ExtractedName è vuoto:
- Espressione: empty(triggerOutputs()?[' body/ExtractedName']) è uguale a true.
- Se Sì (condizione vera):
Aggiungere un'azione "Componi" per estrarre la stringa dopo "_":
split(triggerOutputs()?[' body/{Name}'], '_')? [1]
- Aggiungere un'azione "Aggiorna proprietà file" per impostare ExtractedName sull'output dell'azione "Componi".
- Utilizzare l'ID del trigger per identificare il file
Se no (condizione false):
- Non fare nulla (lasciare vuoto questo ramo) per evitare aggiornamenti non necessari.
Maniglia mancante "_" (opzionale):
- Per evitare errori se il nome di un file manca di "_", aggiungi un'altra condizione prima della divisione:
- Espressione: contains(triggerOutputs()?[' body/{Name}'], '_') è uguale a true.
- Se false, impostare ExtractedName su un valore predefinito (ad esempio, una stringa vuota o l'intero FileLeafRef).
Testare il flusso:
- Carica un nuovo file o modifica il nome di uno esistente.
- Controllare la cronologia di esecuzione del flusso per assicurarsi che venga elaborata correttamente e che aggiorni ExtractedName una sola volta.
- Verificare che le esecuzioni successive non vengano attivate a meno che il nome del file non cambi.
Utilizzare una condizione di trigger in Power Automate
Invece di una condizione all'interno del flusso, è possibile aggiungere una condizione di attivazione per impedire l'esecuzione del flusso quando non è necessario. Questo è più efficiente in quanto impedisce al flusso di attivarsi.
- Imposta il flusso:
- Utilizzare lo stesso trigger: "Quando un file viene creato o modificato (solo proprietà)".
- Aggiungere le azioni "Ottieni proprietà file", "Componi" (con espressione split) e "Aggiorna proprietà file" come descritto nella Soluzione 1.
- Aggiungi una condizione di attivazione:
- Nelle impostazioni di trigger del flusso aggiungere una condizione di trigger per eseguire il flusso solo quando la colonna ExtractedName è vuota o non corrisponde all'output desiderato.
- Esempio di condizione trigger:
@not(uguale a(triggerOutputs()?[' corpo/ExtractedName'], split(triggerOutputs()?[' body/{Name}'], '_')? [1]))
- In questo modo si garantisce che il flusso venga eseguito solo se è necessario aggiornare ExtractedName.
- In alternativa, per eseguire solo quando ExtractedName è vuoto
@empty(triggerOutputs()?[' body/ExtractedName'])
Passaggi per aggiungere la condizione di attivazione:
- In Power Automate, vai alle impostazioni del trigger (fai clic sui tre punti sul trigger e seleziona "Impostazioni").
- Aggiungere l'espressione della condizione di attivazione in "Condizioni di attivazione".
- Salvare e testare il flusso.
Prova:
- Caricare o modificare un file e verificare che ExtractedName venga aggiornato correttamente senza riattivarlo.
Se PSe Automate continua a causare problemi (ad esempio, a causa di autorizzazioni, complessità o restrizioni dell'ambiente), è possibile utilizzare uno script PowerShell per elaborare i file nella libreria di SharePoint. Si tratta di un processo batch una tantum o pianificato piuttosto che di una soluzione automatizzata basata su trigger.
- Prerequisiti:
- Installare il modulo PowerShell PnP (Install-Module -Name PnP.PowerShell).
- Assicurarsi di disporre delle autorizzazioni per eseguire script sul sito di SharePoint.
- Script per estrarre la stringa dopo "_":
Esegui lo script:
- Sostituisci https://yourtenant.sharepoint.com/sites/yoursite con l'URL del tuo sito e YourLibraryName con il nome della tua libreria.
- Eseguire lo script in PowerShell.
- Elabora tutti i file nella libreria, estrae la stringa dopo "_" e aggiorna la colonna ExtractedName.
Attendiamo con ansia la tua risposta. Continueremo ad assisterti in caso di altre domande o in base alle informazioni fornite. Apprezzo sinceramente la vostra pazienza e collaborazione.
Se la mia risposta è utile, contrassegnala come risposta, il che aiuterà sicuramente gli altri nella comunità che hanno domande simili a trovare soluzioni ai loro problemi più velocemente.
Grazie e buona giornata!!
Migliori saluti.
Sting-Ng - Specialista del supporto della community Microsoft.