Uttryckskokbok för molnflöden

I den här artikeln beskrivs 30 färdiga uttrycksmönster för vanliga scenarier i Power Automate molnflöden. Du kan kopiera, anpassa och använda dessa mönster i dina flöden.

Anmärkning

Dessa uttryck fungerar på alla licensnivåer för Power Automate molnflöde. Hitta den fullständiga funktionsreferensen i Funktionerna för arbetsflödesuttryck.

Textåtgärder

1. Konvertera till versaler eller gemener

Scenario: Normalisera användarindata före jämförelse eller lagring.

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

Exempel: toLower('John.Smith@Contoso.COM') returnerar john.smith@contoso.com

Important

toUpper() är skiftlägeskänslig när den används i jämförelser. Om du använder toUpper(A) = Bkontrollerar du att du använder den på båda sidor. toUpper(A) = B misslyckas om B är blandat fall.

2. Extrahera delsträng (vänster, höger, mitten)

Scenario: Dra ut en viss del av ett textvärde. Hämta de första N tecknen, sista N eller ett intervall från mitten.

Uttryck:

  • Vänster: substring(variables('text'), 0, 5)
  • Höger: substring(variables('text'), sub(length(variables('text')), 5), 5)
  • Mitten: substring(variables('text'), 3, 4)

Exempel: substring('Invoice-2026-0042', 8, 4) returnerar 2026

Tips/Råd

Den andra parametern är startindexet (0-baserat), den tredje är längden, inte slutindexet. substring('ABCDE', 1, 3) returnerar BCD, inte BC.

3. Ersätt text

Scenario: Rensa eller transformera textvärden. Ta bort tecken, växla avgränsare, korrigera formatering.

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

Exempel: replace('2026/03/18', '/', '-') returnerar 2026-03-18

Anmärkning

replace() är skiftlägeskänsligt. replace('Hello', 'hello', 'Hi') returnerar Hello oförändrat. Konvertera till ett vanligt ärende först om det behövs.

4. Dela upp strängen i matrisen

Scenario: Dela upp ett avgränsat värde (CSV, semikolonavgränsade e-postmeddelanden) i enskilda objekt för loopning.

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

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

Tips/Råd

Blanksteg efter avgränsare bevaras. split('a, b, c', ',') returnerar ["a"," b"," c"] med inledande blanksteg. Använd trim() på varje objekt i en Select-åtgärd efteråt.

5. Sammanfoga med radbrytningar (för e-postmeddelanden)

Scenario: Skapa en brödtext med flera rader för e-postmeddelanden eller Teams-meddelanden.

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

Example: Använd decodeUriComponent('%0A') för en ny rad eller decodeUriComponent('%0D%0A') för radbrytningar i Windows stil.

Important

Om du använder \n direkt i uttryck genereras ingen radbrytning. Den matar ut literaltecken \n. Använd alltid metoden decodeUriComponent eller använd <br> om utdata är HTML.

6. Kontrollera om strängen innehåller text

Scenario: Dirigera ett flöde baserat på om en ämnesrad, e-posttext eller ett fält innehåller ett nyckelord.

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

Exempel: contains('Project Alpha Review', 'Alpha') returnerar true

Anmärkning

contains() är skiftlägeskänsligt. Slå alltid in både höstacken och nålen i toLower() för skiftlägesokänslig matchning: contains(toLower(value), toLower(search)).

Datum och tid

7. Hämta aktuellt datum/tid i ett visst format

Scenario: Stämpla ett filnamn, en loggpost eller ett e-postmeddelande med aktuellt datum och tid.

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

Exempel: Returnerar 2026-03-18 14:30 (UTC). Använd convertTimeZone() för lokal tid.

Tips/Råd

utcNow() är alltid UTC. För lokal tid, kedja med convertTimeZone(utcNow(), 'UTC', 'Eastern Standard Time', 'yyyy-MM-dd HH:mm').

8. Lägg till eller subtrahera dagar från ett datum

Scenario: Beräkna ett förfallodatum, förfallodatum eller påminnelsedatum i förhållande till idag.

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

Exempel: Om i dag är 2026-03-18, addDays(utcNow(), 7) returnerar 2026-03-25T...Z

Anmärkning

addDays() accepterar också bråkvärden, men addHours() eller addMinutes() är tydligare för förskjutningar under dagen. Använd inte addDays(utcNow(), 0.5) när du menar addHours(utcNow(), 12).

9. Konvertera strängen till datum (parsa)

Scenario: Ett textfält innehåller ett datum som 03/18/2026 och du måste använda det i datumfunktioner.

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

Exempel: parseDateTime('03/18/2026', 'en-US') returnerar ett korrekt datetime-värde.

Important

Utan språkparametern beror parsning på flödets regionala inställningar och kan växla månad/dag. Ange alltid nationella inställningar explicit för att undvika 03/04/2026 att tolkas som 3 april jämfört med 4 mars.

10. Hämta veckodag

Scenario: Kör annan logik på vardagar jämfört med helger eller generera en "måndagsrapport".

Uttryck: dayOfWeek(utcNow())

Exempel: Returnerar 0 för söndag, 1 för måndag, ..., 6 för lördag.

Tips/Råd

Söndag är 0, inte 7. Används or(equals(dayOfWeek(...), 0), equals(dayOfWeek(...), 6)) för helgkontroller. Ett tillstånd som dayOfWeek(utcNow()) > 5 fångar lördag men missar söndag.

11. Beräkna skillnaden mellan två datum

Scenario: Avgör hur många dagar som förflutit mellan ett datum för begäran och ett slutdatum.

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

Exempel: Om start är 2026-03-01 och slutet är 2026-03-18returnerar .17

Anmärkning

Det finns ingen inbyggd dateDiff() funktion. Du måste använda fästingmetoden. Divisorn 864000000000 konverterar tick till dagar. I timmar använder du 36000000000; för minuter använder du 600000000.

12. Formatera datum för visning

Scenario: Konvertera ett datetime-värde till ett läsbart format för e-postmeddelanden eller rapporter.

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

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

Important

MM är månader, mm är minuter. formatDateTime(value, 'mm/DD/yyyy') producerar 30/18/2026 (minuter och dag) i stället 03/18/2026för . Använd dd (gemener) för dag i månaden.

Matriser och samlingar

13. Filtrera en matris efter villkor

Scenario: Hämta endast objekt från en matris som matchar ett specifikt kriterium.

Uttryck: Använd åtgärden Filtermatris med: @item()?['Status'] är lika med 'Active'

Exempel: Indata [{Name:'A', Status:'Active'}, {Name:'B', Status:'Closed'}] returnerar [{Name:'A', Status:'Active'}]

Anmärkning

Du kan inte använda ett wherefilteruttryck i -style infogat. Använd åtgärden Filtermatris (inte ett uttryck). För uttrycksbaserad filtrering använder du @equals(item()?['Status'], 'Active') i filtermatrisens avancerade läge.

14. Hämta det första eller sista objektet från matrisen

Scenario: Hämta den senaste posten eller den första matchningen från en lista.

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

Example: first(body('Get_items')?['value']) returnerar det första objektet från en SharePoint fråga.

Tips/Råd

first() i en tom matris returnerar null, inte ett fel. Följ alltid med en null-kontroll: if(empty(variables('myArray')), null, first(variables('myArray'))).

15. Räkna objekt i matrisen

Scenario: Kontrollera hur många resultat en fråga returnerade eller kontrollera att en lista har tillräckligt med objekt.

Uttryck: length(variables('myArray'))

Example: length(body('Get_items')?['value']) returnerar antalet objekt från en SharePoint list fråga.

Anmärkning

length() fungerar på både matriser och strängar. length('hello') returnerar 5 (teckenantal). Kontrollera att du skickar en matris, inte en sträng som ser ut som en matris.

16. Skapa kommaavgränsad sträng från matris (koppling)

Scenario: Konvertera en lista med namn, e-postmeddelanden eller ID:n till en enda avgränsad sträng för visning eller ett API-anrop.

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

Exempel: join(createArray('Alice', 'Bob', 'Carol'), '; ') returnerar Alice; Bob; Carol

Tips/Råd

join() fungerar på matriser med strängar. Om matrisen innehåller objekt använder du först en Select-åtgärd för att extrahera det fält du vill använda och ansluter sedan resultatet.

17. Kontrollera om matrisen innehåller ett värde

Scenario: Avgör om det finns ett specifikt objekt i en lista innan du fortsätter.

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

Exempel: contains(createArray('North', 'South', 'East', 'West'), 'East') returnerar true

Anmärkning

För matriser med objekt contains() söker du efter hela objektet, inte ett egenskapsvärde. Om du vill kontrollera om ett objekt har en matchande egenskap använder du en filtermatrisåtgärd och kontrollerar length() sedan resultatet.

JSON och objekt

18. Parsa JSON-sträng

Scenario: En HTTP-åtgärd eller anpassad anslutningsapp returnerar en JSON-sträng som du behöver arbeta med som strukturerade data.

Uttryck: json(body('HTTP'))

Exempel: json('{"name":"Alice","age":30}') returnerar ett objekt som du kan komma åt med ?['name'].

Important

Dubbelparsa inte. Om åtgärden redan returnerar parsad JSON (de flesta anslutningsåtgärder gör det json() ) orsakar omslutningen igen ett fel. Använd json() endast på råa strängsvar, inte på åtgärdsutdata som redan är objekt.

19. Hämta kapslad egenskap från JSON

Scenario: Få åtkomst till ett värde djupt inne i ett JSON-svar, response.data.items[0].nametill exempel .

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

Exempel: För {"data":{"items":[{"name":"Widget"}]}}returnerar Widget.

Important

Glöm ? inte (säker navigering). body('HTTP')['data']['items'] genererar ett fel om någon nivå är null. Använd ?['key'] alltid för att på ett säkert sätt bläddra: var och en ? returnerar null i stället för att misslyckas om det överordnade objektet saknas.

20. Skapa JSON-objekt från värden

Scenario: Skapa en begärandetext för en HTTP-åtgärd från flödesvariabler och dynamiskt innehåll.

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

Exempel: Med name=Alice och status=Active, returnerar {"name":"Alice","status":"Active"}.

Tips/Råd

Om en variabel innehåller citattecken eller specialtecken blir JSON felaktigt formaterad. För robust konstruktion använder du en Compose-åtgärd med createObject('name', variables('name'), 'status', variables('status')) eller skapar den direkt i en Compose-åtgärd.

21. Konvertera objekt till sträng

Scenario: Logga ett JSON-objekt till ett textfält eller skicka strukturerade data som en strängparameter.

Uttryck: string(variables('myObject'))

Exempel: string(json('{"a":1}')) returnerar {"a":1} som en sträng.

Anmärkning

string() på en matris eller ett objekt genererar kompakt JSON (ingen snygg utskrift). Det finns ingen inbyggd prettyPrint(). Acceptera kompakt JSON- eller byggformaterad text manuellt.

22. Hantera null- eller tomma värden på ett säkert sätt

Scenario: Förhindra fel när ett fält kan vara null, tomt eller saknas helt.

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

Exempel: Om optionalField är null returnerar 'default value'. Om det har ett värde returnerar det värdet.

Important

coalesce() hanterar nullendast , inte tomma strängar. För tomma strängar kombinerar du med ett villkor: if(empty(triggerBody()?['field']), 'default', triggerBody()?['field']). Funktionen empty() returnerar true för både null och tom sträng ''.

Tal och matematik

23. Avrunda ett tal

Scenario: Visa ett procent- eller valutavärde med ett fast antal decimaler.

Uttryck: formatNumber(variables('value'), 'N2') (för visning) eller div(mul(variables('value'), 100), 100) (för trunkering)

Exempel: formatNumber(3.14159, 'N2') returnerar 3.14 som en sträng.

Anmärkning

formatNumber() returnerar en sträng, inte ett tal. Om du behöver göra ytterligare matematik på det avrundade värdet parsar du tillbaka det: float(formatNumber(variables('value'), 'N2')).

24. Konvertera sträng till tal (och tillbaka)

Scenario: Ett formulär eller ett e-postmeddelande ger dig ett tal som text och du måste räkna med det.

Uttryck: int(variables('textNumber')) eller float(variables('textNumber')) och string(variables('numericValue'))

Exempel: int('42') returnerar 42. float('3.14') returnerar 3.14. string(42) returnerar '42'.

Important

int() på en decimalsträng utlöser ett fel. Den trunkerar inte. Om en variabel kan innehålla en decimal använder du float() först: int(float(variables('input'))). Med konstanta värden som int('3.14')fångas felet vid sparad tid (InvalidTemplate), inte vid körning.

25. Beräkna procent

Scenario: Visa vilket bråk ett värde är av ett annat (till exempel slutförandefrekvens, användning).

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

Exempel: Med part=75 och total=200, returnerar 37.5.

Important

Heltalsdivision trunkerar. div(75, 200) returnerar 0 eftersom båda är heltal. Konvertera alltid till flyttal först: div(float(75), float(200)) returnerar 0.375.

Villkor och logik

26. Om/då/annars i ett uttryck

Scenario: Returnera olika värden baserat på ett villkor, utan att lägga till en villkorsåtgärd i flödet.

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

Exempel: Om status är Approvedreturnerar .Proceed Annars returneras Wait.

Anmärkning

Funktionen if() stöder >inte operatorer < direkt. Använd hjälpfunktioner: if(greater(variables('count'), 10), 'Over', 'Under'). Tillgängliga jämförelser: equals(), greater(), less(), greaterOrEquals(), lessOrEquals().

27. Sammansmältning (första värdet som inte är null)

Scenario: Prova flera fält och använd det första som har ett värde, till exempel önskat namn, visningsnamn, e-post.

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

Exempel: Om preferredName är null och displayName är 'Alice'returnerar .Alice

Tips/Råd

coalesce() null hoppar över men inte tomma strängar ''. En tom sträng är ett giltigt värde som inte är null. Kombinera med en hjälp om tomma strängar också ska hoppas över: coalesce(if(empty(A), null, A), if(empty(B), null, B), 'default').

28. Kontrollera om värdet är null eller tomt

Scenario: Verifiera att ett obligatoriskt fält har ett användbart värde innan bearbetningen.

Uttryck: empty(variables('input'))

Exempel: empty('') returnerar true. empty(null) returnerar true. empty('hello') returnerar false.

Important

empty() fungerar inte med siffror. empty(0) genererar ett fel. För tal använder equals(variables('num'), null) eller kontrollerar du typen först.

29. Jämför datum (är datum A efter datum B?)

Scenario: Kontrollera om en tidsgräns har passerat eller om en händelse har inträffat före en annan.

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

Exempel: greater(ticks('2026-03-18'), ticks('2026-03-15')) returnerar true (18 mars är efter 15 mars).

Important

Att jämföra datumsträngar direkt med greater('2026-03-18', '2026-03-15') råkar fungera för ISO-format (ÅÅÅÅ-MM-DD) eftersom det sorterar lexikaliskt. Men det misslyckas för andra format. greater('03/18/2026', '12/01/2025') returnerar false eftersom 0<1. Använd ticks() alltid för tillförlitlig datumjämförelse.

30. Boolesk logik (AND/OR under förhållanden)

Scenario: Kombinera flera villkor i ett enda uttryck, till exempel godkänt AND-belopp > 1000.

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

Exempel: Returnerar true endast om statusen Approved är lika med och mängden är större än 1 000.

Anmärkning

Du kan inte länka and/or med &&/|| syntax. Använd alltid funktionsformuläret. För komplex logik kapslade du dem: or(and(A, B), and(C, D)). Läsbarheten försämras med djup kapsling. Överväg att använda en villkorsåtgärd med flera rader i stället.

Snabbreferenskort

Uppgift Uttryck
Versaler toUpper(value)
Gemener toLower(value)
Delsträng substring(value, start, length)
Ersätt replace(value, old, new)
Delad split(value, delimiter)
Innehåller (text) contains(toLower(value), toLower(search))
Nu (formaterad) formatDateTime(utcNow(), 'yyyy-MM-dd')
Lägg till dagar addDays(date, count)
Veckodag dayOfWeek(date) (0=Sön)
Dagar mellan div(sub(ticks(end), ticks(start)), 864000000000)
Första objektet first(array)
Sista objektet last(array)
Antal length(array)
Ansluta join(array, delimiter)
Parsa JSON json(stringValue)
Säker egenskap object?['key']
Null-återställning coalesce(value, default)
Är tom empty(value)
If/else if(condition, trueVal, falseVal)
Jämför datum greater(ticks(dateA), ticks(dateB))
Int från sträng int(stringValue)
Flyttal från sträng float(stringValue)
AND and(condA, condB)
OR or(condA, condB)

Obs! Författaren skapade den här artikeln med hjälp av AI. Mer information