Bemærk
Adgang til denne side kræver godkendelse. Du kan prøve at logge på eller ændre mapper.
Adgang til denne side kræver godkendelse. Du kan prøve at ændre mapper.
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) |
Relaterede oplysninger
- Reference til fejlkode for cloudflow
- Foretag fejlfinding af fejl i cloudflow
- Brug udtryk i betingelser
- Reference til arbejdsprocesudtryksfunktioner
- Power Automate grænser og konfiguration
Bemærk! Forfatteren oprettede denne artikel med hjælp fra AI. Få mere at vide