Nota
L'accés a aquesta pàgina requereix autorització. Podeu provar d'iniciar la sessió o de canviar els directoris.
L'accés a aquesta pàgina requereix autorització. Podeu provar de canviar els directoris.
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) |
Informació relacionada
- Referència al codi d'error del flux de núvols
- Resolució d'errors de flux al núvol
- Ús d'expressions en condicions
- Referència de funcions d'expressió de flux de treball
- Power Automate límits i configuració
Nota: L'autor va crear aquest article amb l'ajuda de la IA. Més informació