Merk
Tilgang til denne siden krever autorisasjon. Du kan prøve å logge på eller endre kataloger.
Tilgang til denne siden krever autorisasjon. Du kan prøve å endre kataloger.
Denne artikkelen forklarer 30 klar til bruk uttrykksmønstre for vanlige scenarier i Power Automate skyflyter. Du kan kopiere, tilpasse og bruke disse mønstrene i flytene.
Bemerkning
Disse uttrykkene fungerer i alle Power Automate skyflytlisensnivåer. Finn den fullstendige funksjonsreferansen i arbeidsflytuttrykksfunksjoner.
Tekstoperasjoner
1. Konverter til store eller små bokstaver
Scenario: Normaliser brukerinndata før sammenligning eller lagring.
Uttrykk: toUpper(variables('input')) eller toLower(variables('input'))
Eksempel: toLower('John.Smith@Contoso.COM') returnerer john.smith@contoso.com
Viktig!
toUpper() skiller mellom store og små bokstaver når det brukes i sammenligninger. Hvis du bruker toUpper(A) = B, må du kontrollere at du bruker det på begge sider.
toUpper(A) = B mislykkes hvis B er blandet.
2. Trekk ut delstreng (venstre, høyre, midten)
Scenario: Dra en bestemt del ut av en tekstverdi. Hent de første N-tegnene, siste N eller et område fra midten.
Uttrykk:
- Venstre:
substring(variables('text'), 0, 5) - Høyre:
substring(variables('text'), sub(length(variables('text')), 5), 5) - Midt:
substring(variables('text'), 3, 4)
Eksempel: substring('Invoice-2026-0042', 8, 4) returnerer 2026
Tips
Den andre parameteren er startindeksen (0-basert), den tredje er lengden, ikke sluttindeksen.
substring('ABCDE', 1, 3) returnerer BCD, ikke BC.
3. Erstatt tekst
Scenario: Rydde opp eller transformere tekstverdier. Fjern tegn, bytt skilletegn, løs formatering.
Uttrykk: replace(variables('input'), 'old', 'new')
Eksempel: replace('2026/03/18', '/', '-') returnerer 2026-03-18
Bemerkning
replace() skiller mellom store og små bokstaver.
replace('Hello', 'hello', 'Hi') returnerer Hello uendret. Konverter til et vanlig tilfelle først om nødvendig.
4. Del streng i matrise
Scenario: Bryt en delt verdi (CSV, semikolondelte e-postmeldinger) i individuelle elementer for løkke.
Uttrykk: split(variables('input'), ',')
Eksempel: split('alice@contoso.com,bob@contoso.com,carol@contoso.com', ',') returnerer ["alice@contoso.com","bob@contoso.com","carol@contoso.com"]
Tips
Mellomrom etter at skilletegnet beholdes.
split('a, b, c', ',') returnerer ["a"," b"," c"] med innledende mellomrom. Brukes trim() på hvert element i en Velg-handling etterpå.
5. Kjede sammen med linjeskift (for e-postmeldinger)
Scenario: Bygg en meldingstekst med flere linjer for e-post eller Teams-varsler.
Uttrykk: concat('Line 1', decodeUriComponent('%0A'), 'Line 2')
Example: Bruk decodeUriComponent('%0A') for en ny linje eller decodeUriComponent('%0D%0A') for linjeskift i Windows-stil.
Viktig!
Bruk \n direkte i uttrykk produserer ikke et linjeskift. Det utdata litterale tegn \n.
decodeUriComponent Bruk alltid fremgangsmåten, eller bruk <br> hvis utdataene er HTML.
6. Kontroller om strengen inneholder tekst
Scenario: Rute en flyt basert på om en emnelinje, e-posttekst eller et felt inneholder et nøkkelord.
Uttrykk: contains(toLower(triggerBody()?['subject']), 'urgent')
Eksempel: contains('Project Alpha Review', 'Alpha') returnerer true
Bemerkning
contains() skiller mellom store og små bokstaver. Pakk alltid inn både høystakken og nålen toLower() for å skille mellom store og små bokstaver: contains(toLower(value), toLower(search)).
Dato og klokkeslett
7. Få gjeldende dato/klokkeslett i et bestemt format
Scenario: Stemple et filnavn, en loggoppføring eller en e-post med gjeldende dato og klokkeslett.
Uttrykk: formatDateTime(utcNow(), 'yyyy-MM-dd HH:mm')
Eksempel: Returnerer 2026-03-18 14:30 (UTC). Brukes convertTimeZone() for lokal tid.
Tips
utcNow() er alltid UTC. For lokal tid kjeder du med convertTimeZone(utcNow(), 'UTC', 'Eastern Standard Time', 'yyyy-MM-dd HH:mm').
8. Legge til eller trekke fra dager fra en dato
Scenario: Beregne en forfallsdato, utløpsdato eller påminnelsesdato i forhold til i dag.
Uttrykk: addDays(utcNow(), 7) eller addDays(utcNow(), -30)
Eksempel: Hvis i dag er 2026-03-18, addDays(utcNow(), 7) returnerer 2026-03-25T...Z
Bemerkning
addDays() godtar også brøkverdier, men addHours() eller addMinutes() er klarere for forskyvninger under dagen. Ikke bruk addDays(utcNow(), 0.5) når du mener addHours(utcNow(), 12).
9. Konverter streng til dato (analyse)
Scenario: Et tekstfelt inneholder en dato som 03/18/2026 , og du må bruke det i datofunksjoner.
Uttrykk: parseDateTime(variables('dateString'), 'en-US')
Eksempel: parseDateTime('03/18/2026', 'en-US') returnerer en riktig datetime-verdi.
Viktig!
Uten parameteren for nasjonal innstilling avhenger analyse av flytens regionale innstillinger og kan bytte måned/dag. Angi alltid den nasjonale innstillingen eksplisitt for å unngå 03/04/2026 å bli tolket som 3. april kontra 4. mars.
10. Få ukedag
Scenario: Kjør annen logikk på ukedager kontra helger, eller generer en «mandagsrapport».
Uttrykk: dayOfWeek(utcNow())
Eksempel: Returnerer 0 for søndag, 1 for mandag, ..., 6 for lørdag.
Tips
Søndag er 0, ikke 7. Brukes or(equals(dayOfWeek(...), 0), equals(dayOfWeek(...), 6)) til helgekontroller. En tilstand som dayOfWeek(utcNow()) > 5 fanger lørdag, men savner søndag.
11. Beregne differanse mellom to datoer
Scenario: Fastslå hvor mange dager som er gått mellom en forespørselsdato og en fullføringsdato.
Uttrykk: div(sub(ticks(variables('endDate')), ticks(variables('startDate'))), 864000000000)
Eksempel: Hvis start er 2026-03-01 og slutten er 2026-03-18, returnerer 17.
Bemerkning
Det finnes ingen innebygd dateDiff() funksjon. Du må bruke ticks-tilnærmingen. Divisoren 864000000000 konverterer flått til dager. For timer, bruk 36000000000; for minutter, bruk 600000000.
12. Formater dato for visning
Scenario: Konvertere en datetime-verdi til et menneskelesbart format for e-postmeldinger eller rapporter.
Uttrykk: 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
Viktig!
MM er måneder, mm er minutter.
formatDateTime(value, 'mm/DD/yyyy') produserer 30/18/2026 (minutter og dag) i stedet 03/18/2026for . Bruk dd (små bokstaver) for dag i måneden.
Matriser og samlinger
13. Filtrer en matrise etter betingelse
Scenario: Få bare elementene fra en matrise som samsvarer med et bestemt vilkår.
Uttrykk: Bruk filtermatrisehandlingen med: @item()?['Status'] er lik 'Active'
Eksempel: Inndata [{Name:'A', Status:'Active'}, {Name:'B', Status:'Closed'}] returnerer [{Name:'A', Status:'Active'}]
Bemerkning
Du kan ikke bruke et wherefilteruttrykk i -stil på linje. Bruk filtermatrisehandlingen (ikke et uttrykk). For uttrykksbasert filtrering brukes @equals(item()?['Status'], 'Active') i filtermatrisens avanserte modus.
14. Få første eller siste element fra matrisen
Scenario: Hent den nyeste posten eller det første samsvaret fra en liste.
Uttrykk: first(variables('myArray')) eller last(variables('myArray'))
Example: first(body('Get_items')?['value']) returnerer det første elementet fra en SharePoint spørring.
Tips
first() på en tom matrise returnerer null, ikke en feil. Følg alltid med en nullsjekk: if(empty(variables('myArray')), null, first(variables('myArray'))).
15. Telle elementer i matrise
Scenario: Kontroller hvor mange resultater en spørring returnerte, eller valider at en liste har nok elementer.
Uttrykk: length(variables('myArray'))
Example: length(body('Get_items')?['value']) returnerer antall elementer fra en SharePoint list spørring.
Bemerkning
length() fungerer på både matriser og strenger.
length('hello') returnerer 5 (tegnantall). Kontroller at du sender en matrise, ikke en streng som ser ut som en matrise.
16. Opprett kommadelt streng fra matrise (sammenføyning)
Scenario: Konvertere en liste over navn, e-postmeldinger eller ID-er til én enkelt skillestreng for visning eller et API-kall.
Uttrykk: join(variables('myArray'), ', ')
Eksempel: join(createArray('Alice', 'Bob', 'Carol'), '; ') returnerer Alice; Bob; Carol
Tips
join() fungerer på matriser med strenger. Hvis matrisen inneholder objekter, kan du bruke en Velg-handling først til å trekke ut feltet du vil bruke, og deretter bli med i resultatet.
17. Kontroller om matrisen inneholder en verdi
Scenario: Fastslå om det finnes et bestemt element i en liste før du fortsetter.
Uttrykk: contains(variables('myArray'), 'searchValue')
Eksempel: contains(createArray('North', 'South', 'East', 'West'), 'East') returnerer true
Bemerkning
Når det gjelder matriser med objekter, contains() ser du etter hele objektet, ikke en egenskapsverdi. Hvis du vil kontrollere om et objekt har en samsvarende egenskap, kan du bruke en filtermatrisehandling og deretter kontrollere length() resultatet.
JSON og objekter
18. Analyser JSON-streng
Scenario: En HTTP-handling eller egendefinert kobling returnerer en JSON-streng som du må arbeide med som strukturerte data.
Uttrykk: json(body('HTTP'))
Eksempel: json('{"name":"Alice","age":30}') returnerer et objekt du har tilgang til med ?['name'].
Viktig!
Ikke dobbeltanalyse. Hvis handlingen allerede returnerer analysert JSON (de fleste koblingshandlinger gjør det), fører det til en feil ved å pakke den inn json() igjen. Bruk json() bare på rå strengsvar, ikke på handlingsutdata som allerede er objekter.
19. Få nestet egenskap fra JSON
Scenario: Få tilgang til en verdi dypt inne i et JSON-svar, for eksempel response.data.items[0].name.
Uttrykk: body('HTTP')?['data']?['items']?[0]?['name']
Eksempel: For {"data":{"items":[{"name":"Widget"}]}}returnerer returnerer Widget.
Viktig!
Ikke glem ? (sikker navigasjon).
body('HTTP')['data']['items'] kaster en feil hvis et nivå er null. Bruk ?['key'] alltid til å krysse trygt: hver ? returnerer null i stedet for å mislykkes hvis den overordnede mangler.
20. Opprett JSON-objekt fra verdier
Scenario: Bygg en forespørselstekst for en HTTP-handling fra flytvariabler og dynamisk innhold.
Uttrykk: json(concat('{"name":"', variables('name'), '","status":"', variables('status'), '"}'))
Eksempel: Med navn=Alice og status=Active, returnerer {"name":"Alice","status":"Active"}.
Tips
Hvis en variabel inneholder anførselstegn eller spesialtegn, blir JSON feilformet. For robust konstruksjon kan du bruke en Skriv-handling med createObject('name', variables('name'), 'status', variables('status')) eller bygge den i en Skriv-handling direkte.
21. Konverter objektet til streng
Scenario: Logg et JSON-objekt til et tekstfelt, eller send strukturerte data som en strengparameter.
Uttrykk: string(variables('myObject'))
Eksempel: string(json('{"a":1}')) returnerer {"a":1} som en streng.
Bemerkning
string() på en matrise eller et objekt produserer kompakt JSON (ingen pen utskrift). Det finnes ingen innebygd prettyPrint(). Godta komprimert JSON- eller byggformatert tekst manuelt.
22. Håndter nullverdier eller tomme verdier trygt
Scenario: Forhindre feil når et felt kan være null, tomt eller mangler helt.
Uttrykk: coalesce(triggerBody()?['optionalField'], 'default value')
Eksempel: Hvis optionalField er null, returnerer 'default value'. Hvis den har en verdi, returnerer den verdien.
Viktig!
coalesce() bare håndtak null, ikke tomme strenger. For tomme strenger, kombiner med en betingelse: if(empty(triggerBody()?['field']), 'default', triggerBody()?['field']). Funksjonen empty() returnerer sann for både null og tom streng ''.
Tall og matematikk
23. Runde av et tall
Scenario: Vise en prosentverdi eller valutaverdi med et fast antall desimaler.
Uttrykk: formatNumber(variables('value'), 'N2') (for visning) eller div(mul(variables('value'), 100), 100) (for avkorting)
Eksempel: formatNumber(3.14159, 'N2') returnerer 3.14 som en streng.
Bemerkning
formatNumber() returnerer en streng, ikke et tall. Hvis du trenger å gjøre mer matematikk på den avrundede verdien, analyserer du den tilbake: float(formatNumber(variables('value'), 'N2')).
24. Konverter streng til tall (og tilbake)
Scenario: Et skjema eller en e-post gir deg et tall som tekst, og du må gjøre matematikk med det.
Uttrykk: 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'.
Viktig!
int() på en desimalstreng oppstod en feil. den avkortes ikke. Hvis en variabel kan inneholde en desimal, må du først bruke float() : int(float(variables('input'))). Med konstante verdier som int('3.14'), blir feilen fanget ved lagringstid (InvalidTemplate), ikke ved kjøring.
25. Beregn prosent
Scenario: Vis hvilken brøk én verdi som er av en annen (for eksempel fullføringsfrekvens, utnyttelse).
Uttrykk: mul(div(float(variables('part')), float(variables('total'))), 100)
Eksempel: Med del=75 og total=200, returnerer .37.5
Viktig!
Heltallsdivisjonen avkortes.
div(75, 200) returnerer 0 fordi begge er heltall. Konverter alltid til flyt først: div(float(75), float(200)) returnerer 0.375.
Betingede og logiske
26. Hvis/da/ellers i et uttrykk
Scenario: Returner forskjellige verdier basert på en betingelse, uten å legge til en betingelseshandling i flyten.
Uttrykk: if(equals(variables('status'), 'Approved'), 'Proceed', 'Wait')
Eksempel: Hvis status er Approved, returneres Proceed. Ellers returneres Wait.
Bemerkning
Funksjonen if() støtter >ikke operatorer < direkte. Bruk hjelpefunksjoner: if(greater(variables('count'), 10), 'Over', 'Under'). Tilgjengelige sammenligninger: equals(), , greater(), less(), greaterOrEquals(). lessOrEquals()
27. Coalesce (første verdi som ikke er null)
Scenario: Prøv flere felt og bruk det første som har en verdi, for eksempel foretrukket navn, visningsnavn, e-post.
Uttrykk: coalesce(triggerBody()?['preferredName'], triggerBody()?['displayName'], triggerBody()?['email'], 'Unknown')
Eksempel: Hvis preferredName er null og displayName er 'Alice', returnerer Alice.
Tips
coalesce()
null hopper over, men ikke tomme strenger ''. En tom streng er en gyldig verdi som ikke er null. Kombiner med en hjelper hvis tomme strenger også bør hoppes over: coalesce(if(empty(A), null, A), if(empty(B), null, B), 'default').
28. Kontroller om verdien er null eller tom
Scenario: Valider at et obligatorisk felt har en brukbar verdi før behandling.
Uttrykk: empty(variables('input'))
Eksempel: empty('') returnerer true.
empty(null) returnerer true.
empty('hello') returnerer false.
Viktig!
empty() fungerer ikke på tall.
empty(0) kaster en feil. Bruk eller kontroller typen først for equals(variables('num'), null) tall.
29. Sammenlign datoer (er dato A etter dato B?)
Scenario: Kontroller om en tidsfrist er passert, eller om én hendelse skjedde før en annen.
Uttrykk: greater(ticks(variables('dateA')), ticks(variables('dateB')))
Eksempel: greater(ticks('2026-03-18'), ticks('2026-03-15')) returnerer true (18. mars er etter 15. mars).
Viktig!
Sammenligning av datostrenger direkte med greater('2026-03-18', '2026-03-15') fungerer for ISO-format (YYYY-MM-DD) fordi det sorterer leksikografisk. Men det mislykkes for andre formater.
greater('03/18/2026', '12/01/2025') returnerer false fordi 0<1.
ticks() Bruk alltid til pålitelig datosammenligning.
30. Boolsk logikk (OG/ELLER i forhold)
Scenario: Kombiner flere betingelser i ett enkelt uttrykk, for eksempel godkjent AND-beløp > 1000.
Uttrykk: and(equals(variables('status'), 'Approved'), greater(variables('amount'), 1000))
Eksempel: Returnerer true bare hvis status er lik Approved og beløpet er større enn 1000.
Bemerkning
Du kan ikke kjede and/or med &&/|| syntaks. Bruk alltid funksjonsskjemaet. For kompleks logikk nester du dem: or(and(A, B), and(C, D)). Lesbarheten forringes med dyp nesting. Vurder å bruke en betingelseshandling med flere rader i stedet.
Hurtigreferansekortet
| Oppgave | Uttrykk |
|---|---|
| Store bokstaver | toUpper(value) |
| Små bokstaver | toLower(value) |
| Delstreng | substring(value, start, length) |
| Erstatt | replace(value, old, new) |
| Split | split(value, delimiter) |
| Inneholder (tekst) | contains(toLower(value), toLower(search)) |
| Nå (formatert) | formatDateTime(utcNow(), 'yyyy-MM-dd') |
| Legg til dager | addDays(date, count) |
| Ukedag |
dayOfWeek(date) (0=Søn) |
| Dager mellom | div(sub(ticks(end), ticks(start)), 864000000000) |
| Første element | first(array) |
| Siste element | last(array) |
| Antall | length(array) |
| Bli med | join(array, delimiter) |
| Analyser JSON | json(stringValue) |
| Sikker eiendom | object?['key'] |
| Null tilbakefall | coalesce(value, default) |
| Er tom | empty(value) |
| Hvis/ellers | if(condition, trueVal, falseVal) |
| Sammenligne datoer | greater(ticks(dateA), ticks(dateB)) |
| Int fra streng | int(stringValue) |
| Flyt fra streng | float(stringValue) |
| OG | and(condA, condB) |
| ELLER | or(condA, condB) |
Relatert informasjon
- Feilkode for skyflyt
- Feilsøke skyflytfeil
- Bruke uttrykk i betingelser
- Referanse for arbeidsflytuttrykksfunksjoner
- Power Automate grenser og konfigurasjon
Obs! Forfatteren opprettet denne artikkelen med hjelp fra KUNSTIG INTELLIGENS. Finn ut mer