Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo illustra 30 modelli di espressione pronti all'uso per scenari comuni nei flussi cloud Power Automate. È possibile copiare, adattare e usare questi modelli nei flussi.
Nota
Queste espressioni funzionano in tutti i livelli di licenza del flusso cloud Power Automate. Trovare il riferimento completo alla funzione nelle funzioni dell'espressione flusso di lavoro.
Operazioni di testo
1. Convertire in lettere maiuscole o minuscole
Scenario: normalizzare l'input dell'utente prima del confronto o dell'archiviazione.
Espressione: toUpper(variables('input')) o toLower(variables('input'))
Esempio: toLower('John.Smith@Contoso.COM') restituisce john.smith@contoso.com
Important
toUpper() fa distinzione tra maiuscole e minuscole quando viene usato nei confronti. Se si usa toUpper(A) = B, assicurarsi di applicarlo a entrambi i lati.
toUpper(A) = B ha esito negativo se B è un caso misto.
2. Estrarre sottostringa (sinistra, destra, metà)
Scenario: estrarre una parte specifica da un valore di testo. Ottenere i primi N caratteri, l'ultimo N o un intervallo dal centro.
Espressione:
- Sinistra:
substring(variables('text'), 0, 5) - Corretto:
substring(variables('text'), sub(length(variables('text')), 5), 5) - Metà:
substring(variables('text'), 3, 4)
Esempio: substring('Invoice-2026-0042', 8, 4) restituisce 2026
Tip
Il secondo parametro è l'indice iniziale (in base 0), il terzo è la lunghezza, non l'indice finale.
substring('ABCDE', 1, 3) restituisce BCD, non BC.
3. Sostituire il testo
Scenario: pulire o trasformare i valori di testo. Rimuovere caratteri, scambiare delimitatori, correggere la formattazione.
Espressione: replace(variables('input'), 'old', 'new')
Esempio: replace('2026/03/18', '/', '-') restituisce 2026-03-18
Nota
replace() è sensibile alle maiuscole e minuscole.
replace('Hello', 'hello', 'Hi') restituisce Hello invariato. Convertire prima in un caso comune, se necessario.
4. Suddividere la stringa in una matrice
Scenario: suddividere un valore delimitato (CSV, messaggi di posta elettronica separati da punto e virgola) in singoli elementi per il ciclo.
Espressione: split(variables('input'), ',')
Esempio: split('alice@contoso.com,bob@contoso.com,carol@contoso.com', ',') restituisce ["alice@contoso.com","bob@contoso.com","carol@contoso.com"]
Tip
Gli spazi dopo il delimitatore vengono mantenuti.
split('a, b, c', ',') restituisce ["a"," b"," c"] con spazi iniziali. Usare trim() per ogni elemento in un'azione Seleziona in un secondo momento.
5. Concatenare con interruzioni di riga (per i messaggi di posta elettronica)
Scenario: creare un corpo del messaggio su più righe per le notifiche di posta elettronica o Teams.
Espressione: concat('Line 1', decodeUriComponent('%0A'), 'Line 2')
Example: usare decodeUriComponent('%0A') per una riga nuova o decodeUriComponent('%0D%0A') per interruzioni di riga di Windows stile.
Important
L'uso \n diretto nelle espressioni non produce un'interruzione di riga. Restituisce i caratteri letterali \n. Usare sempre l'approccio decodeUriComponent oppure usare <br> se l'output è HTML.
6. Controllare se la stringa contiene testo
Scenario: instradare un flusso in base al fatto che una riga dell'oggetto, un corpo del messaggio di posta elettronica o un campo contenga una parola chiave.
Espressione: contains(toLower(triggerBody()?['subject']), 'urgent')
Esempio: contains('Project Alpha Review', 'Alpha') restituisce true
Nota
contains() è sensibile alle maiuscole e minuscole. Avvolgere sempre sia lo stack di fieno che l'ago per toLower() la corrispondenza senza distinzione tra maiuscole e minuscole: contains(toLower(value), toLower(search)).
Data e ora
7. Ottenere la data/ora corrente in un formato specifico
Scenario: contrassegna un nome file, una voce di log o un messaggio di posta elettronica con la data e l'ora correnti.
Espressione: formatDateTime(utcNow(), 'yyyy-MM-dd HH:mm')
Esempio: restituisce 2026-03-18 14:30 (UTC). Usare per l'ora convertTimeZone() locale.
Tip
utcNow() è sempre UTC. Per l'ora locale, concatenare con convertTimeZone(utcNow(), 'UTC', 'Eastern Standard Time', 'yyyy-MM-dd HH:mm').
8. Aggiungere o sottrarre giorni da una data
Scenario: calcolare una data di scadenza, una scadenza o una data di promemoria rispetto a oggi.
Espressione: addDays(utcNow(), 7) o addDays(utcNow(), -30)
Esempio: se oggi è 2026-03-18, addDays(utcNow(), 7) restituisce 2026-03-25T...Z
Nota
addDays() accetta anche valori frazionari, ma addHours() o addMinutes() sono più chiari per gli offset di sub-day. Non usare addDays(utcNow(), 0.5) quando si intende addHours(utcNow(), 12).
9. Convertire la stringa in data (analisi)
Scenario: un campo di testo contiene una data simile 03/18/2026 a ed è necessario usarla nelle funzioni di data.
Espressione: parseDateTime(variables('dateString'), 'en-US')
Esempio: parseDateTime('03/18/2026', 'en-US') restituisce un valore datetime corretto.
Important
Senza il parametro delle impostazioni locali, l'analisi dipende dalle impostazioni internazionali del flusso e può scambiare mese/giorno. Specificare sempre le impostazioni locali in modo esplicito per evitare 03/04/2026 di essere interpretate come 3 aprile e 4 marzo.
10. Ottenere il giorno della settimana
Scenario: eseguire logica diversa nei giorni feriali e nei fine settimana o generare un "report di lunedì".
Espressione: dayOfWeek(utcNow())
Esempio: restituisce 0 per domenica, 1 per lunedì, ..., 6 per sabato.
Tip
Domenica è 0, non 7. Utilizzare or(equals(dayOfWeek(...), 0), equals(dayOfWeek(...), 6)) per i controlli del fine settimana. Una condizione come dayOfWeek(utcNow()) > 5 prende sabato ma perde domenica.
11. Calcolare la differenza tra due date
Scenario: determinare il numero di giorni trascorsi tra una data di richiesta e una data di completamento.
Espressione: div(sub(ticks(variables('endDate')), ticks(variables('startDate'))), 864000000000)
Esempio: se start è 2026-03-01 e end è 2026-03-18, restituisce 17.
Nota
Non esiste alcuna funzione predefinita dateDiff() . È necessario usare l'approccio tick. Il divisore 864000000000 converte i tick in giorni. Per le ore, usare 36000000000. Per minuti, usare 600000000.
12. Formato data per la visualizzazione
Scenario: convertire un valore datetime in un formato leggibile per i messaggi di posta elettronica o i report.
Espressione: formatDateTime(variables('myDate'), 'MMMM dd, yyyy') o formatDateTime(variables('myDate'), 'MM/dd/yyyy')
Esempio: formatDateTime('2026-03-18T14:30:00Z', 'MMMM dd, yyyy') restituisce March 18, 2026
Important
MM è mesi, mm è minuti.
formatDateTime(value, 'mm/DD/yyyy') produce 30/18/2026 (minuti e giorno) invece di 03/18/2026. Usare dd (minuscolo) per il giorno del mese.
Matrici e raccolte
13. Filtrare una matrice per condizione
Scenario: ottenere solo gli elementi da una matrice che corrispondono a un criterio specifico.
Espressione: usare l'azione Filtra matrice con: @item()?['Status'] è uguale a 'Active'
Esempio: restituisce input [{Name:'A', Status:'Active'}, {Name:'B', Status:'Closed'}][{Name:'A', Status:'Active'}]
Nota
Non è possibile usare un'espressione wheredi filtro di tipo -style inline. Usare l'azione Filtra matrice (non un'espressione). Per il filtro basato su espressioni, usare @equals(item()?['Status'], 'Active') nella modalità avanzata della matrice di filtri.
14. Ottenere il primo o l'ultimo elemento dalla matrice
Scenario: recuperare il record più recente o la prima corrispondenza da un elenco.
Espressione: first(variables('myArray')) o last(variables('myArray'))
Example: first(body('Get_items')?['value']) restituisce il primo elemento da una query di SharePoint.
Tip
first() in una matrice vuota restituisce null, non un errore. Seguire sempre con un controllo Null: if(empty(variables('myArray')), null, first(variables('myArray'))).
15. Contare gli elementi nella matrice
Scenario: controllare il numero di risultati restituiti da una query o verificare che un elenco contenga elementi sufficienti.
Espressione: length(variables('myArray'))
Example: length(body('Get_items')?['value']) restituisce il numero di elementi di una query di SharePoint list.
Nota
length() funziona sia su matrici che su stringhe.
length('hello') restituisce 5 (numero di caratteri). Assicurarsi di passare una matrice, non una stringa simile a una matrice.
16. Creare una stringa delimitata da virgole dalla matrice (join)
Scenario: convertire un elenco di nomi, messaggi di posta elettronica o ID in una singola stringa delimitata per la visualizzazione o una chiamata API.
Espressione: join(variables('myArray'), ', ')
Esempio: join(createArray('Alice', 'Bob', 'Carol'), '; ') restituisce Alice; Bob; Carol
Tip
join() funziona su matrici di stringhe. Se la matrice contiene oggetti, usare prima un'azione Seleziona per estrarre il campo desiderato, quindi unire il risultato.
17. Controllare se la matrice contiene un valore
Scenario: determinare se un elemento specifico esiste in un elenco prima di procedere.
Espressione: contains(variables('myArray'), 'searchValue')
Esempio: contains(createArray('North', 'South', 'East', 'West'), 'East') restituisce true
Nota
Per le matrici di oggetti, contains() controlla l'intero oggetto, non un valore della proprietà. Per verificare se un oggetto ha una proprietà corrispondente, usare un'azione Filtra matrice e quindi controllare length() il risultato.
JSON e oggetti
18. Analizzare la stringa JSON
Scenario: un'azione HTTP o un connettore personalizzato restituisce una stringa JSON che è necessario usare come dati strutturati.
Espressione: json(body('HTTP'))
Esempio: json('{"name":"Alice","age":30}') restituisce un oggetto a cui è possibile accedere con ?['name'].
Important
Non eseguire l'analisi doppia. Se l'azione restituisce già json analizzato (la maggior parte delle azioni del connettore è eseguita), il wrapping viene json() generato di nuovo un errore. Usare json() solo nelle risposte di stringa non elaborate, non sugli output delle azioni già oggetti.
19. Ottenere la proprietà annidata da JSON
Scenario: accedere a un valore all'interno di una risposta JSON, response.data.items[0].namead esempio .
Espressione: body('HTTP')?['data']?['items']?[0]?['name']
Esempio: per {"data":{"items":[{"name":"Widget"}]}}, restituisce Widget.
Important
Non dimenticare ( ? navigazione sicura).
body('HTTP')['data']['items'] genera un errore se un livello è Null. Usare ?['key'] sempre per attraversare in modo sicuro: ogni ? restituisce Null invece di non riuscire se l'elemento padre non è presente.
20. Creare un oggetto JSON dai valori
Scenario: creare un corpo della richiesta per un'azione HTTP da variabili di flusso e contenuto dinamico.
Espressione: json(concat('{"name":"', variables('name'), '","status":"', variables('status'), '"}'))
Esempio: con name=Alice e status=Active, restituisce {"name":"Alice","status":"Active"}.
Tip
Se una variabile contiene virgolette o caratteri speciali, il formato JSON non sarà corretto. Per una costruzione affidabile, usare un'azione Compose con createObject('name', variables('name'), 'status', variables('status')) o compilarla direttamente in un'azione Compose.
21. Convertire l'oggetto in stringa
Scenario: registrare un oggetto JSON in un campo di testo o passare dati strutturati come parametro stringa.
Espressione: string(variables('myObject'))
Esempio: string(json('{"a":1}')) restituisce {"a":1} come stringa.
Nota
string() in una matrice o in un oggetto produce JSON compatto (nessuna bella stampa). Non è presente alcun elemento predefinito prettyPrint(). Accettare il testo in formato JSON compatto o compilarlo manualmente.
22. Gestire valori Null o vuoti in modo sicuro
Scenario: impedire errori quando un campo potrebbe essere null, vuoto o mancante completamente.
Espressione: coalesce(triggerBody()?['optionalField'], 'default value')
Esempio: se optionalField è Null, restituisce 'default value'. Se ha un valore, restituisce tale valore.
Important
coalesce() gestisce nullsolo le stringhe , non vuote. Per le stringhe vuote, combinare con una condizione: if(empty(triggerBody()?['field']), 'default', triggerBody()?['field']). La empty() funzione restituisce true sia per la stringa null che per la stringa ''vuota.
Numeri e matematica
23. Arrotondamento di un numero
Scenario: visualizzare una percentuale o un valore di valuta con un numero fisso di cifre decimali.
Espressione: formatNumber(variables('value'), 'N2') (per la visualizzazione) o div(mul(variables('value'), 100), 100) (per il troncamento)
Esempio: formatNumber(3.14159, 'N2') restituisce 3.14 come stringa.
Nota
formatNumber() restituisce una stringa, non un numero. Se è necessario eseguire altre operazioni matematiche sul valore arrotondato, analizzarlo di nuovo: float(formatNumber(variables('value'), 'N2')).
24. Convertire la stringa in numero (e indietro)
Scenario: un modulo o un messaggio di posta elettronica fornisce un numero come testo ed è necessario eseguire calcoli matematici.
Espressione: int(variables('textNumber')) o float(variables('textNumber')) e string(variables('numericValue'))
Esempio: int('42') restituisce 42.
float('3.14') restituisce 3.14.
string(42) restituisce '42'.
Important
int() in una stringa decimale genera un errore; non tronca. Se una variabile può contenere un separatore decimale, usare float() prima: int(float(variables('input'))). Con valori costanti come int('3.14'), l'errore viene rilevato in fase di salvataggio (InvalidTemplate), non in fase di esecuzione.
25. Calcolare la percentuale
Scenario: visualizzare la frazione di un valore di un'altra (ad esempio, frequenza di completamento, utilizzo).
Espressione: mul(div(float(variables('part')), float(variables('total'))), 100)
Esempio: con part=75 e total=200, restituisce 37.5.
Important
La divisione di interi viene troncata.
div(75, 200) restituisce 0 perché entrambi sono numeri interi. Convertire sempre in float first: div(float(75), float(200)) restituisce 0.375.
Condizionali e logica
26. If/then/else in un'espressione
Scenario: restituisce valori diversi in base a una condizione, senza aggiungere un'azione Condizione al flusso.
Espressione: if(equals(variables('status'), 'Approved'), 'Proceed', 'Wait')
Esempio: se lo stato è Approved, restituisce Proceed. In caso contrario restituisce Wait.
Nota
La if() funzione non supporta >direttamente gli operatori , < Usare le funzioni helper: if(greater(variables('count'), 10), 'Over', 'Under'). Confronti disponibili: equals(), greater(), less(), greaterOrEquals(), lessOrEquals().
27. Coalesce (primo valore non Null)
Scenario: provare più campi e usare il primo con un valore, ad esempio il nome preferito, il nome visualizzato, il messaggio di posta elettronica.
Espressione: coalesce(triggerBody()?['preferredName'], triggerBody()?['displayName'], triggerBody()?['email'], 'Unknown')
Esempio: se preferredName è null e displayName è 'Alice', restituisce Alice.
Tip
coalesce() ignora ma null non stringhe vuote ''. Una stringa vuota è un valore non Null valido. Combinare con un helper se è necessario ignorare anche le stringhe vuote: coalesce(if(empty(A), null, A), if(empty(B), null, B), 'default').
28. Controllare se il valore è null o vuoto
Scenario: verificare che un campo obbligatorio abbia un valore utilizzabile prima dell'elaborazione.
Espressione: empty(variables('input'))
Esempio: empty('') restituisce true.
empty(null) restituisce true.
empty('hello') restituisce false.
Important
empty() non funziona sui numeri.
empty(0) genera un errore. Per i numeri, usare equals(variables('num'), null) o controllare prima il tipo.
29. Confrontare le date (è la data A dopo la data B?)
Scenario: controllare se è stata superata una scadenza o se si è verificato un evento prima di un altro.
Espressione: greater(ticks(variables('dateA')), ticks(variables('dateB')))
Esempio: greater(ticks('2026-03-18'), ticks('2026-03-15')) restituisce true (18 marzo è dopo il 15 marzo).
Important
Il confronto delle stringhe di data direttamente con greater('2026-03-18', '2026-03-15') funziona per il formato ISO (AAAA-MM-DD) perché ordina in modo lessicografico. Ma ha esito negativo per altri formati.
greater('03/18/2026', '12/01/2025') restituisce false perché 0<1. Usare ticks() sempre per un confronto di date affidabile.
30. Logica booleana (AND/OR in condizioni)
Scenario: combinare più condizioni in una singola espressione, ad esempio, l'importo > AND approvato 1000.
Espressione: and(equals(variables('status'), 'Approved'), greater(variables('amount'), 1000))
Esempio: restituisce true solo se lo stato è uguale Approved a e la quantità è maggiore di 1000.
Nota
Non è possibile concatenare and/or con &&/|| la sintassi. Usare sempre il modulo della funzione. Per la logica complessa, annidarli: or(and(A, B), and(C, D)). La leggibilità degrada con un annidamento profondo. Prendere in considerazione l'uso di un'azione Condizione con più righe.
Scheda di riferimento rapido
| Attività | Espressione |
|---|---|
| Maiuscole | toUpper(value) |
| Minuscole | toLower(value) |
| Sottostringa | substring(value, start, length) |
| Sostituisci | replace(value, old, new) |
| Divisa | split(value, delimiter) |
| Contiene (testo) | contains(toLower(value), toLower(search)) |
| Ora (formattato) | formatDateTime(utcNow(), 'yyyy-MM-dd') |
| Aggiungere giorni | addDays(date, count) |
| Giorno della settimana |
dayOfWeek(date) (0=Sole) |
| Giorni tra | div(sub(ticks(end), ticks(start)), 864000000000) |
| Primo elemento | first(array) |
| Ultimo elemento | last(array) |
| Conteggio | length(array) |
| Unisci. | join(array, delimiter) |
| Analizzare JSON | json(stringValue) |
| Safe - proprietà | object?['key'] |
| Fallback Null | coalesce(value, default) |
| È vuoto | empty(value) |
| If/else | if(condition, trueVal, falseVal) |
| Confrontare le date | greater(ticks(dateA), ticks(dateB)) |
| Int dalla stringa | int(stringValue) |
| Float from string | float(stringValue) |
| AND | and(condA, condB) |
| OPPURE | or(condA, condB) |
Informazioni correlate
- Informazioni di riferimento sul codice di errore del flusso cloud
- Risolvere gli errori del flusso nel cloud
- Usare espressioni in condizioni
- Informazioni di riferimento sulle funzioni delle espressioni del flusso di lavoro
- Power Automate limiti e configurazione
Nota: l'autore ha creato questo articolo con assistenza per l'intelligenza artificiale. Altre informazioni