Buku masakan ekspresi untuk aliran awan

Artikel ini menerangkan 30 corak ungkapan sedia untuk digunakan untuk senario biasa dalam aliran awan Power Automate. Anda boleh menyalin, menyesuaikan dan menggunakan corak ini dalam aliran anda.

Nota

Ungkapan ini berfungsi dalam semua peringkat lesen aliran awan Power Automate. Cari rujukan fungsi penuh dalam Fungsi ungkapan aliran kerja.

Operasi teks

1. Tukar kepada huruf besar atau huruf kecil

Senario: Normalkan input pengguna sebelum perbandingan atau penyimpanan.

Ungkapan: toUpper(variables('input')) atau toLower(variables('input'))

Contoh: toLower('John.Smith@Contoso.COM') pulangan john.smith@contoso.com

Penting

toUpper() sensitif huruf besar apabila digunakan dalam perbandingan. Jika anda menggunakan toUpper(A) = B, pastikan anda menggunakannya pada kedua-dua belah pihak. toUpper(A) = B gagal jika B adalah kes campuran.

2. Ekstrak subrentetan (kiri, kanan, tengah)

Senario: Tarik bahagian tertentu daripada nilai teks. Dapatkan aksara N pertama, N terakhir atau julat dari tengah.

Ungkapan:

  • Kiri: substring(variables('text'), 0, 5)
  • Kanan: substring(variables('text'), sub(length(variables('text')), 5), 5)
  • Pertengahan: substring(variables('text'), 3, 4)

Contoh: substring('Invoice-2026-0042', 8, 4) pulangan 2026

Tip

Parameter kedua ialah indeks permulaan (berasaskan 0), yang ketiga ialah panjang, bukan indeks akhir. substring('ABCDE', 1, 3) pulangan BCD, bukan BC.

3. Gantikan teks

Senario: Bersihkan atau ubah nilai teks. Alih keluar aksara, tukar pembatasan, betulkan pemformatan.

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

Contoh: replace('2026/03/18', '/', '-') pulangan 2026-03-18

Nota

replace() sensitif huruf besar. replace('Hello', 'hello', 'Hi') pulangan Hello tidak berubah. Tukar kepada kes biasa terlebih dahulu jika perlu.

4. Bahagikan rentetan kepada tatasusunan

Senario: Pecahkan nilai yang dibatasi (CSV, e-mel yang dipisahkan titik koma) kepada item individu untuk gelung.

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

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

Tip

Ruang selepas pembatas dipelihara. split('a, b, c', ',') pulangan ["a"," b"," c"] dengan ruang utama. Gunakan trim() pada setiap item dalam tindakan Pilih selepas itu.

5. Gabungkan dengan pemisah baris (untuk e-mel)

Senario: Bina isi mesej berbilang baris untuk pemberitahuan e-mel atau Pasukan.

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

Contoh: Gunakan decodeUriComponent('%0A') untuk baris baharu atau decodeUriComponent('%0D%0A') untuk pemisah baris gaya Windows.

Penting

Menggunakan \n terus dalam ungkapan tidak menghasilkan pemisah baris. Ia mengeluarkan aksara \nliteral . Sentiasa gunakan decodeUriComponent pendekatan, atau gunakan <br> jika outputnya ialah HTML.

6. Semak sama ada rentetan mengandungi teks

Senario: Halakan aliran berdasarkan sama ada baris subjek, isi e-mel atau medan mengandungi kata kunci.

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

Contoh: contains('Project Alpha Review', 'Alpha') pulangan true

Nota

contains() sensitif huruf besar. Sentiasa balut kedua-dua timbunan jerami dan jarum toLower() untuk padanan contains(toLower(value), toLower(search))yang tidak sensitif terhadap huruf besar: .

Tarikh dan masa

7. Dapatkan tarikh/masa semasa dalam format tertentu

Senario: Setem nama fail, entri log atau e-mel dengan tarikh dan masa semasa.

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

Contoh: Pulangan 2026-03-18 14:30 (UTC). Gunakan convertTimeZone() untuk waktu tempatan.

Tip

utcNow() sentiasa UTC. Untuk waktu tempatan, rantai dengan convertTimeZone(utcNow(), 'UTC', 'Eastern Standard Time', 'yyyy-MM-dd HH:mm').

8. Tambah atau tolak hari daripada tarikh

Senario: Kira tarikh akhir, tamat tempoh atau tarikh peringatan berbanding hari ini.

Ungkapan: addDays(utcNow(), 7) atau addDays(utcNow(), -30)

Contoh: Jika hari ini ialah 2026-03-18, addDays(utcNow(), 7) mengembalikan 2026-03-25T...Z

Nota

addDays() juga menerima nilai pecahan, tetapi addHours() atau addMinutes() lebih jelas untuk mengimbangi sub-hari. Jangan gunakan addDays(utcNow(), 0.5) apabila anda maksudkan addHours(utcNow(), 12).

9. Tukar rentetan kepada tarikh (parse)

Senario: Medan teks mengandungi tarikh seperti 03/18/2026 dan anda perlu menggunakannya dalam fungsi tarikh.

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

Contoh: parseDateTime('03/18/2026', 'en-US') mengembalikan nilai tarikh masa yang betul.

Penting

Tanpa parameter tempatan, penghuraian bergantung pada tetapan serantau aliran dan boleh bertukar bulan/hari. Sentiasa tentukan lokasi secara eksplisit untuk mengelak daripada 03/04/2026 ditafsirkan sebagai 3 April berbanding 4 Mac.

10. Dapatkan hari dalam seminggu

Senario: Jalankan logik yang berbeza pada hari bekerja berbanding hujung minggu, atau jana "laporan Isnin".

Ungkapan: dayOfWeek(utcNow())

Contoh: Pulangan 0 untuk hari Ahad, 1 untuk hari Isnin, ..., 6 untuk hari Sabtu.

Tip

Ahad ialah 0, bukan 7. Gunakan or(equals(dayOfWeek(...), 0), equals(dayOfWeek(...), 6)) untuk pemeriksaan hujung minggu. Keadaan seperti dayOfWeek(utcNow()) > 5 menangkap hari Sabtu tetapi terlepas pada hari Ahad.

11. Kira perbezaan antara dua tarikh

Senario: Tentukan bilangan hari yang berlalu antara tarikh permintaan dan tarikh siap.

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

Contoh: Jika permulaan ialah 2026-03-01 dan akhir ialah 2026-03-18, mengembalikan 17.

Nota

Tiada fungsi terbina dalam dateDiff() . Anda mesti menggunakan pendekatan kutu. Pembahagi 864000000000 menukar kutu kepada hari. Selama berjam-jam, gunakan 36000000000; selama beberapa minit, gunakan 600000000.

12. Format tarikh untuk paparan

Senario: Tukar nilai tarikhmasa kepada format yang boleh dibaca manusia untuk e-mel atau laporan.

Ungkapan: formatDateTime(variables('myDate'), 'MMMM dd, yyyy') atau formatDateTime(variables('myDate'), 'MM/dd/yyyy')

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

Penting

MM adalah bulan, mm adalah minit. formatDateTime(value, 'mm/DD/yyyy') menghasilkan 30/18/2026 (minit dan hari) dan bukannya 03/18/2026. Gunakan dd (huruf kecil) untuk hari dalam sebulan.

Tatasusunan dan koleksi

13. Tapis tatasusunan mengikut syarat

Senario: Dapatkan hanya item daripada tatasusunan yang sepadan dengan kriteria tertentu.

Ungkapan: Gunakan tindakan tatasusunan Penapis dengan: @item()?['Status'] sama dengan 'Active'

Contoh: Pengembalian input [{Name:'A', Status:'Active'}, {Name:'B', Status:'Closed'}][{Name:'A', Status:'Active'}]

Nota

Anda tidak boleh menggunakan whereungkapan penapis gaya sebaris. Gunakan tindakan Tapis tatasusunan (bukan ungkapan). Untuk penapisan berasaskan ungkapan, gunakan @equals(item()?['Status'], 'Active') dalam mod lanjutan tatasusunan Penapis.

14. Dapatkan item pertama atau terakhir daripada tatasusunan

Senario: Dapatkan semula rekod terkini atau padanan pertama daripada senarai.

Ungkapan: first(variables('myArray')) atau last(variables('myArray'))

Contoh: first(body('Get_items')?['value']) mengembalikan item pertama daripada pertanyaan SharePoint.

Tip

first() pada tatasusunan kosong mengembalikan null, bukan ralat. Sentiasa ikuti dengan semakan batal: if(empty(variables('myArray')), null, first(variables('myArray'))).

15. Kira item dalam tatasusunan

Senario: Semak bilangan hasil yang dikembalikan oleh pertanyaan atau sahkan bahawa senarai mempunyai item yang mencukupi.

Ungkapan: length(variables('myArray'))

Contoh: length(body('Get_items')?['value']) mengembalikan bilangan item daripada pertanyaan SharePoint list.

Nota

length() berfungsi pada kedua-dua tatasusunan dan rentetan. length('hello') pulangan 5 (kiraan aksara). Pastikan anda menghantar tatasusunan, bukan rentetan yang kelihatan seperti tatasusunan.

16. Buat rentetan yang dipisahkan koma daripada tatasusunan (bergabung)

Senario: Tukar senarai nama, e-mel atau ID kepada rentetan tunggal yang dibatasi untuk paparan atau panggilan API.

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

Contoh: join(createArray('Alice', 'Bob', 'Carol'), '; ') pulangan Alice; Bob; Carol

Tip

join() berfungsi pada tatasusunan rentetan. Jika tatasusunan anda mengandungi objek, gunakan tindakan Pilih terlebih dahulu untuk mengekstrak medan yang anda mahu, kemudian sertai hasilnya.

17. Semak sama ada tatasusunan mengandungi nilai

Senario: Tentukan sama ada item tertentu wujud dalam senarai sebelum meneruskan.

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

Contoh: contains(createArray('North', 'South', 'East', 'West'), 'East') pulangan true

Nota

Untuk tatasusunan objek, contains() semak untuk keseluruhan objek, bukan nilai sifat. Untuk menyemak sama ada mana-mana objek mempunyai sifat yang sepadan, gunakan tindakan Tapis tatasusunan dan kemudian semak length() hasilnya.

JSON dan objek

18. Huraikan rentetan JSON

Senario: Tindakan HTTP atau penyambung tersuai mengembalikan rentetan JSON yang anda perlukan untuk bekerja sebagai data berstruktur.

Ungkapan: json(body('HTTP'))

Contoh: json('{"name":"Alice","age":30}') mengembalikan objek yang boleh anda akses dengan ?['name'].

Penting

Jangan huraikan dua kali. Jika tindakan sudah mengembalikan JSON yang dihuraikan (kebanyakan tindakan penyambung melakukannya), membungkusnya json() semula menyebabkan ralat. Gunakan json() hanya pada respons rentetan mentah, bukan pada output tindakan yang sudah menjadi objek.

19. Dapatkan harta bersarang daripada JSON

Senario: Akses nilai jauh di dalam respons JSON, contohnya, . response.data.items[0].name

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

Contoh: Untuk {"data":{"items":[{"name":"Widget"}]}}, mengembalikan Widget.

Penting

Jangan lupa ( ? navigasi selamat). body('HTTP')['data']['items'] melemparkan ralat jika mana-mana tahap adalah nol. Sentiasa gunakan ?['key'] untuk merentasi dengan selamat: setiap mengembalikan ? null dan bukannya gagal jika induk hilang.

20. Buat objek JSON daripada nilai

Senario: Bina isi permintaan untuk tindakan HTTP daripada pembolehubah aliran dan kandungan dinamik.

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

Contoh: Dengan name=Alice dan status=Active, mengembalikan {"name":"Alice","status":"Active"}.

Tip

Jika mana-mana pembolehubah mengandungi petikan atau aksara khas, JSON akan dicacat. Untuk pembinaan yang mantap, gunakan tindakan Karang dengan createObject('name', variables('name'), 'status', variables('status')) atau binanya dalam tindakan Karang secara langsung.

21. Tukar objek kepada rentetan

Senario: Log objek JSON ke medan teks atau hantar data berstruktur sebagai parameter rentetan.

Ungkapan: string(variables('myObject'))

Contoh: string(json('{"a":1}')) kembali {"a":1} sebagai rentetan.

Nota

string() pada tatasusunan atau objek menghasilkan JSON padat (tiada percetakan cantik). Tiada terbina dalam prettyPrint(). Terima JSON padat atau bina teks berformat secara manual.

22. Kendalikan nilai nol atau kosong dengan selamat

Senario: Elakkan ralat apabila medan mungkin kosong, kosong atau hilang sepenuhnya.

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

Contoh: Jika optionalField adalah null, mengembalikan 'default value'. Jika ia mempunyai nilai, mengembalikan nilai tersebut.

Penting

coalesce() hanya mengendalikan null, bukan rentetan kosong. Untuk rentetan kosong, gabungkan dengan syarat: if(empty(triggerBody()?['field']), 'default', triggerBody()?['field']). Fungsi ini empty() mengembalikan true untuk kedua-dua rentetan ''null dan kosong .

Nombor dan matematik

23. Bulatkan nombor

Senario: Paparkan peratusan atau nilai mata wang dengan bilangan tempat perpuluhan yang tetap.

Ungkapan: formatNumber(variables('value'), 'N2') (untuk paparan) atau div(mul(variables('value'), 100), 100) (untuk pemotongan)

Contoh: formatNumber(3.14159, 'N2') kembali 3.14 sebagai rentetan.

Nota

formatNumber() mengembalikan rentetan, bukan nombor. Jika anda perlu melakukan pengiraan lanjut pada nilai dibundarkan, huraikan semula: float(formatNumber(variables('value'), 'N2')).

24. Tukar rentetan kepada nombor (dan kembali)

Senario: Borang atau e-mel memberi anda nombor sebagai teks, dan anda perlu melakukan matematik dengannya.

Ungkapan: int(variables('textNumber')) atau float(variables('textNumber')) dan string(variables('numericValue'))

Contoh: int('42') mengembalikan 42. float('3.14') pulangan 3.14. string(42) pulangan '42'.

Penting

int() pada rentetan perpuluhan melemparkan ralat; ia tidak memotong. Jika pembolehubah mungkin mengandungi perpuluhan, gunakan float() dahulu: int(float(variables('input'))). Dengan nilai malar seperti int('3.14'), ralat ditangkap pada masa simpan (InvalidTemplate), bukan pada masa jalan.

25. Kira peratusan

Senario: Tunjukkan pecahan satu nilai daripada nilai lain (contohnya, kadar penyiapan, penggunaan).

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

Contoh: Dengan bahagian=75 dan jumlah=200, mengembalikan 37.5.

Penting

Pembahagian integer terpotong. div(75, 200) pulangan 0 kerana kedua-duanya adalah integer. Sentiasa tukar kepada terapung terlebih dahulu: div(float(75), float(200)) mengembalikan 0.375.

Bersyarat dan logik

26. Jika/kemudian/lain dalam ungkapan

Senario: Kembalikan nilai yang berbeza berdasarkan syarat, tanpa menambah tindakan Condition pada aliran.

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

Contoh: Jika status ialah Approved, mengembalikan Proceed. Jika tidak, pulangan Wait.

Nota

Fungsi ini if() tidak menyokong >, < pengendali secara langsung. Gunakan fungsi pembantu: if(greater(variables('count'), 10), 'Over', 'Under'). Perbandingan yang tersedia: equals(), greater(), , less()greaterOrEquals(), lessOrEquals().

27. Gabungan (nilai bukan nol pertama)

Senario: Cuba berbilang medan dan gunakan medan pertama yang mempunyai nilai, contohnya, nama pilihan, nama paparan, e-mel.

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

Contoh: Jika preferredName ialah null dan displayName ialah 'Alice', mengembalikan Alice.

Tip

coalesce() melangkau null tetapi bukan rentetan ''kosong . Rentetan kosong ialah nilai bukan nol yang sah. Gabungkan dengan pembantu jika rentetan kosong juga harus dilangkau: coalesce(if(empty(A), null, A), if(empty(B), null, B), 'default').

28. Semak sama ada nilai nol atau kosong

Senario: Sahkan bahawa medan yang diperlukan mempunyai nilai yang boleh digunakan sebelum diproses.

Ungkapan: empty(variables('input'))

Contoh: empty('') mengembalikan true. empty(null) pulangan true. empty('hello') pulangan false.

Penting

empty() tidak berfungsi pada nombor. empty(0) melemparkan kesilapan. Untuk nombor, gunakan equals(variables('num'), null) atau semak jenisnya terlebih dahulu.

29. Bandingkan tarikh (adakah tarikh A selepas tarikh B?)

Senario: Semak sama ada tarikh akhir telah berlalu atau jika satu peristiwa berlaku sebelum yang lain.

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

Contoh: greater(ticks('2026-03-18'), ticks('2026-03-15')) pulangan true (18 Mac ialah selepas 15 Mac).

Penting

Membandingkan rentetan tarikh secara langsung dengan greater('2026-03-18', '2026-03-15') kebetulan berfungsi untuk format ISO (YYYY-MM-DD) kerana ia menyusun secara leksikografi. Tetapi ia gagal untuk format lain. greater('03/18/2026', '12/01/2025') pulangan false kerana 0<1. Sentiasa gunakan ticks() untuk perbandingan tarikh yang boleh dipercayai.

30. Logik Boolean (DAN/ATAU dalam keadaan)

Senario: Gabungkan berbilang syarat dalam satu ungkapan, contohnya, diluluskan DAN jumlah > 1000.

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

Contoh: Mengembalikan true hanya jika status sama Approved dan amaun lebih besar daripada 1000.

Nota

Anda tidak boleh rantaian and/or dengan &&/|| sintaks. Sentiasa gunakan borang fungsi. Untuk logik yang kompleks, sarang mereka: or(and(A, B), and(C, D)). Kebolehbacaan merosot dengan bersarang dalam. Pertimbangkan untuk menggunakan tindakan Syarat dengan berbilang baris sebaliknya.

Kad rujukan pantas

Tugas Ungkapan
Huruf besar toUpper(value)
Huruf kecil toLower(value)
Subrentetan substring(value, start, length)
Replace replace(value, old, new)
Split split(value, delimiter)
Mengandungi (teks) contains(toLower(value), toLower(search))
Sekarang (diformat) formatDateTime(utcNow(), 'yyyy-MM-dd')
Tambah hari addDays(date, count)
Hari dalam seminggu dayOfWeek(date) (0=Matahari)
Hari antara div(sub(ticks(end), ticks(start)), 864000000000)
Item pertama first(array)
Perkara terakhir last(array)
Count length(array)
Sertai join(array, delimiter)
Huraikan JSON json(stringValue)
Harta selamat object?['key']
Null fallback coalesce(value, default)
Kosong empty(value)
Jika/lain if(condition, trueVal, falseVal)
Bandingkan tarikh greater(ticks(dateA), ticks(dateB))
Int daripada rentetan int(stringValue)
Terapung daripada rentetan float(stringValue)
DAN and(condA, condB)
ATAU or(condA, condB)

Nota: Pengarang mencipta artikel ini dengan bantuan daripada AI. Ketahui lebih lanjut