Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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) |
Relaterad information
- Felkodsreferens för molnflöde
- Felsöka molnflödesfel
- Använda uttryck i villkor
- Funktionsreferens för arbetsflödesuttryck
- Power Automate begränsningar och konfiguration
Obs! Författaren skapade den här artikeln med hjälp av AI. Mer information