Carte de bucate expresie pentru fluxuri în cloud

Acest articol explică 30 de modele de expresii gata de utilizat pentru scenarii comune în Power Automate fluxuri în cloud. Puteți să copiați, să adaptați și să utilizați aceste modele în fluxurile dvs.

Notă

Aceste expresii funcționează în toate Power Automate niveluri de licență pentru fluxul de cloud. Găsiți referința completă a funcției în funcțiile expresiei Flux de lucru.

Operațiuni text

1. Conversia în litere mari sau mici

Scenariu: Normalizați intrările utilizatorului înainte de comparație sau stocare.

Expresie: toUpper(variables('input')) sau toLower(variables('input'))

Exemplu: toLower('John.Smith@Contoso.COM') returnează john.smith@contoso.com

Important

toUpper() este sensibil la litere mari și mici atunci când sunt utilizate în comparații. Dacă utilizați toUpper(A) = B, asigurați-vă că o aplicați pe ambele părți. toUpper(A) = B nu reușește dacă B este cazul mixt.

2. Extragere subșir (stânga, dreapta, mijloc)

Scenariu: Extrageți o anumită porțiune dintr-o valoare text. Obțineți primele N caractere, ultimele N sau un interval de la mijloc.

Expresie:

  • Stânga: substring(variables('text'), 0, 5)
  • Dreapta: substring(variables('text'), sub(length(variables('text')), 5), 5)
  • Mijlocul: substring(variables('text'), 3, 4)

Exemplu: substring('Invoice-2026-0042', 8, 4) returnează 2026

Sfat

Al doilea parametru este indexul de început (bazat pe 0), al treilea este lungimea, nu indexul de sfârșit. substring('ABCDE', 1, 3) returnează BCD, nu BC.

3. Înlocuiți textul

Scenariu: Curățați sau transformați valorile text. Eliminați caractere, înlocuiți delimitatorii, remediați formatarea.

Expresie: replace(variables('input'), 'old', 'new')

Exemplu: replace('2026/03/18', '/', '-') returnează 2026-03-18

Notă

replace() este sensibil la litere mari și mici. replace('Hello', 'hello', 'Hi') returnează Hello nemodificat. Efectuați mai întâi conversia la un caz comun, dacă este necesar.

4. Scindarea șirului în matrice

Scenariu: Întrerupeți o valoare delimitată (CSV, e-mailuri separate prin punct și virgulă) în elemente individuale pentru buclă.

Expresie: split(variables('input'), ',')

Exemplu: split('alice@contoso.com,bob@contoso.com,carol@contoso.com', ',') returnează ["alice@contoso.com","bob@contoso.com","carol@contoso.com"]

Sfat

Spațiile de după păstrarea delimitatorului. split('a, b, c', ',') returnează ["a"," b"," c"] cu spații inițiale. Se utilizează trim() pentru fiecare element dintr-o acțiune Selectare după aceea.

5. Concatenați cu sfârșituri de linie (pentru e-mailuri)

Scenariu: Construiți un corp de mesaj cu mai multe linii pentru notificări prin e-mail sau Teams.

Expresie: concat('Line 1', decodeUriComponent('%0A'), 'Line 2')

Example: Utilizați decodeUriComponent('%0A') pentru o linie nouă sau decodeUriComponent('%0D%0A') pentru sfârșiturile de linie în stil de Windows.

Important

Utilizarea \n direct în expresii nu produce un sfârșit de linie. Aceasta generează caractere literale \n. Utilizați decodeUriComponent întotdeauna abordarea sau utilizați <br> dacă rezultatul este HTML.

6. Verificați dacă șirul conține text

Scenariu: Distribuiți un flux pe baza unei linii de subiect, a unui corp de e-mail sau a unui câmp conține un cuvânt cheie.

Expresie: contains(toLower(triggerBody()?['subject']), 'urgent')

Exemplu: contains('Project Alpha Review', 'Alpha') returnează true

Notă

contains() este sensibil la litere mari și mici. Înfășurați întotdeauna atât fânul, cât și acul toLower() pentru potrivirea insensibilă a carcasei: contains(toLower(value), toLower(search)).

Data și ora

7. Obțineți data/ora curentă într-un anumit format

Scenariu: Marcați un nume de fișier, o intrare de jurnal sau un e-mail cu data și ora curentă.

Expresie: formatDateTime(utcNow(), 'yyyy-MM-dd HH:mm')

Exemplu: Returnează 2026-03-18 14:30 (UTC). Se utilizează convertTimeZone() pentru ora locală.

Sfat

utcNow() este întotdeauna UTC. Pentru ora locală, lanț cu convertTimeZone(utcNow(), 'UTC', 'Eastern Standard Time', 'yyyy-MM-dd HH:mm').

8. Adunarea sau scăderea zilelor dintr-o dată

Scenariu: Calculați o dată scadentă, o expirare sau o dată de memento relativ la ziua curentă.

Expresie: addDays(utcNow(), 7) sau addDays(utcNow(), -30)

Exemplu: Dacă astăzi este 2026-03-18, addDays(utcNow(), 7) returnează 2026-03-25T...Z

Notă

addDays() acceptă, de asemenea, valori fracționare, dar addHours() sau addMinutes() sunt mai clare pentru decalajele sub-zi. Nu utilizați addDays(utcNow(), 0.5) atunci când doriți să spuneți addHours(utcNow(), 12).

9. Conversia șirului la dată (analiză)

Scenariu: Un câmp text conține o dată ca 03/18/2026 și trebuie să o utilizați în funcțiile de dată.

Expresie: parseDateTime(variables('dateString'), 'en-US')

Exemplu: parseDateTime('03/18/2026', 'en-US') returnează o valoare datătime corespunzătoare.

Important

Fără parametrul setări regionale, analiza depinde de setările regionale ale fluxului și poate schimba luna/ziua. Specificați întotdeauna setările regionale explicit pentru a evita 03/04/2026 să fie interpretate ca 3 aprilie versus 4 martie.

10. Obțineți ziua din săptămână

Scenariu: Rulați o logică diferită în zilele lucrătoare comparativ cu weekendurile sau generați un "raport luni".

Expresie: dayOfWeek(utcNow())

Exemplu: Returnează 0 pentru duminică, 1 pentru luni, ..., 6 pentru sâmbătă.

Sfat

Duminica este 0, nu 7. Utilizați or(equals(dayOfWeek(...), 0), equals(dayOfWeek(...), 6)) pentru verificările de weekend. O condiție cum ar fi dayOfWeek(utcNow()) > 5 capturi sâmbătă, dar ratează duminică.

11. Calculați diferența dintre două date calendaristice

Scenariu: Determinați câte zile au trecut între o dată de solicitare și o dată de finalizare.

Expresie: div(sub(ticks(variables('endDate')), ticks(variables('startDate'))), 864000000000)

Exemplu: Dacă începutul este 2026-03-01 și sfârșitul este 2026-03-18, returnează 17.

Notă

Nu există nicio funcție predefinită dateDiff() . Trebuie să utilizați abordarea gradațiilor. Divizorul 864000000000 convertește gradațiile în zile. Timp de ore, se utilizează 36000000000; pentru minute, se utilizează 600000000.

12. Formatare dată pentru afișare

Scenariu: Efectuați conversia unei valori dată-oră într-un format ușor de citit de către oameni pentru mesaje de e-mail sau rapoarte.

Expresie: formatDateTime(variables('myDate'), 'MMMM dd, yyyy') sau formatDateTime(variables('myDate'), 'MM/dd/yyyy')

Exemplu: formatDateTime('2026-03-18T14:30:00Z', 'MMMM dd, yyyy') returnează March 18, 2026

Important

MM este luni, mm minute. formatDateTime(value, 'mm/DD/yyyy') produce 30/18/2026 (minute și zile) în loc de 03/18/2026. Utilizați dd (litere mici) pentru ziua lunii.

Matrice și colecții

13. Filtrați o matrice după condiție

Scenariu: Obțineți doar elementele dintr-o matrice care se potrivesc unui anumit criteriu.

Expresie: Utilizați acțiunea matrice Filtru cu: @item()?['Status'] este egală cu 'Active'

Exemplu: Returnări de intrare [{Name:'A', Status:'Active'}, {Name:'B', Status:'Closed'}][{Name:'A', Status:'Active'}]

Notă

Nu puteți utiliza o whereexpresie filtru de stil în linie. Utilizați acțiunea matrice Filtru (nu o expresie). Pentru filtrarea bazată pe expresii, utilizați @equals(item()?['Status'], 'Active') în modul complex al matricei Filter.

14. Obțineți primul sau ultimul element din matrice

Scenariu: Regăsiți cea mai recentă înregistrare sau prima potrivire dintr-o listă.

Expresie: first(variables('myArray')) sau last(variables('myArray'))

Example: first(body('Get_items')?['value']) returnează primul element dintr-o interogare SharePoint.

Sfat

first() pe o matrice goală returnează null, nu o eroare. Urmați întotdeauna cu o verificare nulă: if(empty(variables('myArray')), null, first(variables('myArray'))).

15. Numărați elementele din matrice

Scenariu: Verificați câte rezultate a returnat o interogare sau validați că o listă are suficiente elemente.

Expresie: length(variables('myArray'))

Example: length(body('Get_items')?['value']) returnează numărul de elemente dintr-o interogare SharePoint list.

Notă

length() funcționează atât pentru matrice, cât și pentru șiruri. length('hello') returnează 5 (numărul de caractere). Asigurați-vă că transmiteți o matrice, nu un șir care arată ca o matrice.

16. Creați un șir separat prin virgulă din matrice (unire)

Scenariu: Efectuați conversia unei liste de nume, e-mailuri sau ID-uri într-un singur șir delimitat pentru afișarea sau un apel API.

Expresie: join(variables('myArray'), ', ')

Exemplu: join(createArray('Alice', 'Bob', 'Carol'), '; ') returnează Alice; Bob; Carol

Sfat

join() funcționează pe matrice de șiruri. Dacă matricea conține obiecte, utilizați mai întâi o acțiune Selectare pentru a extrage câmpul dorit, apoi asociați rezultatul.

17. Verificați dacă matricea conține o valoare

Scenariu: Determinați dacă există un anumit element într-o listă înainte de a continua.

Expresie: contains(variables('myArray'), 'searchValue')

Exemplu: contains(createArray('North', 'South', 'East', 'West'), 'East') returnează true

Notă

Pentru matrice de obiecte, contains() caută întregul obiect, nu o valoare de proprietate. Pentru a verifica dacă un obiect are o proprietate corespunzătoare, utilizați o acțiune matrice Filtru, apoi verificați length() rezultatul.

JSON și obiecte

18. Șir JSON analizat

Scenariu: O acțiune HTTP sau un conector particularizat returnează un șir JSON cu care trebuie să lucrați ca date structurate.

Expresie: json(body('HTTP'))

Exemplu: json('{"name":"Alice","age":30}') returnează un obiect cu ?['name']care puteți accesa .

Important

Nu analizați de două ori. Dacă acțiunea returnează deja JSON analizat (majoritatea acțiunilor conectorilor fac), încadrarea ei din json() nou provoacă o eroare. Se utilizează json() numai pentru răspunsurile șir brute, nu și pentru ieșirile de acțiune care sunt deja obiecte.

19. Obțineți proprietatea imbricată de la JSON

Scenariu: Accesați o valoare profundă într-un răspuns JSON, de exemplu, response.data.items[0].name.

Expresie: body('HTTP')?['data']?['items']?[0]?['name']

Exemplu: Pentru {"data":{"items":[{"name":"Widget"}]}}, returnează Widget.

Important

Nu uitați ? (navigare sigură). body('HTTP')['data']['items'] generează o eroare dacă un nivel este nul. Se utilizează ?['key'] întotdeauna pentru a parcurge în siguranță: fiecare ? returnează null în loc să nu reușească dacă părintele lipsește.

20. Creați un obiect JSON din valori

Scenariu: Construiți un corp de solicitare pentru o acțiune HTTP din variabile de flux și conținut dinamic.

Expresie: json(concat('{"name":"', variables('name'), '","status":"', variables('status'), '"}'))

Exemplu: Cu nume=Alice și status=Active, returnează {"name":"Alice","status":"Active"}.

Sfat

Dacă orice variabilă conține ghilimele sau caractere speciale, JSON va fi incorect format. Pentru o construcție robustă, utilizați o acțiune Compunere cu createObject('name', variables('name'), 'status', variables('status')) sau construiți-o direct într-o acțiune Compunere.

21. Conversie obiect în șir

Scenariu: Înregistrați un obiect JSON într-un câmp text sau transmiteți datele structurate ca parametru șir.

Expresie: string(variables('myObject'))

Exemplu: string(json('{"a":1}')) returnează {"a":1} ca șir.

Notă

string() pe o matrice sau un obiect produce JSON compact (fără imprimare destul de). Nu există încorporat prettyPrint(). Acceptați manual un JSON compact sau construiți text formatat.

22. Gestionați valorile nule sau goale în siguranță

Scenariu: Împiedicați erorile atunci când un câmp poate fi nul, gol sau lipsește în întregime.

Expresie: coalesce(triggerBody()?['optionalField'], 'default value')

Exemplu: Dacă optionalField este nul, returnează 'default value'. Dacă are o valoare, returnează acea valoare.

Important

coalesce() doar ghidaje null, nu șiruri goale. Pentru șiruri goale, combinați cu o condiție: if(empty(triggerBody()?['field']), 'default', triggerBody()?['field']). Funcția empty() returnează true atât pentru șirul nul, cât și pentru cel ''gol.

Numere și matematice

23. Rotunjiți un număr

Scenariu: Afișarea unui procent sau a unei valori monetare cu un număr fix de zecimale.

Expresie: formatNumber(variables('value'), 'N2') (pentru afișare) sau div(mul(variables('value'), 100), 100) (pentru trunchiere)

Exemplu: formatNumber(3.14159, 'N2') returnează 3.14 ca șir.

Notă

formatNumber() returnează un șir, nu un număr. Dacă trebuie să efectuați calcule suplimentare despre valoarea rotunjită, analizați-o înapoi: float(formatNumber(variables('value'), 'N2')).

24. Conversia șirului în număr (și înapoi)

Scenariu: Un formular sau un e-mail vă oferă un număr ca text și trebuie să faceți calcule cu acesta.

Expresie: int(variables('textNumber')) sau float(variables('textNumber')) și string(variables('numericValue'))

Exemplu: int('42') returnează 42. float('3.14') returnează 3.14. string(42) returnează '42'.

Important

int() pe un șir zecimal generează o eroare; nu trunchiază. Dacă o variabilă poate conține o zecimală, utilizați float() mai întâi: int(float(variables('input'))). Cu valori constante, cum ar fi int('3.14'), eroarea este prinsă la momentul salvării (InvalidTemplate), nu la momentul rulării.

25. Calculați procentul

Scenariu: Afișați ce fracție este o valoare a altei valori (de exemplu, rată de finalizare, utilizare).

Expresie: mul(div(float(variables('part')), float(variables('total'))), 100)

Exemplu: Cu part=75 și total=200, returnează 37.5.

Important

Împărțire întreagă trunchiază. div(75, 200) returnează 0 deoarece ambele sunt numere întregi. Întotdeauna se face conversia în flotant mai întâi: div(float(75), float(200)) returnează 0.375.

Condițional și logică

26. Dacă/atunci/altfel într-o expresie

Scenariu: Returnează valori diferite pe baza unei condiții, fără a adăuga o acțiune Condiție la flux.

Expresie: if(equals(variables('status'), 'Approved'), 'Proceed', 'Wait')

Exemplu: Dacă starea este Approved, returnează Proceed. În caz contrar, returnează Wait.

Notă

Funcția if() nu acceptă >, < operatori direct. Utilizați funcțiile de ajutor: if(greater(variables('count'), 10), 'Over', 'Under'). Comparații disponibile: equals(), greater(), less(), greaterOrEquals(), , . lessOrEquals()

27. Fuzionare (prima valoare non-nulă)

Scenariu: Încercați mai multe câmpuri și utilizați primul care are o valoare, de exemplu, numele preferat, numele afișat, e-mailul.

Expresie: coalesce(triggerBody()?['preferredName'], triggerBody()?['displayName'], triggerBody()?['email'], 'Unknown')

Exemplu: Dacă preferatName este nul și displayName este 'Alice', returnează Alice.

Sfat

coalesce() ignoră null , dar nu șiruri goale ''. Un șir gol este o valoare nevalidă validă. Combinați cu un ajutor dacă șirurile goale ar trebui să fie ignorate, de asemenea: coalesce(if(empty(A), null, A), if(empty(B), null, B), 'default').

28. Verificați dacă valoarea este nulă sau goală

Scenariu: Validați că un câmp necesar are o valoare utilizabilă înainte de procesare.

Expresie: empty(variables('input'))

Exemplu: empty('') returnează true. empty(null) returnează true. empty('hello') returnează false.

Important

empty() nu funcționează la numere. empty(0) generează o eroare. Pentru numere, utilizați equals(variables('num'), null) sau verificați mai întâi tipul.

29. Comparați datele (este data A după data B?)

Scenariu: Verificați dacă a trecut un termen limită sau dacă un eveniment a avut loc înaintea altuia.

Expresie: greater(ticks(variables('dateA')), ticks(variables('dateB')))

Exemplu: greater(ticks('2026-03-18'), ticks('2026-03-15')) returnează true (18 martie este după 15 martie).

Important

Compararea șirurilor de date direct cu greater('2026-03-18', '2026-03-15') se întâmplă să funcționeze pentru formatul ISO (AAAAA-MM-DD), deoarece sortează lexicografic. Dar nu reușește pentru alte formate. greater('03/18/2026', '12/01/2025')returnează false pentru că0<1 . Se utilizează ticks() întotdeauna pentru comparația de date fiabile.

30. Logică booleană (AND/OR în condiții)

Scenariu: Combinați mai multe condiții într-o singură expresie, de exemplu, valoarea > APROBATĂ AND 1000.

Expresie: and(equals(variables('status'), 'Approved'), greater(variables('amount'), 1000))

Exemplu: Returnează true doar dacă starea este egală Approved cu și valoarea este mai mare decât 1000.

Notă

Nu puteți înlănțui and/or sintaxa.&&/|| Utilizați întotdeauna formularul funcției. Pentru logica complexă, imbricați-le: or(and(A, B), and(C, D)). Lizibilitatea se degradează cu imbricare profundă. Luați în considerare utilizarea unei acțiuni Condiție cu mai multe rânduri.

Cartelă de referințe rapide

Sarcină Expression
Majuscule toUpper(value)
Litere mici toLower(value)
Subșir substring(value, start, length)
Replace replace(value, old, new)
Split split(value, delimiter)
Conține (text) contains(toLower(value), toLower(search))
Acum (formatat) formatDateTime(utcNow(), 'yyyy-MM-dd')
Adunarea zilelor addDays(date, count)
Zi din săptămână dayOfWeek(date) (0=Soare)
Zile între div(sub(ticks(end), ticks(start)), 864000000000)
Primul element first(array)
Ultimul element last(array)
Count length(array)
Asociere join(array, delimiter)
Analiză JSON json(stringValue)
Proprietate sigură object?['key']
Rezervă nulă coalesce(value, default)
Este gol empty(value)
Dacă/altfel if(condition, trueVal, falseVal)
Comparați datele greater(ticks(dateA), ticks(dateB))
Int from string int(stringValue)
Flotant de la șir float(stringValue)
ȘI and(condA, condB)
SAU or(condA, condB)

Notă: Autorul a creat acest articol cu ajutorul AI. Aflați mai multe