Uttrykkskokebok for skyflyter

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)

Obs! Forfatteren opprettet denne artikkelen med hjelp fra KUNSTIG INTELLIGENS. Finn ut mer