Udtrykskogebog til cloudflows

I denne artikel forklares 30 brugsklare udtryksmønstre til almindelige scenarier i Power Automate cloudflow. Du kan kopiere, tilpasse og bruge disse mønstre i dine flow.

Note

Disse udtryk fungerer på alle Power Automate cloudflowlicensniveauer. Find den fulde funktionsreference i arbejdsprocesudtryksfunktioner.

Teksthandlinger

1. Konvertér til store eller små bogstaver

Scenarie: Normaliser brugerinput før sammenligning eller lagring.

Udtryk: toUpper(variables('input')) eller toLower(variables('input'))

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

Vigtig

toUpper() forskel på store og små bogstaver, når der bruges i sammenligninger. Hvis du bruger toUpper(A) = B, skal du sørge for at anvende den på begge sider. toUpper(A) = B mislykkes, hvis B er blandet.

2. Udtræk understrengen (venstre, højre, midt)

Scenarie: Træk en bestemt del ud af en tekstværdi. Hent de første N-tegn, sidste N eller et interval fra midten.

Udtryk:

  • Venstre: substring(variables('text'), 0, 5)
  • Højre: substring(variables('text'), sub(length(variables('text')), 5), 5)
  • Midten: substring(variables('text'), 3, 4)

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

Tip!

Den anden parameter er startindekset (0-baseret), det tredje er længden og ikke slutindekset. substring('ABCDE', 1, 3) returnerer BCD, ikke BC.

3. Erstat tekst

Scenarie: Ryd op i eller transformér tekstværdier. Fjern tegn, byt om på afgrænsere, ret formateringen.

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

Eksempel: replace('2026/03/18', '/', '-') returnerer 2026-03-18

Note

replace() er forskel på store og små bogstaver. replace('Hello', 'hello', 'Hi') returnerer Hello uændret. Konvertér til en almindelig sag først, hvis det er nødvendigt.

4. Opdel streng i matrix

Scenarie: Afbryd en afgrænset værdi (CSV, semikolonseparerede mails) i individuelle elementer til løkker.

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

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

Tip!

Mellemrum efter afgrænseren bevares. split('a, b, c', ',') returnerer ["a"," b"," c"] med foranstillede mellemrum. Bruges trim() på hvert element i handlingen Vælg bagefter.

5. Sammenkæd med linjeskift (for mails)

Scenarie: Opret en meddelelsestekst med flere linjer til mail eller Teams-meddelelser.

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

Example: Brug decodeUriComponent('%0A') til en ny linje eller decodeUriComponent('%0D%0A') til Windows linjeskift.

Vigtig

Brug \n direkte i udtryk medfører ikke et linjeskift. Den skriver konstanttegnene \n. Brug altid tilgangen decodeUriComponent , eller brug <br> den, hvis outputtet er HTML.

6. Kontrollér, om strengen indeholder tekst

Scenarie: Distribuer et flow baseret på, om en emnelinje, en mailtekst eller et felt indeholder et nøgleord.

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

Eksempel: contains('Project Alpha Review', 'Alpha') returnerer true

Note

contains() er forskel på store og små bogstaver. Ombryd altid både høstakken og nålen, toLower() så der ikke skelnes mellem store og små bogstaver: contains(toLower(value), toLower(search)).

Dato og klokkeslæt

7. Hent den aktuelle dato/det aktuelle klokkeslæt i et bestemt format

Scenarie: Stemple et filnavn, en logpost eller en mail med den aktuelle dato og det aktuelle klokkeslæt.

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

Eksempel: Returns 2026-03-18 14:30 (UTC). Bruges convertTimeZone() til lokal tid.

Tip!

utcNow() er altid UTC. Kæde med convertTimeZone(utcNow(), 'UTC', 'Eastern Standard Time', 'yyyy-MM-dd HH:mm')for lokal tid.

8. Tilføj eller træk dage fra en dato

Scenarie: Beregn forfaldsdato, udløbsdato eller påmindelsesdato i forhold til dags dato.

Udtryk: addDays(utcNow(), 7) eller addDays(utcNow(), -30)

Eksempel: Hvis i dag er 2026-03-18, addDays(utcNow(), 7) returneres 2026-03-25T...Z

Note

addDays() accepterer også brøkværdier, men addHours() eller addMinutes() er tydeligere for forskydninger under dagen. Brug ikke addDays(utcNow(), 0.5) , når du mener addHours(utcNow(), 12).

9. Konvertér streng til dato (parse)

Scenarie: Et tekstfelt indeholder en dato som 03/18/2026 , og du skal bruge den i datofunktioner.

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

Eksempel: parseDateTime('03/18/2026', 'en-US') returnerer en korrekt datetime-værdi.

Vigtig

Uden landestandardparameteren afhænger fortolkning af flowets internationale indstillinger og kan bytte måned/dag. Angiv altid landestandarden eksplicit for at undgå 03/04/2026 at blive fortolket som 3. april vs. 4. marts.

10. Hent ugedag

Scenarie: Kør anden logik på hverdage i forhold til weekender, eller opret en "mandagsrapport".

Udtryk: dayOfWeek(utcNow())

Eksempel: Returnerer 0 for søndag, 1 mandag, ..., 6 for lørdag.

Tip!

Søndag er 0, ikke 7. Bruges or(equals(dayOfWeek(...), 0), equals(dayOfWeek(...), 6)) til weekendtjek. En tilstand som dayOfWeek(utcNow()) > 5 fangster lørdag, men misser søndag.

11. Beregn forskellen mellem to datoer

Scenarie: Bestem, hvor mange dage der er gået mellem en anmodningsdato og en slutdato.

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

Eksempel: Hvis start er 2026-03-01 , og slutningen er 2026-03-18, returnerer 17.

Note

Der er ingen indbygget dateDiff() funktion. Du skal bruge tilgangen aksemærker. Divisoren 864000000000 konverterer akser til dage. I timer skal du bruge 36000000000; i minutter skal du bruge 600000000.

12. Formatér dato for visning

Scenarie: Konvertér en datetime-værdi til et format, der kan læses af mennesker, for mails eller rapporter.

Udtryk: formatDateTime(variables('myDate'), 'MMMM dd, yyyy') eller formatDateTime(variables('myDate'), 'MM/dd/yyyy')

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

Vigtig

MM er måneder, mm er minutter. formatDateTime(value, 'mm/DD/yyyy') producerer 30/18/2026 (minutter og dag) i stedet for 03/18/2026. Brug dd (små bogstaver) for dag i måneden.

Matrixer og samlinger

13. Filtrer en matrix efter betingelse

Scenarie: Hent kun de elementer fra en matrix, der opfylder et bestemt kriterium.

Udtryk: Brug matrixhandlingen Filter med: @item()?['Status'] er lig med 'Active'

Eksempel: Input [{Name:'A', Status:'Active'}, {Name:'B', Status:'Closed'}] returnerer [{Name:'A', Status:'Active'}]

Note

Du kan ikke bruge et whereindbygget filterudtryk af typen -style. Brug matrixhandlingen Filter (ikke et udtryk). Til udtryksbaseret filtrering skal du bruge @equals(item()?['Status'], 'Active') i den avancerede tilstand for matrixen Filter.

14. Hent første eller sidste element fra matrix

Scenarie: Hent den seneste post eller det første match fra en liste.

Udtryk: first(variables('myArray')) eller last(variables('myArray'))

Example: first(body('Get_items')?['value']) returnerer det første element fra en SharePoint forespørgsel.

Tip!

first() på en tom matrix returnerer null, ikke en fejl. Følg altid med en null-kontrol: if(empty(variables('myArray')), null, first(variables('myArray'))).

15. Tæl elementer i matrix

Scenarie: Kontrollér, hvor mange resultater en forespørgsel returnerede, eller valider, at en liste indeholder nok elementer.

Udtryk: length(variables('myArray'))

Example: length(body('Get_items')?['value']) returnerer antallet af elementer fra en SharePoint list forespørgsel.

Note

length() fungerer på både matrixer og strenge. length('hello') returnerer 5 (antal tegn). Sørg for, at du overfører en matrix, ikke en streng, der ligner en matrix.

16. Opret kommasepareret streng fra matrix (joinforbindelse)

Scenarie: Konvertér en liste over navne, mails eller id'er til en enkelt afgrænset streng til visning eller et API-kald.

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

Eksempel: join(createArray('Alice', 'Bob', 'Carol'), '; ') returnerer Alice; Bob; Carol

Tip!

join() fungerer på matrixer af strenge. Hvis matrixen indeholder objekter, skal du først bruge handlingen Vælg til at udtrække det ønskede felt og derefter joinforbinde resultatet.

17. Kontrollér, om matrixen indeholder en værdi

Scenarie: Find ud af, om der findes et bestemt element på en liste, før du fortsætter.

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

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

Note

I forbindelse med matrixer af objekter contains() skal du søge efter hele objektet og ikke en egenskabsværdi. Hvis du vil kontrollere, om et objekt har en tilsvarende egenskab, skal du bruge en filtermatrixhandling og derefter kontrollere length() resultatet.

JSON og objekter

18. Fortolk JSON-streng

Scenarie: En HTTP-handling eller brugerdefineret connector returnerer en JSON-streng, som du skal arbejde med som strukturerede data.

Udtryk: json(body('HTTP'))

Eksempel: json('{"name":"Alice","age":30}') returnerer et objekt, du kan få adgang til med ?['name'].

Vigtig

Må ikke dobbelt-parse. Hvis handlingen allerede returnerer fortolket JSON (de fleste connectorhandlinger gør), medfører indpakning af den json() igen en fejl. Bruges json() kun på rå strengsvar, ikke på handlingsoutput, der allerede er objekter.

19. Hent indlejret egenskab fra JSON

Scenarie: Få adgang til en værdi dybt inde i et JSON-svar, response.data.items[0].namef.eks. .

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

Eksempel: {"data":{"items":[{"name":"Widget"}]}}Returnerer Widgetfor .

Vigtig

Glem ikke ( ? sikker navigation). body('HTTP')['data']['items'] udløser en fejl, hvis et niveau er null. ?['key'] Brug altid til at gennemgå sikkert: Hver ? returnerer null i stedet for at mislykkes, hvis den overordnede mangler.

20. Opret JSON-objekt ud fra værdier

Scenarie: Opret en brødtekst for en HTTP-handling ud fra flowvariabler og dynamisk indhold.

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

Eksempel: Returnerer med name=Alice og status=Active.{"name":"Alice","status":"Active"}

Tip!

Hvis en variabel indeholder anførselstegn eller specialtegn, vil JSON blive forkert udformet. Hvis du vil have en robust konstruktion, skal du bruge handlingen Meddelelse sammen med createObject('name', variables('name'), 'status', variables('status')) eller bygge den direkte i en meddelelseshandling.

21. Konvertér objekt til streng

Scenarie: Logfør et JSON-objekt i et tekstfelt, eller overfør strukturerede data som en strengparameter.

Udtryk: string(variables('myObject'))

Eksempel: string(json('{"a":1}')) returnerer {"a":1} som en streng.

Note

string() på en matrix eller et objekt producerer kompakt JSON (ingen ret udskrivning). Der er ingen indbygget prettyPrint(). Acceptér kompakt JSON, eller opret formateret tekst manuelt.

22. Håndter null-værdier eller tomme værdier sikkert

Scenarie: Undgå fejl, når et felt kan være null, tomt eller helt mangler.

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

Eksempel: Hvis optionalField er null, returneres 'default value'. Hvis den har en værdi, returneres denne værdi.

Vigtig

coalesce() håndterer nullkun , ikke tomme strenge. I forbindelse med tomme strenge skal du kombinere med en betingelse: if(empty(triggerBody()?['field']), 'default', triggerBody()?['field']). Funktionen empty() returnerer true for både null-strengen og den tomme streng ''.

Tal og matematik

23. Afrund et tal

Scenarie: Vis en procentdel eller valutaværdi med et fast antal decimaler.

Udtryk: formatNumber(variables('value'), 'N2') (til visning) eller div(mul(variables('value'), 100), 100) (til afkortning)

Eksempel: formatNumber(3.14159, 'N2') returnerer 3.14 som en streng.

Note

formatNumber() returnerer en streng, ikke et tal. Hvis du har brug for at foretage yderligere matematik på den afrundede værdi, skal du fortolke den tilbage: float(formatNumber(variables('value'), 'N2')).

24. Konvertér streng til tal (og tilbage)

Scenarie: En formular eller mail giver dig et tal som tekst, og du skal udføre matematik med det.

Udtryk: int(variables('textNumber')) eller float(variables('textNumber')) og string(variables('numericValue'))

Eksempel: int('42') returnerer 42. float('3.14') returnerer 3.14. string(42) returnerer '42'.

Vigtig

int() på en decimalstreng udløser en fejl. det afkortes ikke. Hvis en variabel kan indeholde et decimaltal, skal du først bruge float() : int(float(variables('input'))). Med konstantværdier som , int('3.14')fanges fejlen på lagringstidspunktet (InvalidTemplate), ikke på kørselstidspunktet.

25. Beregn procentdel

Scenarie: Vis, hvilken brøk én værdi er af en anden (f.eks. fuldførelsesfrekvens, udnyttelse).

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

Eksempel: Returnerer med part=75 og total=200.37.5

Vigtig

Division med heltal afkortes. div(75, 200) returnerer 0 , fordi begge er heltal. Konvertér altid til flydende først: div(float(75), float(200)) returnerer 0.375.

Betingelser og logik

26. Hvis/så/ellers i et udtryk

Scenarie: Returner forskellige værdier baseret på en betingelse uden at føje en betingelseshandling til flowet.

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

Eksempel: Hvis status er Approved, returnerer Proceed. Ellers returneres Wait.

Note

Funktionen if() understøtter >ikke operatorerne , < direkte. Brug hjælpefunktioner: if(greater(variables('count'), 10), 'Over', 'Under'). Tilgængelige sammenligninger: equals(), greater(), less(), greaterOrEquals(), lessOrEquals().

27. Coalesce (første værdi, der ikke er null)

Scenarie: Prøv flere felter, og brug den første, der har en værdi, f.eks. foretrukket navn, vist navn, mail.

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

Eksempel: Hvis preferredName er null, og displayName er 'Alice', returnerer Alice.

Tip!

coalesce() springer over, null men ikke tomme strenge ''. En tom streng er en gyldig værdi, der ikke er null. Kombiner med en hjælper, hvis tomme strenge også skal springes over: coalesce(if(empty(A), null, A), if(empty(B), null, B), 'default').

28. Kontrollér, om værdien er null eller tom

Scenarie: Valider, at et obligatorisk felt har en brugbar værdi før behandling.

Udtryk: empty(variables('input'))

Eksempel: empty('') returnerer true. empty(null) returnerer true. empty('hello') returnerer false.

Vigtig

empty() fungerer ikke på tal. empty(0) udløser en fejl. Brug eller kontrollér først typen for tal equals(variables('num'), null) .

29. Sammenlign datoer (er dato A efter dato B?)

Scenarie: Kontrollér, om en deadline er overskredet, eller om én hændelse skete før en anden.

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

Eksempel: greater(ticks('2026-03-18'), ticks('2026-03-15')) returnerer true (18. marts er efter den 15. marts).

Vigtig

Hvis du sammenligner datostrenge direkte med greater('2026-03-18', '2026-03-15') , fungerer det tilfældigvis for ISO-format (YYYY-MM-DD), fordi det sorterer leksikalsk. Men det mislykkes for andre formater. greater('03/18/2026', '12/01/2025') returnerer false , fordi 0<1. ticks() Brug altid til pålidelig datosammenligning.

30. Boolesk logik (AND/OR i betingelser)

Scenarie: Kombiner flere betingelser i et enkelt udtryk, f.eks. godkendt OG beløb > 1000.

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

Eksempel: Returnerer true kun, hvis status er Approved lig med, og beløbet er større end 1000.

Note

Du kan ikke kæde med and/or&&/||syntaks. Brug altid funktionsformularen. Af hensyn til kompleks logik skal du indlejre dem: or(and(A, B), and(C, D)). Læsbarheden forringes med dyb indlejring. Overvej at bruge handlingen Betingelse med flere rækker i stedet.

Oversigtskort

Opgave Udtryk
Store bogstaver toUpper(value)
Små bogstaver toLower(value)
Understreng substring(value, start, length)
Erstat replace(value, old, new)
Opdel split(value, delimiter)
Indeholder (tekst) contains(toLower(value), toLower(search))
Nu (formateret) formatDateTime(utcNow(), 'yyyy-MM-dd')
Tilføj dage addDays(date, count)
Ugedag dayOfWeek(date) (0=Søn)
Dage mellem div(sub(ticks(end), ticks(start)), 864000000000)
Første element first(array)
Sidste element last(array)
Antal length(array)
Deltag join(array, delimiter)
Analyser JSON json(stringValue)
Sikker egenskab object?['key']
Fallback med null coalesce(value, default)
Er tom empty(value)
Hvis/ellers if(condition, trueVal, falseVal)
Sammenlign datoer greater(ticks(dateA), ticks(dateB))
Int fra streng int(stringValue)
Flyd fra streng float(stringValue)
OG and(condA, condB)
ELLER or(condA, condB)

Bemærk! Forfatteren oprettede denne artikel med hjælp fra AI. Få mere at vide