Nota
Capaian ke halaman ini memerlukan kebenaran. Anda boleh cuba mendaftar masuk atau menukar direktori.
Capaian ke halaman ini memerlukan kebenaran. Anda boleh cuba menukar direktori.
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) |
Maklumat berkaitan
- Rujukan kod ralat aliran awan
- Selesaikan masalah ralat aliran awan
- Gunakan ungkapan dalam keadaan
- Rujukan fungsi ungkapan aliran kerja
- Power Automate had dan konfigurasi
Nota: Pengarang mencipta artikel ini dengan bantuan daripada AI. Ketahui lebih lanjut