Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek vysvětluje 30 vzorů výrazů připravených k použití pro běžné scénáře v Power Automate cloudových tocích. Tyto vzory můžete kopírovat, přizpůsobovat a používat ve svých tocích.
Poznámka:
Tyto výrazy fungují ve všech Power Automate licenčních úrovních toku cloudu. Vyhledejte úplný odkaz na funkci ve funkcích výrazů pracovního postupu.
Textové operace
1. Převod na velká nebo malá písmena
Scénář: Normalizovat vstup uživatele před porovnáním nebo úložištěm
Výraz: toUpper(variables('input')) nebo toLower(variables('input'))
Příklad: toLower('John.Smith@Contoso.COM') vrátí john.smith@contoso.com
Important
toUpper() v porovnání se rozlišují malá a velká písmena. Pokud použijete toUpper(A) = B, nezapomeňte ji použít na obě strany.
toUpper(A) = B selže, pokud je B smíšený případ.
2. Extrahování podřetěžce (vlevo, vpravo, uprostřed)
Scénář: Stažení konkrétní části z textové hodnoty Získá první N znaky, poslední N nebo rozsah od středu.
Výraz:
- Vlevo:
substring(variables('text'), 0, 5) - Vpravo:
substring(variables('text'), sub(length(variables('text')), 5), 5) - Polovině:
substring(variables('text'), 3, 4)
Příklad: substring('Invoice-2026-0042', 8, 4) vrátí 2026
Tip
Druhým parametrem je počáteční index (založený na 0), třetí je délka, nikoli koncový index.
substring('ABCDE', 1, 3) vrátí BCD, ne BC.
3. Nahrazení textu
Scénář: Vyčištění nebo transformace textových hodnot Odeberte znaky, prohození oddělovačů, opravte formátování.
Výraz: replace(variables('input'), 'old', 'new')
Příklad: replace('2026/03/18', '/', '-') vrátí 2026-03-18
Poznámka:
replace() rozlišují se malá a velká písmena.
replace('Hello', 'hello', 'Hi') vrátí Hello beze změny. V případě potřeby nejprve převeďte na běžný případ.
4. Rozdělení řetězce na pole
Scénář: Rozdělte hodnotu s oddělovači (CSV, středníky oddělené e-maily) na jednotlivé položky pro smyčku.
Výraz: split(variables('input'), ',')
Příklad: split('alice@contoso.com,bob@contoso.com,carol@contoso.com', ',') vrátí ["alice@contoso.com","bob@contoso.com","carol@contoso.com"]
Tip
Mezery za oddělovačem se zachovají.
split('a, b, c', ',') vrátí ["a"," b"," c"] s úvodními mezerami. Použijte trim() každou položku v akci Vybrat poté.
5. Zřetězení s koncem řádků (pro e-maily)
Scénář: Vytvoření textu víceřádkové zprávy pro e-maily nebo oznámení Teams
Výraz: concat('Line 1', decodeUriComponent('%0A'), 'Line 2')
Example: Pro nový řádek nebo decodeUriComponent('%0A') pro konce řádků ve stylu Windows použijte decodeUriComponent('%0D%0A').
Important
Použití \n přímo ve výrazech nevytvoří konec řádku. Vypíše literálové znaky \n. Vždy použijte decodeUriComponent přístup nebo použijte <br> , pokud je výstup HTML.
6. Zkontrolujte, jestli řetězec obsahuje text.
Scénář: Směrování toku na základě toho, jestli řádek předmětu, text e-mailu nebo pole obsahuje klíčové slovo.
Výraz: contains(toLower(triggerBody()?['subject']), 'urgent')
Příklad: contains('Project Alpha Review', 'Alpha') vrátí true
Poznámka:
contains() rozlišují se malá a velká písmena. Vždy zabalte jak haystack, tak jehlu toLower() pro porovnávání malých a malých písmen: contains(toLower(value), toLower(search)).
Datum a čas
7. Získání aktuálního data a času v určitém formátu
Scénář: Označení názvu souboru, položky protokolu nebo e-mailu s aktuálním datem a časem
Výraz: formatDateTime(utcNow(), 'yyyy-MM-dd HH:mm')
Příklad: Vrátí 2026-03-18 14:30 (UTC). Používá se convertTimeZone() pro místní čas.
Tip
utcNow() je vždy UTC. Pro místní čas řetěz s convertTimeZone(utcNow(), 'UTC', 'Eastern Standard Time', 'yyyy-MM-dd HH:mm').
8. Sčítání nebo odečítání dnů od data
Scénář: Výpočet termínu splnění, vypršení platnosti nebo data připomenutí vzhledem k dnešnímu dni
Výraz: addDays(utcNow(), 7) nebo addDays(utcNow(), -30)
Příklad: Pokud je 2026-03-18dnes , addDays(utcNow(), 7) vrátí 2026-03-25T...Z
Poznámka:
addDays() také přijímá desetinné hodnoty, ale addHours() nebo addMinutes() jsou jasnější pro posuny v dílčích dnech. Nepoužívejte addDays(utcNow(), 0.5) , když myslíte addHours(utcNow(), 12).
9. Převod řetězce na datum (analýza)
Scénář: Textové pole obsahuje datum jako 03/18/2026 a potřebujete ho použít ve funkcích kalendářních dat.
Výraz: parseDateTime(variables('dateString'), 'en-US')
Příklad: parseDateTime('03/18/2026', 'en-US') Vrátí správnou hodnotu datetime.
Important
Bez parametru národního prostředí závisí analýza na místním nastavení toku a může prohodit měsíc/den. Vždy zadejte národní prostředí explicitně, aby se zabránilo 03/04/2026 interpretaci jako 3. dubna nebo 4. března.
10. Získání dne v týdnu
Scénář: Spusťte jinou logiku v pracovní dny a víkendy nebo vygenerujte "pondělí sestavu".
Výraz: dayOfWeek(utcNow())
Příklad: Vrátí 0 pro neděli, 1 pro pondělí, ..., 6 pro sobotu.
Tip
Neděle je 0, ne 7. Používá se or(equals(dayOfWeek(...), 0), equals(dayOfWeek(...), 6)) pro víkendové kontroly. Stav jako dayOfWeek(utcNow()) > 5 chytá sobotu, ale chybí neděle.
11. Výpočet rozdílu mezi dvěma daty
Scénář: Určete, kolik dní uplynulo mezi datem požadavku a datem dokončení.
Výraz: div(sub(ticks(variables('endDate')), ticks(variables('startDate'))), 864000000000)
Příklad: Pokud je 2026-03-01 začátek a konec je 2026-03-18, vrátí .17
Poznámka:
Neexistuje žádná integrovaná dateDiff() funkce. Musíte použít přístup k ticks. Dělitel 864000000000 převede ticky na dny. Pro hodiny používejte 36000000000; pro minuty, použijte 600000000.
12. Formátování data pro zobrazení
Scénář: Převod hodnoty datetime na čitelný formát pro e-maily nebo sestavy
Výraz: formatDateTime(variables('myDate'), 'MMMM dd, yyyy') nebo formatDateTime(variables('myDate'), 'MM/dd/yyyy')
Příklad: formatDateTime('2026-03-18T14:30:00Z', 'MMMM dd, yyyy') vrátí March 18, 2026
Important
MM je měsíce, mm jsou minuty.
formatDateTime(value, 'mm/DD/yyyy')
30/18/2026 vytváří (minuty a den) místo 03/18/2026. Pro den v měsíci použijte dd (malá písmena).
Pole a kolekce
13. Filtrování pole podle podmínky
Scénář: Získání pouze položek z pole, které odpovídá určitému kritériu.
Výraz: Použití akce pole filtru s: @item()?['Status'] je rovna 'Active'
Příklad: Vrácení vstupu [{Name:'A', Status:'Active'}, {Name:'B', Status:'Closed'}][{Name:'A', Status:'Active'}]
Poznámka:
Nelze použít vložený wherevýraz filtru -style. Použijte akci pole filtru (ne výraz). Pro filtrování založené na výrazech použijte @equals(item()?['Status'], 'Active') v rozšířeném režimu pole filtru.
14. Získání první nebo poslední položky z pole
Scénář: Načtení nejnovějšího záznamu nebo první shody ze seznamu
Výraz: first(variables('myArray')) nebo last(variables('myArray'))
Example: first(body('Get_items')?['value']) vrátí první položku z dotazu SharePoint.
Tip
first() v prázdném poli se vrátí null, nikoli chyba. Vždy sledujte s kontrolou null: if(empty(variables('myArray')), null, first(variables('myArray'))).
15. Počet položek v poli
Scénář: Zkontrolujte, kolik výsledků dotaz vrátil, nebo ověřte, že seznam obsahuje dostatek položek.
Výraz: length(variables('myArray'))
Example: length(body('Get_items')?['value']) vrátí počet položek z dotazu SharePoint list.
Poznámka:
length() funguje na polích i řetězcích.
length('hello') vrátí 5 (počet znaků). Ujistěte se, že předáváte pole, ne řetězec, který vypadá jako pole.
16. Vytvoření řetězce odděleného čárkami od pole (spojení)
Scénář: Převod seznamu jmen, e-mailů nebo ID na jeden řetězec s oddělovači pro zobrazení nebo volání rozhraní API
Výraz: join(variables('myArray'), ', ')
Příklad: join(createArray('Alice', 'Bob', 'Carol'), '; ') vrátí Alice; Bob; Carol
Tip
join() funguje na polích řetězců. Pokud pole obsahuje objekty, nejprve pomocí akce Vybrat extrahujte požadované pole a pak spojte výsledek.
17. Zkontrolujte, jestli matice obsahuje hodnotu.
Scénář: Než budete pokračovat, určete, jestli v seznamu existuje konkrétní položka.
Výraz: contains(variables('myArray'), 'searchValue')
Příklad: contains(createArray('North', 'South', 'East', 'West'), 'East') vrátí true
Poznámka:
U polí objektů contains() kontroluje celý objekt, nikoli hodnotu vlastnosti. Pokud chcete zkontrolovat, jestli má některý objekt odpovídající vlastnost, použijte akci pole filtru a pak zkontrolujte length() výsledek.
JSON a objekty
18. Analýza řetězce JSON
Scénář: Akce HTTP nebo vlastní konektor vrátí řetězec JSON, se kterým potřebujete pracovat jako se strukturovanými daty.
Výraz: json(body('HTTP'))
Příklad: json('{"name":"Alice","age":30}') vrátí objekt, ke kterým můžete přistupovat pomocí ?['name'].
Important
Nechovejte se dvakrát parsovat. Pokud už akce vrátí parsovaný JSON (většina akcí konektoru dělá), opětovné zabalení způsobí json() chybu. Používejte json() pouze u nezpracovaných řetězcových odpovědí, ne u výstupů akcí, které jsou již objekty.
19. Získání vnořené vlastnosti z JSON
Scénář: Přístup k hodnotě hluboko uvnitř odpovědi JSON, response.data.items[0].namenapříklad .
Výraz: body('HTTP')?['data']?['items']?[0]?['name']
Příklad: Pro {"data":{"items":[{"name":"Widget"}]}}, vrátí Widget.
Important
Nezapomeňte na (bezpečnou ? navigaci).
body('HTTP')['data']['items'] vyvolá chybu, pokud je některá úroveň null. Vždy se používá ?['key'] k bezpečnému procházení: každá ? vrátí hodnotu null, místo aby selhála, pokud chybí nadřazený objekt.
20. Vytvoření objektu JSON z hodnot
Scénář: Vytvoření textu požadavku pro akci HTTP z proměnných toku a dynamického obsahu
Výraz: json(concat('{"name":"', variables('name'), '","status":"', variables('status'), '"}'))
Příklad: S názvem=Alice a status=Active, vrátí hodnotu {"name":"Alice","status":"Active"}.
Tip
Pokud nějaká proměnná obsahuje uvozovky nebo speciální znaky, json bude poškozený. Pro robustní výstavbu použijte akci createObject('name', variables('name'), 'status', variables('status')) přímo nebo ji sestavte v akci Vytvořit přímo.
21. Převod objektu na řetězec
Scénář: Protokolování objektu JSON do textového pole nebo předání strukturovaných dat jako řetězcového parametru
Výraz: string(variables('myObject'))
Příklad: string(json('{"a":1}')) vrátí {"a":1} jako řetězec.
Poznámka:
string() u pole nebo objektu vytváří kompaktní JSON (bez pěkného tisku). Neexistuje žádná integrovaná prettyPrint(). Přijměte kompaktní JSON nebo ručně naformátovaný text.
22. Bezpečné zpracování hodnot null nebo prázdných hodnot
Scénář: Zabránění chybám, pokud pole může být null, prázdné nebo zcela chybí.
Výraz: coalesce(triggerBody()?['optionalField'], 'default value')
Příklad: Pokud optionalField je null, vrátí hodnotu 'default value'. Pokud má hodnotu, vrátí ji.
Important
coalesce() pouze zpracovává null, ne prázdné řetězce. Pro prázdné řetězce zkombinujte s podmínkou: if(empty(triggerBody()?['field']), 'default', triggerBody()?['field']). Funkce empty() vrátí hodnotu true pro řetězec null i prázdný řetězec ''.
Čísla a matematika
23. Zaokrouhlení čísla
Scénář: Zobrazení procentuální hodnoty nebo hodnoty měny s pevným počtem desetinných míst
Výraz: formatNumber(variables('value'), 'N2') (pro zobrazení) nebo div(mul(variables('value'), 100), 100) (pro zkrácení)
Příklad: formatNumber(3.14159, 'N2') vrátí 3.14 jako řetězec.
Poznámka:
formatNumber() vrátí řetězec, nikoli číslo. Pokud potřebujete provést další matematiku pro zaokrouhlenou hodnotu, parsujte ji zpět: float(formatNumber(variables('value'), 'N2')).
24. Převod řetězce na číslo (a zpět)
Scénář: Formulář nebo e-mail vám poskytne číslo jako text a potřebujete s ním provádět matematiku.
Výraz: int(variables('textNumber')) nebo float(variables('textNumber')) a string(variables('numericValue'))
Příklad: int('42') vrátí 42.
float('3.14') vrací 3.14.
string(42) vrací '42'.
Important
int() v desítkovém řetězci vyvolá chybu; nezkrátí se. Pokud proměnná může obsahovat desetinné číslo, použijte float() nejprve: int(float(variables('input'))). Při konstantních hodnotách, jako int('3.14')je , se chyba zachytí při úspoře (InvalidTemplate), ne za běhu.
25. Výpočet procenta
Scénář: Zobrazení zlomku jedné hodnoty jiné (například míra dokončení, využití).
Výraz: mul(div(float(variables('part')), float(variables('total'))), 100)
Příklad: S part=75 a total=200, vrátí .37.5
Important
Celé číslo dělení zkracuje.
div(75, 200) vrátí 0 , protože oba jsou celá čísla. Vždy převést na float první: div(float(75), float(200)) vrátí 0.375.
Podmíněné podmínky a logika
26. If/then/else ve výrazu
Scénář: Vrácení různých hodnot na základě podmínky bez přidání akce Podmínka do toku
Výraz: if(equals(variables('status'), 'Approved'), 'Proceed', 'Wait')
Příklad: Pokud je Approvedstav , vrátí hodnotu Proceed. V opačném případě vrátí Waithodnotu .
Poznámka:
Funkce if() nepodporuje >< operátory přímo. Používejte pomocné funkce: if(greater(variables('count'), 10), 'Over', 'Under'). Dostupné porovnání: equals(), greater(), less(), greaterOrEquals(), lessOrEquals().
27. Shodná hodnota (první hodnota, která není null)
Scénář: Zkuste použít více polí a použijte první pole, která má hodnotu, například upřednostňovaný název, zobrazovaný název, e-mail.
Výraz: coalesce(triggerBody()?['preferredName'], triggerBody()?['displayName'], triggerBody()?['email'], 'Unknown')
Příklad: Pokud je preferredName null a displayName je 'Alice', vrátí Alice.
Tip
coalesce() přeskočí null , ale ne prázdné řetězce ''. Prázdný řetězec je platná hodnota, která není null. Zkombinujte s pomocnou rutinou, pokud by měly být vynechány také prázdné řetězce: coalesce(if(empty(A), null, A), if(empty(B), null, B), 'default').
28. Zkontrolujte, jestli je hodnota null nebo prázdná.
Scénář: Před zpracováním ověřte, že požadované pole má použitelnou hodnotu.
Výraz: empty(variables('input'))
Příklad: empty('') vrátí true.
empty(null) vrací true.
empty('hello') vrací false.
Important
empty() nefunguje na číslech.
empty(0) vyvolá chybu. U čísel použijte equals(variables('num'), null) nebo nejprve zkontrolujte typ.
29. Porovnání kalendářních dat (je datum A po datu B?)
Scénář: Zkontrolujte, jestli vypršel konečný termín nebo jestli došlo k jedné události před jinou.
Výraz: greater(ticks(variables('dateA')), ticks(variables('dateB')))
Příklad: greater(ticks('2026-03-18'), ticks('2026-03-15')) vrátí true (březen 18 je po 15. březnu).
Important
Porovnávání řetězců kalendářních dat přímo s greater('2026-03-18', '2026-03-15') použitím formátu ISO (RRRR-MM-DD), protože se seřadí lexikálně. Ale u jiných formátů to selže.
greater('03/18/2026', '12/01/2025')vrátífalse, protože0<1 . Vždy používejte ticks() pro spolehlivé porovnání kalendářních dat.
30. Logická logika (A/NEBO v podmínkách)
Scénář: Kombinování více podmínek v jednom výrazu, například schválené a množství > 1000.
Výraz: and(equals(variables('status'), 'Approved'), greater(variables('amount'), 1000))
Příklad: Vrátí pouze true v případě, že se stav rovná Approved a částka je větší než 1 000.
Poznámka:
Syntaxi se nedá zřetězovatand/or&&/||. Vždy používejte formulář funkce. Pro komplexní logiku je vnořte: or(and(A, B), and(C, D)). Čitelnost se snižuje díky hlubokému vnoření. Místo toho zvažte použití akce podmínky s více řádky.
Karta Rychlá reference
| Úkol | Výraz |
|---|---|
| Velká písmena | toUpper(value) |
| Malá písmena | toLower(value) |
| Podřetězec | substring(value, start, length) |
| Nahradit | replace(value, old, new) |
| Rozděleno | split(value, delimiter) |
| Obsahuje (text) | contains(toLower(value), toLower(search)) |
| Nyní (formátováno) | formatDateTime(utcNow(), 'yyyy-MM-dd') |
| Přidat dny | addDays(date, count) |
| Den v týdnu |
dayOfWeek(date) (0=Ne) |
| Dny mezi | div(sub(ticks(end), ticks(start)), 864000000000) |
| První položka | first(array) |
| Poslední položka | last(array) |
| Počet | length(array) |
| Připojte se | join(array, delimiter) |
| Parsování kódu JSON | json(stringValue) |
| Bezpečná vlastnost | object?['key'] |
| Náhradní hodnota null | coalesce(value, default) |
| Je prázdný. | empty(value) |
| If/else | if(condition, trueVal, falseVal) |
| Porovnání kalendářních dat | greater(ticks(dateA), ticks(dateB)) |
| Int from string | int(stringValue) |
| Plovoucí z řetězce | float(stringValue) |
| AND | and(condA, condB) |
| OR | or(condA, condB) |
Související informace
- Referenční informace ke kódům chyb toku cloudu
- Odstraňování problémů toků v cloudu
- Použití výrazů v podmínkách
- Referenční informace k funkcím výrazů pracovního postupu
- omezení a konfigurace Power Automate
Poznámka: Autor vytvořil tento článek s pomocí umělé inteligence. Další informace