Llibre de receptes d'expressió per a fluxos de núvols

Aquest article explica 30 patrons d'expressió llestos per a ús per a escenaris comuns en fluxos de núvol de Power Automate. Pots copiar, adaptar i utilitzar aquests patrons en els teus fluxos.

Nota

Aquestes expressions funcionen en tots els nivells de llicència de flux al núvol de Power Automate. Troba la referència completa de la funció a les funcions d'expressió del flux de treball.

Operacions de text

1. Convertir a majúscules o minúscules

Escenari: Normalitzar l'entrada de l'usuari abans de comparar o emmagatzemar.

Expressió: toUpper(variables('input')) o toLower(variables('input'))

Exemple: toLower('John.Smith@Contoso.COM')john.smith@contoso.com

Important

toUpper() és sensible a minúscules minúscules quan s'utilitza en comparacions. Si l'utilitzes toUpper(A) = B, assegura't d'aplicar-lo a ambdós costats. toUpper(A) = B falla si B és un cas mixt.

2. Extracció de subcadena (esquerra, dreta, mitjana)

Escenari: Extreu una part específica d'un valor de text. Agafa els primers N caràcters, l'últim N o un rang des del mig.

Expressió:

  • Esquerra: substring(variables('text'), 0, 5)
  • D'acord: substring(variables('text'), sub(length(variables('text')), 5), 5)
  • Mid: substring(variables('text'), 3, 4)

Exemple: substring('Invoice-2026-0042', 8, 4)2026

Propina

El segon paràmetre és l'índex inicial (basat en 0), el tercer és la longitud, no l'índex final. substring('ABCDE', 1, 3) retorna BCD, no BC.

3. Substituir el text

Escenari: Netejar o transformar els valors del text. Elimina caràcters, canvia delimitadors, arregla el format.

Expressió: replace(variables('input'), 'old', 'new')

Exemple: replace('2026/03/18', '/', '-')2026-03-18

Nota

replace() és sensible a majúscules i maiúscules. replace('Hello', 'hello', 'Hi') Retorns Hello sense canvis. Converteix primer a un cas comú si cal.

4. Dividir la cadena en una matriu

Escenari: Fragmentar un valor delimitat (CSV, correus electrònics separats per punt i coma) en elements individuals per a bucle.

Expressió: split(variables('input'), ',')

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

Propina

Els espais posteriors al delimitador es conserven. split('a, b, c', ',') retorns ["a"," b"," c"] amb espais principals. Utilitza trim() en cada objecte en una acció de Selecció després.

5. Concatenar amb salts de línia (per a correus electrònics)

Escenari: Construeix un cos de missatge de diverses línies per a notificacions de correu electrònic o Teams.

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

Exemple: Utilitza decodeUriComponent('%0A') per a una nova línia o decodeUriComponent('%0D%0A') per a salts de línia d'estil Windows.

Important

Utilitzar \n expressions directament no produeix un salt de línia. Produeix els caràcters \nliterals . Utilitza sempre l'enfocament decodeUriComponent , o si <br> la sortida és HTML.

6. Comprova si la cadena conté text

Escenari: Encamina un flux segons si una línia d'assumpte, cos de correu electrònic o camp conté una paraula clau.

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

Exemple: contains('Project Alpha Review', 'Alpha')true

Nota

contains() és sensible a majúscules i maiúscules. Sempre embolica tant el paller com l'agulla per toLower() a una coincidència insensible a la majúscula i minúscula: contains(toLower(value), toLower(search)).

Data i hora

7. Obtén la data i hora actuals en un format específic

Escenari: Segella un nom de fitxer, una entrada de registre o un correu electrònic amb la data i hora actuals.

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

Exemple: Retorns 2026-03-18 14:30 (UTC). Utilitza convertTimeZone() per a l'hora local.

Propina

utcNow() és sempre l'UTC. Per a l'hora local, encadena amb convertTimeZone(utcNow(), 'UTC', 'Eastern Standard Time', 'yyyy-MM-dd HH:mm').

8. Afegir o restar dies d'una data

Escenari: Calcula una data de venciment, expiració o data de recordatori respecte a avui.

Expressió: addDays(utcNow(), 7) o addDays(utcNow(), -30)

Exemple: Si avui és , 2026-03-18addDays(utcNow(), 7)2026-03-25T...Z

Nota

addDays() també accepta valors fraccionaris, però addHours() o addMinutes() són més clars per a desplaçaments sub-dies. No utilitzis addDays(utcNow(), 0.5) quan vols addHours(utcNow(), 12)dir .

9. Convertir cadena a data (analitzar)

Escenari: Un camp de text conté una data com 03/18/2026 i l'has d'utilitzar en funcions de data.

Expressió: parseDateTime(variables('dateString'), 'en-US')

Exemple: parseDateTime('03/18/2026', 'en-US') un valor de data i hora adequat.

Important

Sense el paràmetre local, l'anàlisi depèn de la configuració regional del flux i pot canviar mes/dia. Especifica sempre la localització explícitament per evitar 03/04/2026 que s'interpreti com el 3 d'abril en comptes del 4 de març.

10. Agafa el dia de la setmana

Escenari: Executar una lògica diferent entre setmana i els caps de setmana, o generar un "informe de dilluns".

Expressió: dayOfWeek(utcNow())

Exemple: Torna 0 diumenge, 1 dilluns, ..., 6 dissabte.

Propina

Diumenge no 0és 7. Utilitza'l or(equals(dayOfWeek(...), 0), equals(dayOfWeek(...), 6)) per a revisions de cap de setmana. Una condició com dayOfWeek(utcNow()) > 5 la que agafa dissabte però es perd diumenge.

11. Calcular la diferència entre dues dates

Escenari: Determinar quants dies han passat entre la data de sol·licitud i la data de finalització.

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

Exemple: Si inici és 2026-03-01 i final és 2026-03-18, retorna 17.

Nota

No hi ha cap funció incorporada dateDiff() . Has d'utilitzar l'enfocament de les paparres. El divisor 864000000000 converteix les tiques en dies. Durant hores, utilitza 36000000000; durant minuts, utilitza 600000000.

12. Data de format per a la visualització

Escenari: Convertir un valor de data-hora a un format llegible per a humans per a correus electrònics o informes.

Expressió: formatDateTime(variables('myDate'), 'MMMM dd, yyyy') o formatDateTime(variables('myDate'), 'MM/dd/yyyy')

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

Important

MM són mesos, mm són minuts. formatDateTime(value, 'mm/DD/yyyy') produeix 30/18/2026 (minuts i dia) en lloc de 03/18/2026. Utilitza dd (minúscula) per al dia del mes.

Matrius i col·leccions

13. Filtrar un array per condició

Escenari: Obtenir només els elements d'un array que compleixin un criteri específic.

Expressió: Utilitza l'acció de l'array de filtres amb: @item()?['Status'] és igual a 'Active'

Exemple: retorns d'entrada[{Name:'A', Status:'Active'}, {Name:'B', Status:'Closed'}][{Name:'A', Status:'Active'}]

Nota

No pots utilitzar una whereexpressió de filtre en línia. Utilitza l'acció Filter array (no una expressió). Per al filtratge basat en expressions, utilitza @equals(item()?['Status'], 'Active') en el mode avançat de la matriu de filtres.

14. Obtenir el primer o l'últim element de l'array

Escenari: Recuperar el registre més recent o la primera coincidència d'una llista.

Expressió: first(variables('myArray')) o last(variables('myArray'))

Exemple: first(body('Get_items')?['value']) retorna el primer element d'una consulta SharePoint.

Propina

first() en un array buit retorna null, no un error. Segueix sempre amb una comprovació de nul·litat: if(empty(variables('myArray')), null, first(variables('myArray'))).

15. Comptar els elements de l'array

Escenari: Comprova quants resultats ha retornat una consulta, o valida que una llista té prou elements.

Expressió: length(variables('myArray'))

Exemple: length(body('Get_items')?['value']) retorna el nombre d'elements d'una consulta SharePoint list.

Nota

length() Funciona tant en matrius com en cordes. length('hello') retorns 5 (recompte de caràcters). Assegura't que estàs passant una matriu, no una cadena que sembla una matriu.

16. Crear cadena separada per coma a partir de l'array (join)

Escenari: Convertir una llista de noms, correus electrònics o IDs en una sola cadena delimitada per a la visualització o una crida a l'API.

Expressió: join(variables('myArray'), ', ')

Exemple: join(createArray('Alice', 'Bob', 'Carol'), '; ')Alice; Bob; Carol

Propina

join() funciona amb matrius de cordes. Si la teva matriu conté objectes, utilitza primer una acció de Selecció per extreure el camp que vols i després uneix-te al resultat.

17. Comprova si l'array conté un valor

Escenari: Determina si existeix un element específic en una llista abans de continuar.

Expressió: contains(variables('myArray'), 'searchValue')

Exemple: contains(createArray('North', 'South', 'East', 'West'), 'East')true

Nota

Per a arrays d'objectes, contains() comprova tot l'objecte, no un valor de propietat. Per comprovar si algun objecte té una propietat coincident, utilitza una acció d'array de filtres i després comprova length() el resultat.

JSON i objectes

18. Analitzar la cadena JSON

Escenari: Una acció HTTP o un connector personalitzat retorna una cadena JSON amb la qual has de treballar com a dades estructurades.

Expressió: json(body('HTTP'))

Exemple: json('{"name":"Alice","age":30}') un objecte al qual pots accedir amb ?['name'].

Important

No facis doble parse. Si l'acció ja retorna JSON analitzat (la majoria d'accions connectors ho fan), tornar-la json() a embolicar causa un error. Utilitza json() només en respostes de cadenes en brut, no en sortides d'acció que ja són objectes.

19. Obtenir propietat anidada de JSON

Escenari: Accedeix a un valor profundament dins d'una resposta JSON, per exemple, response.data.items[0].name.

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

Exemple: Per {"data":{"items":[{"name":"Widget"}]}}a , retorna Widget.

Important

No t'oblidis de la ? (navigació segura). body('HTTP')['data']['items'] llança un error si qualsevol nivell és nul. Utilitza ?['key'] sempre per travessar amb seguretat: cadascun ? retorna nul·la en lloc de fallar si falta el pare o mare.

20. Crear objecte JSON a partir de valors

Escenari: Construeix un cos de sol·licitud per a una acció HTTP a partir de variables de flux i contingut dinàmic.

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

Exemple: Amb nom=Alice i estat=Active, retorna {"name":"Alice","status":"Active"}.

Propina

Si alguna variable conté cometes o caràcters especials, el JSON estarà malformat. Per a una construcció robusta, utilitza una acció Compose amb createObject('name', variables('name'), 'status', variables('status')) o construeix-la directament en una acció Compose.

21. Convertir objecte en cadena

Escenari: Registrar un objecte JSON en un camp de text, o passar dades estructurades com a paràmetre de cadena.

Expressió: string(variables('myObject'))

Exemple: string(json('{"a":1}')){"a":1} com a cadena.

Nota

string() en un array o objecte es produeix JSON compacte (sense pretty-printing). No hi ha cap sistema integrat prettyPrint(). Accepta JSON compacte o construeix text formatat manualment.

22. Gestionar valors nuls o buits de manera segura

Escenari: Evitar errors quan un camp pugui ser nul, buit o completament absent.

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

Exemple: Si és nul·la, optionalField'default value' . Si té un valor, retorna aquest valor.

Important

coalesce() Només manetes null, no cordes buides. Per a cadenes buides, combinem amb una condició: if(empty(triggerBody()?['field']), 'default', triggerBody()?['field']). La empty() funció retorna certa tant per a la cadena ''nul·la com per la buida .

Nombres i matemàtiques

23. Arrodonir un número

Escenari: Mostra un percentatge o valor de moneda amb un nombre fix de decimals.

Expressió: formatNumber(variables('value'), 'N2') (per a display) o div(mul(variables('value'), 100), 100) (per truncament)

Exemple: formatNumber(3.14159, 'N2')3.14 com a cadena.

Nota

formatNumber() retorna una cadena, no un número. Si necessites fer més càlculs sobre el valor arrodonit, analitza-ho: float(formatNumber(variables('value'), 'N2')).

24. Convertir cadena en número (i viceversa)

Escenari: Un formulari o correu electrònic et dóna un número com a text, i has de fer càlculs amb ell.

Expressió: int(variables('textNumber')) o float(variables('textNumber')) i string(variables('numericValue'))

Exemple: int('42') retorna 42. float('3.14') retorna 3.14. string(42) retorna '42'.

Important

int() en una cadena decimal es produeix un error; No trunca. Si una variable pot contenir un decimal, s'utilitza float() primer: int(float(variables('input'))). Amb valors constants com int('3.14'), l'error es detecta en temps de desament (InvalidTemplate), no en temps d'execució.

25. Calcular el percentatge

Escenari: Mostra quina fracció és un valor respecte a un altre (per exemple, taxa de completació, utilització).

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

Exemple: Amb part=75 i total=200, retorna 37.5.

Important

La divisió entera trunca. div(75, 200) retorna 0 perquè ambdós són enters. Converteix sempre a float primer: div(float(75), float(200)) retorna 0.375.

Condicionals i lògica

26. Si/llavors/sinó en una expressió

Escenari: Retorna diferents valors basats en una condició, sense afegir una acció de Condició al flux.

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

Exemple: Si l'estat és , ApprovedProceed . Si no, retorna Wait.

Nota

La if() funció no suporta >operadors de , < directament. Utilitza funcions auxiliars: if(greater(variables('count'), 10), 'Over', 'Under'). Comparacions disponibles: equals(), greater(), less(), greaterOrEquals(), lessOrEquals().

27. Coalescència (primer valor no nul)

Escenari: Prova diversos camps i utilitza el primer que tingui un valor, per exemple, nom preferit, nom visual, correu electrònic.

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

Exemple: Si preferredName és nul i displayName és 'Alice', retorna Alice.

Propina

coalesce() salta null però no les ''cadenes buides. Una cadena buida és un valor no nul vàlid. Combina-ho amb un ajudant si també s'han de saltar cadenes buides: coalesce(if(empty(A), null, A), if(empty(B), null, B), 'default').

28. Comprova si el valor és nul o buit

Escenari: Validar que un camp requerit té un valor útil abans de processar-lo.

Expressió: empty(variables('input'))

Exemple: empty('') retorna true. empty(null) retorna true. empty('hello') retorna false.

Important

empty() No funciona amb números. empty(0) Llança un error. Per als números, utilitza equals(variables('num'), null) o comprova primer el tipus.

29. Comparar dates (la data A és després de la data B?)

Escenari: Comprova si ha passat un termini, o si un esdeveniment ha passat abans que un altre.

Expressió: greater(ticks(variables('dateA')), ticks(variables('dateB')))

Exemple: greater(ticks('2026-03-18'), ticks('2026-03-15')) declaracions true (el 18 de març és després del 15 de març).

Important

Comparar cadenes de dates directament funciona greater('2026-03-18', '2026-03-15') per al format ISO (YYYY-MM-DD) perquè ordena lexicogràficament. Però falla en altres formats. greater('03/18/2026', '12/01/2025') retorna false perquè 0<1. Sempre utilitza ticks() una comparació fiable de dates.

30. Lògica booleana (I/O en condicions)

Escenari: Combinar múltiples condicions en una sola expressió, per exemple, aprovat I import > 1000.

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

Exemple: Retorna només si true és Approved igual i l'import és superior a 1000.

Nota

No es pot encadenar and/or amb &&/|| la sintaxi. Utilitza sempre la forma de la funció. Per a la lògica complexa, encaixa'ls: or(and(A, B), and(C, D)). La llegibilitat es degrada amb el niu profund. Considera utilitzar una acció de Condició amb diverses files en comptes d'això.

Targeta de referència ràpida

Tasca Expression
Majúscules toUpper(value)
Minúscula toLower(value)
Subcadena substring(value, start, length)
Replace replace(value, old, new)
Split split(value, delimiter)
Conté (text) contains(toLower(value), toLower(search))
Ara (formatat) formatDateTime(utcNow(), 'yyyy-MM-dd')
Afegeix dies addDays(date, count)
Dia de la setmana dayOfWeek(date) (0=Sol)
Dies entremig div(sub(ticks(end), ticks(start)), 864000000000)
Primer punt first(array)
Últim punt last(array)
Count length(array)
Uniu-vos join(array, delimiter)
Analitzar JSON json(stringValue)
Propietat segura object?['key']
Fallback nul·la coalesce(value, default)
És buit empty(value)
Si o sinó if(condition, trueVal, falseVal)
Comparar dates greater(ticks(dateA), ticks(dateB))
Int a partir de la cadena int(stringValue)
Flotació des de la corda float(stringValue)
I and(condA, condB)
O BÉ or(condA, condB)

Nota: L'autor va crear aquest article amb l'ajuda de la IA. Més informació