Expressie-kookboek voor cloudstromen

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)

Opmerking: de auteur heeft dit artikel gemaakt met hulp van AI. Meer informatie