Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit artikel worden 30 kant-en-klare expressiepatronen voor algemene scenario's in Power Automate cloudstromen uitgelegd. U kunt deze patronen kopiëren, aanpassen en gebruiken in uw stromen.
Opmerking
Deze expressies werken in alle Power Automate cloudstroomlicentielagen. Zoek de volledige functieverwijzing in werkstroomexpressiefuncties.
Tekstbewerkingen
1. Converteren naar hoofdletters of kleine letters
Scenario: Gebruikersinvoer normaliseren vóór vergelijking of opslag.
Expressie: toUpper(variables('input')) of toLower(variables('input'))
Voorbeeld: toLower('John.Smith@Contoso.COM') retourneert john.smith@contoso.com
Belangrijk
toUpper() is hoofdlettergevoelig wanneer deze wordt gebruikt in vergelijkingen. Als u deze gebruikt toUpper(A) = B, moet u deze op beide zijden toepassen.
toUpper(A) = B mislukt als B een gemengde case is.
2. Subtekenreeks extraheren (links, rechts, midden)
Scenario: Een specifiek gedeelte uit een tekstwaarde halen. Haal de eerste N tekens, laatste N of een bereik van het midden op.
Expressie:
- Links:
substring(variables('text'), 0, 5) - Rechts:
substring(variables('text'), sub(length(variables('text')), 5), 5) - Midden:
substring(variables('text'), 3, 4)
Voorbeeld: substring('Invoice-2026-0042', 8, 4) retourneert 2026
Tip
De tweede parameter is de beginindex (op basis van 0), de derde is de lengte, niet de eindindex.
substring('ABCDE', 1, 3) retourneert BCD, niet BC.
3. Tekst vervangen
Scenario: Tekstwaarden opschonen of transformeren. Tekens verwijderen, scheidingstekens wisselen, opmaak herstellen.
Expressie: replace(variables('input'), 'old', 'new')
Voorbeeld: replace('2026/03/18', '/', '-') retourneert 2026-03-18
Opmerking
replace() is hoofdlettergevoelig.
replace('Hello', 'hello', 'Hi') retourneert Hello ongewijzigd. Converteer deze eerst naar een algemene aanvraag, indien nodig.
4. Tekenreeks splitsen in matrix
Scenario: Een gescheiden waarde (CSV, door puntkomma's gescheiden e-mailberichten) opsplitsen in afzonderlijke items voor lusing.
Expressie: split(variables('input'), ',')
Voorbeeld: split('alice@contoso.com,bob@contoso.com,carol@contoso.com', ',') retourneert ["alice@contoso.com","bob@contoso.com","carol@contoso.com"]
Tip
Spaties na het scheidingsteken blijven behouden.
split('a, b, c', ',') retourneert ["a"," b"," c"] met voorloopspaties. Gebruik trim() daarna voor elk item in een actie Selecteren.
5. Samenvoegen met regeleinden (voor e-mailberichten)
Scenario: Bouw een hoofdtekst met meerdere regels voor e-mail- of Teams-meldingen.
Expressie: concat('Line 1', decodeUriComponent('%0A'), 'Line 2')
Example: Gebruik decodeUriComponent('%0A') voor een nieuwe regel of decodeUriComponent('%0D%0A') voor regeleinden in Windows stijl.
Belangrijk
Als \n u rechtstreeks in expressies gebruikt, wordt er geen regeleinde geproduceerd. De letterlijke tekens \nworden uitgevoerd. Gebruik altijd de decodeUriComponent methode of gebruik <br> deze als de uitvoer HTML is.
6. Controleren of tekenreeks tekst bevat
Scenario: Een stroom routeren op basis van of een onderwerpregel, hoofdtekst of veld een trefwoord bevat.
Expressie: contains(toLower(triggerBody()?['subject']), 'urgent')
Voorbeeld: contains('Project Alpha Review', 'Alpha') retourneert true
Opmerking
contains() is hoofdlettergevoelig. Pak altijd zowel de hooiberg als de naald in toLower() voor hoofdlettergevoelige overeenkomsten: contains(toLower(value), toLower(search)).
Datum en tijd
7. Huidige datum/tijd ophalen in een specifieke indeling
Scenario: Stempel een bestandsnaam, logboekvermelding of e-mail met de huidige datum en tijd.
Expressie: formatDateTime(utcNow(), 'yyyy-MM-dd HH:mm')
Voorbeeld: Retourneert 2026-03-18 14:30 (UTC). Gebruiken convertTimeZone() voor lokale tijd.
Tip
utcNow() is altijd UTC. Voor lokale tijd, keten met convertTimeZone(utcNow(), 'UTC', 'Eastern Standard Time', 'yyyy-MM-dd HH:mm').
8. Dagen optellen of aftrekken van een datum
Scenario: een vervaldatum, vervaldatum of herinneringsdatum berekenen ten opzichte van vandaag.
Expressie: addDays(utcNow(), 7) of addDays(utcNow(), -30)
Voorbeeld: Als dit het volgende is 2026-03-18, addDays(utcNow(), 7) retourneert 2026-03-25T...Z
Opmerking
addDays() accepteert ook breukwaarden, maar addHours() of addMinutes() zijn duidelijker voor subdag-verschuivingen. Gebruik niet addDays(utcNow(), 0.5) als je bedoelt addHours(utcNow(), 12).
9. Tekenreeks converteren naar datum (parseren)
Scenario: Een tekstveld bevat een datum zoals 03/18/2026 en u moet dit gebruiken in datumfuncties.
Expressie: parseDateTime(variables('dateString'), 'en-US')
Voorbeeld: parseDateTime('03/18/2026', 'en-US') retourneert een juiste datum/tijd-waarde.
Belangrijk
Zonder de landinstellingparameter is parseren afhankelijk van de landinstellingen van de stroom en kan de maand/dag worden gewisseld. Geef altijd de landinstelling expliciet op om te voorkomen dat 03/04/2026 deze wordt geïnterpreteerd als 3 april versus 4 maart.
10. Dag van de week ophalen
Scenario: Voer verschillende logica uit op weekdagen versus weekenden of genereer een maandagrapport.
Expressie: dayOfWeek(utcNow())
Voorbeeld: Retourneert 0 voor zondag, 1 maandag, ..., 6 voor zaterdag.
Tip
Zondag is 0, niet 7. Gebruik or(equals(dayOfWeek(...), 0), equals(dayOfWeek(...), 6)) dit voor weekendcontroles. Een voorwaarde zoals dayOfWeek(utcNow()) > 5 vangsten zaterdag, maar mist zondag.
11. Het verschil tussen twee datums berekenen
Scenario: Bepaal hoeveel dagen tussen een aanvraagdatum en een voltooiingsdatum zijn verstreken.
Expressie: div(sub(ticks(variables('endDate')), ticks(variables('startDate'))), 864000000000)
Voorbeeld: Als het begin is 2026-03-01 en het einde is 2026-03-18, wordt geretourneerd 17.
Opmerking
Er is geen ingebouwde dateDiff() functie. U moet de tikkenbenadering gebruiken. De deler 864000000000 converteert tikken naar dagen. Voor uren, gebruik 36000000000; voor minuten, gebruik 600000000.
12. Datum opmaken voor weergave
Scenario: Converteer een datum/tijd-waarde naar een door mensen leesbare indeling voor e-mailberichten of rapporten.
Expressie: formatDateTime(variables('myDate'), 'MMMM dd, yyyy') of formatDateTime(variables('myDate'), 'MM/dd/yyyy')
Voorbeeld: formatDateTime('2026-03-18T14:30:00Z', 'MMMM dd, yyyy') retourneert March 18, 2026
Belangrijk
MM is maanden, mm is minuten.
formatDateTime(value, 'mm/DD/yyyy') produceert 30/18/2026 (minuten en dag) in plaats van 03/18/2026. Gebruik dd (kleine letters) voor de dag van de maand.
Matrices en verzamelingen
13. Een matrix filteren op voorwaarde
Scenario: Alleen de items ophalen uit een matrix die overeenkomen met een specifiek criterium.
Expressie: Gebruik de matrixactie Filter met: @item()?['Status'] is gelijk aan 'Active'
Voorbeeld: Invoer [{Name:'A', Status:'Active'}, {Name:'B', Status:'Closed'}] retourneert [{Name:'A', Status:'Active'}]
Opmerking
U kunt geen inline - wherestijlfilterexpressie gebruiken. Gebruik de actie Matrix filteren (geen expressie). Gebruik voor filteren op basis van expressies @equals(item()?['Status'], 'Active') in de geavanceerde modus van de filtermatrix.
14. Eerste of laatste item ophalen uit matrix
Scenario: haal de meest recente record of de eerste overeenkomst op uit een lijst.
Expressie: first(variables('myArray')) of last(variables('myArray'))
Voorbeeld: first(body('Get_items')?['value']) retourneert het eerste item uit een SharePoint query.
Tip
first() bij een lege matrix wordt geen fout geretourneerd null. Volg altijd met een null-controle: if(empty(variables('myArray')), null, first(variables('myArray'))).
15. Items in matrix tellen
Scenario: Controleer hoeveel resultaten een query heeft geretourneerd of controleer of een lijst voldoende items bevat.
Expressie: length(variables('myArray'))
Example: length(body('Get_items')?['value']) retourneert het aantal items uit een SharePoint list-query.
Opmerking
length() werkt op zowel matrices als tekenreeksen.
length('hello') retourneert 5 (aantal tekens). Zorg ervoor dat u een matrix doorgeeft, niet een tekenreeks die eruitziet als een matrix.
16. Een door komma's gescheiden tekenreeks maken van matrix (join)
Scenario: Converteer een lijst met namen, e-mailberichten of id's naar één tekenreeks met scheidingstekens voor weergave of een API-aanroep.
Expressie: join(variables('myArray'), ', ')
Voorbeeld: join(createArray('Alice', 'Bob', 'Carol'), '; ') retourneert Alice; Bob; Carol
Tip
join() werkt op matrices van tekenreeksen. Als uw matrix objecten bevat, gebruikt u eerst een actie Selecteren om het gewenste veld te extraheren en vervolgens het resultaat samen te voegen.
17. Controleren of matrix een waarde bevat
Scenario: Bepaal of een specifiek item bestaat in een lijst voordat u doorgaat.
Expressie: contains(variables('myArray'), 'searchValue')
Voorbeeld: contains(createArray('North', 'South', 'East', 'West'), 'East') retourneert true
Opmerking
Voor matrices van objecten controleert contains() u op het hele object, niet op een eigenschapswaarde. Als u wilt controleren of een object een overeenkomende eigenschap heeft, gebruikt u een matrixactie Filter en controleert u length() het resultaat.
JSON en objecten
18. JSON-tekenreeks parseren
Scenario: Een HTTP-actie of aangepaste connector retourneert een JSON-tekenreeks waarmee u als gestructureerde gegevens moet werken.
Expressie: json(body('HTTP'))
Voorbeeld: json('{"name":"Alice","age":30}') retourneert een object dat u kunt openen met ?['name'].
Belangrijk
Niet dubbel parseren. Als de actie al geparseerde JSON retourneert (de meeste connectoracties doen), json() wordt er opnieuw een fout geretourneerd. Gebruik json() alleen voor onbewerkte tekenreeksantwoorden, niet voor actie-uitvoer die al objecten zijn.
19. Geneste eigenschap ophalen uit JSON
Scenario: Krijg toegang tot een waarde diep in een JSON-antwoord, response.data.items[0].namebijvoorbeeld.
Expressie: body('HTTP')?['data']?['items']?[0]?['name']
Voorbeeld: Retourneert{"data":{"items":[{"name":"Widget"}]}} bijvoorbeeld Widget.
Belangrijk
Vergeet de (veilige navigatie) niet ? .
body('HTTP')['data']['items'] genereert een fout als een niveau null is. Altijd gebruiken ?['key'] om veilig door te gaan: elk ? retourneert null in plaats van mislukt als het bovenliggende item ontbreekt.
20. JSON-object maken op basis van waarden
Scenario: Bouw een aanvraagbody voor een HTTP-actie op basis van stroomvariabelen en dynamische inhoud.
Expressie: json(concat('{"name":"', variables('name'), '","status":"', variables('status'), '"}'))
Voorbeeld: Met name=Alice en status=Active, retourneert {"name":"Alice","status":"Active"}.
Tip
Als een variabele aanhalingstekens of speciale tekens bevat, wordt de JSON ongeldig. Gebruik voor robuuste constructie een actie Opstellen met createObject('name', variables('name'), 'status', variables('status')) of bouw deze rechtstreeks in een actie Opstellen.
21. Object converteren naar tekenreeks
Scenario: Een JSON-object vastleggen in een tekstveld of gestructureerde gegevens doorgeven als een tekenreeksparameter.
Expressie: string(variables('myObject'))
Voorbeeld: string(json('{"a":1}')) retourneert {"a":1} als een tekenreeks.
Opmerking
string() op een matrix of object produceert compacte JSON (geen mooi afdrukken). Er is geen ingebouwde prettyPrint(). Accepteer compacte JSON of bouw opgemaakte tekst handmatig.
22. Null- of lege waarden veilig verwerken
Scenario: Voorkom fouten wanneer een veld null, leeg of volledig ontbreekt.
Expressie: coalesce(triggerBody()?['optionalField'], 'default value')
Voorbeeld: Als optionalField null is, wordt geretourneerd 'default value'. Als deze een waarde heeft, wordt die waarde geretourneerd.
Belangrijk
coalesce() alleen ingangen null, geen lege tekenreeksen. Voor lege tekenreeksen combineert u met een voorwaarde: if(empty(triggerBody()?['field']), 'default', triggerBody()?['field']). De empty() functie retourneert waar voor zowel null- als lege tekenreeks ''.
Getallen en wiskunde
23. Een getal afronden
Scenario: Een percentage of valutawaarde weergeven met een vast aantal decimalen.
Expressie: formatNumber(variables('value'), 'N2') (voor weergave) of div(mul(variables('value'), 100), 100) (voor afkapping)
Voorbeeld: formatNumber(3.14159, 'N2') retourneert 3.14 als een tekenreeks.
Opmerking
formatNumber() retourneert een tekenreeks, geen getal. Als u verdere berekeningen wilt uitvoeren op de afgeronde waarde, parseert u deze terug: float(formatNumber(variables('value'), 'N2')).
24. Tekenreeks converteren naar getal (en terug)
Scenario: Een formulier of e-mailbericht geeft u een getal als tekst en u moet ermee wiskunde doen.
Expressie: int(variables('textNumber')) of float(variables('textNumber')) en string(variables('numericValue'))
Voorbeeld: int('42') retourneert 42.
float('3.14') retourneert 3.14.
string(42) retourneert '42'.
Belangrijk
int() bij een decimale tekenreeks wordt een fout gegenereerd; Het wordt niet afgekapt. Als een variabele een decimaal kan bevatten, gebruikt u float() eerst: int(float(variables('input'))). Met constante waarden zoals int('3.14'), wordt de fout opgeslagen tijdens het opslaan (InvalidTemplate), niet tijdens runtime.
25. Percentage berekenen
Scenario: Weergeven welke breuk één waarde van een andere waarde is (bijvoorbeeld voltooiingssnelheid, gebruik).
Expressie: mul(div(float(variables('part')), float(variables('total'))), 100)
Voorbeeld: Met part=75 en total=200, retourneert 37.5.
Belangrijk
De deling van gehele getallen wordt afgekapt.
div(75, 200) retourneert 0 omdat beide gehele getallen zijn. Converteer altijd eerst naar float: div(float(75), float(200)) retourneert 0.375.
Voorwaarden en logica
26. If/then/else in een expressie
Scenario: Retourneer verschillende waarden op basis van een voorwaarde, zonder een actie Voorwaarde toe te voegen aan de stroom.
Expressie: if(equals(variables('status'), 'Approved'), 'Proceed', 'Wait')
Voorbeeld: Als de status is Approved, wordt geretourneerd Proceed. Anders wordt Waitgeretourneerd.
Opmerking
De if() functie biedt geen ondersteuning >< voor operators rechtstreeks. Helperfuncties gebruiken: if(greater(variables('count'), 10), 'Over', 'Under'). Beschikbare vergelijkingen: equals(), greater(), less(), , greaterOrEquals(). lessOrEquals()
27. Samenvoegen (eerste niet-null-waarde)
Scenario: Probeer meerdere velden en gebruik het eerste veld met een waarde, bijvoorbeeld voorkeursnaam, weergavenaam, e-mail.
Expressie: coalesce(triggerBody()?['preferredName'], triggerBody()?['displayName'], triggerBody()?['email'], 'Unknown')
Voorbeeld: Als preferredName null is en displayName is 'Alice', retourneert Alice.
Tip
coalesce()
null slaat maar geen lege tekenreeksen ''over. Een lege tekenreeks is een geldige niet-null-waarde. Combineren met een helper als lege tekenreeksen ook moeten worden overgeslagen: coalesce(if(empty(A), null, A), if(empty(B), null, B), 'default').
28. Controleer of de waarde null of leeg is
Scenario: Controleer of een vereist veld een bruikbare waarde heeft voordat deze wordt verwerkt.
Expressie: empty(variables('input'))
Voorbeeld: empty('') retourneert true.
empty(null) retourneert true.
empty('hello') retourneert false.
Belangrijk
empty() werkt niet aan getallen.
empty(0) genereert een fout. Gebruik equals(variables('num'), null) of controleer eerst het type voor getallen.
29. Vergelijk datums (is datum A na datum B?)
Scenario: Controleer of een deadline is verstreken of of er een gebeurtenis is gebeurd vóór een andere.
Expressie: greater(ticks(variables('dateA')), ticks(variables('dateB')))
Voorbeeld: greater(ticks('2026-03-18'), ticks('2026-03-15')) retourneert true (18 maart is na 15 maart).
Belangrijk
Het rechtstreeks vergelijken van datumtekenreeksen met greater('2026-03-18', '2026-03-15') gebeurt om te werken voor ISO-indeling (JJJJ-MM-DD) omdat deze lexicografisch sorteert. Maar het mislukt voor andere indelingen.
greater('03/18/2026', '12/01/2025') retourneert false omdat 0<1. Altijd gebruiken ticks() voor betrouwbare datumvergelijking.
30. Booleaanse logica (EN/OF in voorwaarden)
Scenario: Combineer meerdere voorwaarden in één expressie, bijvoorbeeld goedgekeurd AND-bedrag > 1000.
Expressie: and(equals(variables('status'), 'Approved'), greater(variables('amount'), 1000))
Voorbeeld: retourneert true alleen als de status gelijk Approved is aan en de hoeveelheid groter is dan 1000.
Opmerking
U kunt geen keten and/or maken met &&/|| syntaxis. Gebruik altijd het functieformulier. Nest ze voor complexe logica: or(and(A, B), and(C, D)). Leesbaarheid verslechtert met diepe nesting. U kunt in plaats daarvan een voorwaardeactie gebruiken met meerdere rijen.
Snelzoekkaart
| Taak | Expressie |
|---|---|
| Hoofdletters | toUpper(value) |
| Kleine letters | toLower(value) |
| Subtekenreeks | substring(value, start, length) |
| Vervangen | replace(value, old, new) |
| Splijten | split(value, delimiter) |
| Bevat (tekst) | contains(toLower(value), toLower(search)) |
| Nu (opgemaakt) | formatDateTime(utcNow(), 'yyyy-MM-dd') |
| Dagen toevoegen | addDays(date, count) |
| Dag van de week |
dayOfWeek(date) (0=Zon) |
| Dagen tussen | div(sub(ticks(end), ticks(start)), 864000000000) |
| Eerste item | first(array) |
| Laatste item | last(array) |
| Aantal | length(array) |
| Join | join(array, delimiter) |
| JSON parseren | json(stringValue) |
| Veilige eigenschap | object?['key'] |
| Null-terugval | coalesce(value, default) |
| Is leeg | empty(value) |
| If/else | if(condition, trueVal, falseVal) |
| Datums vergelijken | greater(ticks(dateA), ticks(dateB)) |
| Int uit tekenreeks | int(stringValue) |
| Zweven vanaf tekenreeks | float(stringValue) |
| AND | and(condA, condB) |
| OR | or(condA, condB) |
Verwante gegevens
- Naslaginformatie over foutcodes voor cloudstromen
- Cloudworkflowfouten oplossen
- Expressies gebruiken in voorwaarden
- Naslaginformatie over werkstroomexpressiefuncties
- Power Automate beperkingen en configuratie
Opmerking: de auteur heeft dit artikel gemaakt met hulp van AI. Meer informatie