Lưu ý
Cần có ủy quyền mới truy nhập được vào trang này. Bạn có thể thử đăng nhập hoặc thay đổi thư mục.
Cần có ủy quyền mới truy nhập được vào trang này. Bạn có thể thử thay đổi thư mục.
Bài viết này giải thích 30 mẫu biểu thức sẵn sàng sử dụng cho các kịch bản phổ biến Power Automate dòng đám mây. Bạn có thể sao chép, điều chỉnh và sử dụng các mẫu hình này trong dòng của bạn.
Lưu ý
Các biểu thức này hoạt động trong tất cả Power Automate cấp phép dòng điện toán đám mây. Tìm tham chiếu hàm đầy đủ trong các hàm biểu thức Dòng công việc.
Thao tác văn bản
1. Chuyển đổi thành chữ hoa hoặc chữ thường
Kịch bản: Chuẩn hóa đầu vào của người dùng trước khi so sánh hoặc lưu trữ.
Biểu thức: toUpper(variables('input')) hoặc toLower(variables('input'))
Ví dụ: trả toLower('John.Smith@Contoso.COM') về john.smith@contoso.com
Quan trọng
toUpper() phân biệt chữ hoa chữ thường khi được dùng trong so sánh. Nếu bạn sử dụng toUpper(A) = B, hãy đảm bảo bạn áp dụng cho cả hai bên.
toUpper(A) = B không thành công nếu B là trường hợp hỗn hợp.
2. Trích xuất chuỗi con (trái, phải, giữa)
Kịch bản: Kéo một phần cụ thể ra khỏi giá trị văn bản. Nhận các ký tự N đầu tiên, chữ N cuối cùng hoặc một dải từ giữa.
Biểu thức:
- Trái:
substring(variables('text'), 0, 5) - Bên phải:
substring(variables('text'), sub(length(variables('text')), 5), 5) - Giữa:
substring(variables('text'), 3, 4)
Ví dụ: trả substring('Invoice-2026-0042', 8, 4) về 2026
Tiền bo
Tham số thứ hai là chỉ mục bắt đầu (dựa trên 0), tham số thứ ba là chiều dài chứ không phải chỉ mục kết thúc.
substring('ABCDE', 1, 3) trả về BCD, không phải BC.
3. Thay thế văn bản
Kịch bản: Dọn dẹp hoặc chuyển đổi các giá trị văn bản. Loại bỏ ký tự, hoán đổi dấu tách, sửa định dạng.
Biểu thức: replace(variables('input'), 'old', 'new')
Ví dụ: trả replace('2026/03/18', '/', '-') về 2026-03-18
Lưu ý
replace() phân biệt chữ hoa chữ thường.
replace('Hello', 'hello', 'Hi') trả Hello về không đổi. Trước tiên, hãy chuyển đổi thành trường hợp thông thường nếu cần.
4. Tách chuỗi thành mảng
Kịch bản: Ngắt giá trị được phân tách (CSV, email phân tách bằng dấu chấm phẩy) thành các mục riêng lẻ để tạo vòng lặp.
Biểu thức: split(variables('input'), ',')
Ví dụ: trả split('alice@contoso.com,bob@contoso.com,carol@contoso.com', ',') về ["alice@contoso.com","bob@contoso.com","carol@contoso.com"]
Tiền bo
Dấu cách sau dấu tách được giữ nguyên.
split('a, b, c', ',') trả về ["a"," b"," c"] với dấu cách ở đầu. Sử trim() dụng trên từng mục trong hành động Chọn sau đó.
5. Ghép nối với ngắt dòng (đối với email)
Kịch bản: Xây dựng nội dung thư nhiều dòng cho email hoặc thông báo Teams.
Biểu thức: concat('Line 1', decodeUriComponent('%0A'), 'Line 2')
Ví dụ: Sử dụng decodeUriComponent('%0A') cho dòng mới hoặc decodeUriComponent('%0D%0A') cho ngắt dòng kiểu Windows.
Quan trọng
Việc \n sử dụng trực tiếp trong biểu thức không tạo ra ngắt dòng. Nó xuất ra các ký tự chữ \n. Luôn sử dụng cách decodeUriComponent tiếp cận hoặc sử dụng <br> nếu đầu ra là HTML.
6. Kiểm tra xem chuỗi có chứa văn bản hay không
Kịch bản: Định tuyến một dòng dựa trên việc dòng chủ đề, nội dung email hoặc trường có chứa từ khóa hay không.
Biểu thức: contains(toLower(triggerBody()?['subject']), 'urgent')
Ví dụ: contains('Project Alpha Review', 'Alpha') trả về true
Lưu ý
contains() phân biệt chữ hoa chữ thường. Luôn quấn cả haystack và kim vào toLower() cho phù hợp với trường hợp không nhạy cảm: contains(toLower(value), toLower(search)).
Ngày và giờ
7. Nhận ngày/giờ hiện tại theo định dạng cụ thể
Kịch bản: Đóng dấu tên tệp, mục nhật ký hoặc email với ngày và giờ hiện tại.
Biểu thức: formatDateTime(utcNow(), 'yyyy-MM-dd HH:mm')
Ví dụ: Trả 2026-03-18 14:30 về (UTC). Sử dụng convertTimeZone() cho giờ địa phương.
Tiền bo
utcNow() luôn là UTC. Đối với thời gian địa phương, chuỗi với convertTimeZone(utcNow(), 'UTC', 'Eastern Standard Time', 'yyyy-MM-dd HH:mm').
8. Cộng hoặc trừ các ngày từ một ngày
Kịch bản: Tính toán ngày đến hạn, ngày hết hạn hoặc ngày nhắc tương ứng với ngày hôm nay.
Biểu thức: addDays(utcNow(), 7) hoặc addDays(utcNow(), -30)
Ví dụ: If today is 2026-03-18, returns addDays(utcNow(), 7)2026-03-25T...Z
Lưu ý
addDays() cũng chấp nhận giá trị phân số addHours() , nhưng addMinutes() hoặc rõ ràng hơn cho bù trừ ngày phụ. Không sử dụng khi bạn addDays(utcNow(), 0.5) có nghĩa là addHours(utcNow(), 12).
9. Chuyển đổi chuỗi thành ngày (phân tích cú pháp)
Kịch bản: Một trường văn bản chứa ngày giống như 03/18/2026 và bạn cần sử dụng nó trong các hàm ngày.
Biểu thức: parseDateTime(variables('dateString'), 'en-US')
Ví dụ: trả parseDateTime('03/18/2026', 'en-US') về một giá trị datetime thích hợp.
Quan trọng
Nếu không có tham số bản địa, việc phân tích sẽ phụ thuộc vào thiết đặt khu vực của dòng và có thể hoán đổi tháng/ngày. Luôn xác định ngôn ngữ một cách rõ ràng để tránh bị 03/04/2026 diễn giải là 03/04 và 04/03.
10. Nhận ngày trong tuần
Kịch bản: Chạy lô-gic khác nhau vào các ngày trong tuần so với cuối tuần hoặc tạo "Báo cáo thứ hai".
Biểu thức: dayOfWeek(utcNow())
Ví dụ: Trả về 0 cho Chủ Nhật, 1 cho Thứ Hai, ..., 6 cho Thứ Bảy.
Tiền bo
Chủ nhật là 0, không phải 7. Sử dụng or(equals(dayOfWeek(...), 0), equals(dayOfWeek(...), 6)) để kiểm tra cuối tuần. Một điều kiện như dayOfWeek(utcNow()) > 5 bắt thứ bảy nhưng bỏ lỡ Chủ nhật.
11. Tính chênh lệch giữa hai ngày
Kịch bản: Xác định số ngày đã trôi qua giữa ngày yêu cầu và ngày hoàn thành.
Biểu thức: div(sub(ticks(variables('endDate')), ticks(variables('startDate'))), 864000000000)
Ví dụ: Nếu start is 2026-03-01 and end là 2026-03-18, trả về 17.
Lưu ý
Không có hàm tích hợp dateDiff() sẵn. Bạn phải sử dụng phương pháp tiếp cận ve. Ước số chuyển 864000000000 đổi ve thành ngày. Đối với giờ, sử dụng 36000000000; trong vài phút, sử dụng 600000000.
12. Định dạng ngày để hiển thị
Kịch bản: Chuyển đổi giá trị ngày giờ thành định dạng con người có thể đọc được cho email hoặc báo cáo.
Biểu thức: formatDateTime(variables('myDate'), 'MMMM dd, yyyy') hoặc formatDateTime(variables('myDate'), 'MM/dd/yyyy')
Ví dụ: trả formatDateTime('2026-03-18T14:30:00Z', 'MMMM dd, yyyy') về March 18, 2026
Quan trọng
MM là tháng, mm là phút.
formatDateTime(value, 'mm/DD/yyyy') sản xuất 30/18/2026 (phút và ngày) thay vì 03/18/2026. Dùng dd (chữ thường) cho ngày trong tháng.
Mảng và bộ sưu tập
13. Lọc mảng theo điều kiện
Kịch bản: Chỉ lấy các mục từ một mảng khớp với một tiêu chí cụ thể.
Biểu thức: Sử dụng hành động mảng Lọc với: @item()?['Status'] bằng 'Active'
Ví dụ: Trả về đầu [{Name:'A', Status:'Active'}, {Name:'B', Status:'Closed'}] vào [{Name:'A', Status:'Active'}]
Lưu ý
Bạn không thể sử dụng biểu thức wherelọc kiểu tại chỗ. Sử dụng hành động lọc mảng (không phải biểu thức). Để lọc dựa trên biểu thức, hãy dùng @equals(item()?['Status'], 'Active') trong chế độ nâng cao của mảng Lọc.
14. Lấy mục đầu tiên hoặc cuối cùng từ mảng
Kịch bản: Truy xuất bản ghi gần đây nhất hoặc kết quả khớp đầu tiên từ danh sách.
Biểu thức: first(variables('myArray')) hoặc last(variables('myArray'))
Ví dụ: first(body('Get_items')?['value']) trả về mục đầu tiên từ truy vấn SharePoint mẫu.
Tiền bo
first() trên một mảng trống trả về null, không phải lỗi. Luôn làm theo với một dấu kiểm null: if(empty(variables('myArray')), null, first(variables('myArray'))).
15. Đếm các mục trong mảng
Kịch bản: Kiểm tra số lượng kết quả mà một truy vấn trả về hoặc xác thực rằng một danh sách có đủ mục.
Biểu thức: length(variables('myArray'))
Ví dụ: length(body('Get_items')?['value']) trả về số mục từ truy vấn danh sách SharePoint mẫu.
Lưu ý
length() hoạt động trên cả mảng và chuỗi.
length('hello') trả về 5 (số ký tự). Hãy đảm bảo rằng bạn đang truyền mảng chứ không phải chuỗi trông giống như mảng.
16. Tạo chuỗi phân tách bằng dấu phẩy từ mảng (nối)
Kịch bản: Chuyển đổi danh sách tên, email hoặc ID thành một chuỗi được phân tách duy nhất để hiển thị hoặc cuộc gọi API.
Biểu thức: join(variables('myArray'), ', ')
Ví dụ: trả join(createArray('Alice', 'Bob', 'Carol'), '; ') về Alice; Bob; Carol
Tiền bo
join() hoạt động trên mảng chuỗi. Nếu mảng của bạn chứa các đối tượng, trước tiên hãy sử dụng hành động Select để trích xuất trường bạn muốn, rồi kết hợp kết quả.
17. Kiểm tra xem mảng có chứa giá trị không
Kịch bản: Xác định xem một mục cụ thể có tồn tại trong danh sách trước khi tiếp tục không.
Biểu thức: contains(variables('myArray'), 'searchValue')
Ví dụ: trả contains(createArray('North', 'South', 'East', 'West'), 'East') về true
Lưu ý
Đối với mảng đối tượng, kiểm tra contains() toàn bộ đối tượng, không kiểm tra giá trị thuộc tính. Để kiểm tra xem bất kỳ đối tượng nào có thuộc tính khớp hay không, hãy sử dụng hành động mảng Lọc, rồi kiểm length() tra kết quả.
JSON và đối tượng
18. Phân tích chuỗi JSON
Kịch bản: Hành động HTTP hoặc bộ nối tùy chỉnh trả về chuỗi JSON mà bạn cần làm việc dưới dạng dữ liệu có cấu trúc.
Biểu thức: json(body('HTTP'))
Ví dụ: trả json('{"name":"Alice","age":30}') về một đối tượng mà bạn có thể truy nhập bằng ?['name'].
Quan trọng
Đừng phân tích cú pháp kép. Nếu hành động đã trả về JSON đã phân tích cú pháp (hầu hết các hành động đường kết nối đều thực hiện), thì việc ngắt kết nối lại json() sẽ gây ra lỗi. Chỉ json() sử dụng trên phản hồi chuỗi thô, không sử dụng cho đầu ra hành động đã là đối tượng.
19. Nhận thuộc tính lồng nhau từ JSON
Kịch bản: Truy nhập giá trị sâu bên trong phản hồi JSON, ví dụ: response.data.items[0].name.
Biểu thức: body('HTTP')?['data']?['items']?[0]?['name']
Ví dụ: Đối với {"data":{"items":[{"name":"Widget"}]}}, trả về Widget.
Quan trọng
Đừng quên (điều ? hướng an toàn).
body('HTTP')['data']['items'] trả về lỗi nếu bất kỳ mức nào là null. Luôn sử dụng ?['key'] để đi qua một cách an toàn: mỗi ? giá trị trả về null thay vì thất bại nếu thiếu phần tử mẹ.
20. Tạo đối tượng JSON từ các giá trị
Kịch bản: Xây dựng nội dung yêu cầu cho hành động HTTP từ các biến dòng và nội dung động.
Biểu thức: json(concat('{"name":"', variables('name'), '","status":"', variables('status'), '"}'))
Ví dụ: Với name=Alice và status=Active, trả về {"name":"Alice","status":"Active"}.
Tiền bo
Nếu bất kỳ biến nào chứa dấu ngoặc kép hoặc ký tự đặc biệt, JSON sẽ bị biến dạng. Đối với cấu trúc mạnh mẽ, hãy sử dụng hành động Soạn hoặc createObject('name', variables('name'), 'status', variables('status')) dựng trực tiếp tác vụ soạn thảo.
21. Chuyển đổi đối tượng thành chuỗi
Kịch bản: Ghi nhật ký đối tượng JSON vào trường văn bản hoặc truyền dữ liệu có cấu trúc dưới dạng tham số chuỗi.
Biểu thức: string(variables('myObject'))
Ví dụ: string(json('{"a":1}')) trả về {"a":1} dưới dạng chuỗi.
Lưu ý
string() trên một mảng hoặc đối tượng tạo ra JSON nhỏ gọn (không in đẹp). Không có tích hợp sẵn prettyPrint(). Chấp nhận JSON nhỏ gọn hoặc văn bản được định dạng bản dựng theo cách thủ công.
22. Xử lý các giá trị null hoặc rỗng một cách an toàn
Kịch bản: Ngăn lỗi khi trường có thể rỗng, trống hoặc thiếu hoàn toàn.
Biểu thức: coalesce(triggerBody()?['optionalField'], 'default value')
Ví dụ: If optionalField is null, trả về 'default value'. Nếu nó có một giá trị, trả về giá trị đó.
Quan trọng
coalesce() chỉ xử lý null, không phải chuỗi trống. Đối với chuỗi trống, kết hợp với điều kiện: if(empty(triggerBody()?['field']), 'default', triggerBody()?['field']). Hàm empty() trả về true cho cả chuỗi null và rỗng ''.
Số và toán học
23. Làm tròn số
Kịch bản: Hiển thị giá trị phần trăm hoặc tiền tệ với số chữ số thập phân cố định.
Biểu thức: formatNumber(variables('value'), 'N2') (để hiển thị) hoặc div(mul(variables('value'), 100), 100) (để cắt bớt)
Ví dụ: formatNumber(3.14159, 'N2') trả về 3.14 dưới dạng chuỗi.
Lưu ý
formatNumber() trả về một chuỗi, không phải số. Nếu bạn cần làm thêm toán trên giá trị làm tròn, hãy phân tích lại: float(formatNumber(variables('value'), 'N2')).
24. Chuyển đổi chuỗi thành số (và trở về)
Kịch bản: Một biểu mẫu hoặc email cung cấp cho bạn một số dưới dạng văn bản và bạn cần làm toán với nó.
Biểu thức: int(variables('textNumber')) hoặc float(variables('textNumber')) và string(variables('numericValue'))
Ví dụ: trả int('42') về 42.
float('3.14') trả về 3.14.
string(42) trả về '42'.
Quan trọng
int() trên chuỗi thập phân trả về lỗi; nó không cắt bớt. Nếu biến số có thể chứa số thập phân, trước tiên hãy sử float() dụng: int(float(variables('input'))). Với các giá trị hằng số int('3.14')như , lỗi bị bắt lúc tiết kiệm thời gian (InvalidTemplate), không phải ở thời gian chạy.
25. Tính toán tỷ lệ phần trăm
Kịch bản: Hiển thị phân số của một giá trị khác (ví dụ: tỷ lệ hoàn thành, mức sử dụng).
Biểu thức: mul(div(float(variables('part')), float(variables('total'))), 100)
Ví dụ: Với part=75 và total=200, trả về 37.5.
Quan trọng
Phép chia số nguyên bị cắt cụt.
div(75, 200) trả 0 về vì cả hai đều là số nguyên. Luôn chuyển đổi thành trôi nổi trước tiên: div(float(75), float(200)) trả về 0.375.
Điều kiện và lô-gic
26. Nếu/sau đó/khác trong một biểu thức
Kịch bản: Trả về các giá trị khác nhau dựa trên một điều kiện mà không cần thêm hành động Điều kiện vào dòng.
Biểu thức: if(equals(variables('status'), 'Approved'), 'Proceed', 'Wait')
Ví dụ: Nếu trạng thái là Approved, trả về Proceed. Nếu không thì trả về Wait.
Lưu ý
Hàm if() không hỗ trợ , toán >< tử trực tiếp. Sử dụng các hàm trợ giúp: if(greater(variables('count'), 10), 'Over', 'Under'). So sánh sẵn dùng: equals(), greater(), less(), greaterOrEquals(), lessOrEquals().
27. Hợp nhất (giá trị không phải null đầu tiên)
Kịch bản: Thử nhiều trường và sử dụng trường đầu tiên có giá trị, ví dụ: tên ưa thích, tên hiển thị, email.
Biểu thức: coalesce(triggerBody()?['preferredName'], triggerBody()?['displayName'], triggerBody()?['email'], 'Unknown')
Ví dụ: Nếu preferredName là null và displayName là 'Alice', trả về Alice.
Tiền bo
coalesce() bỏ qua null nhưng không bỏ qua chuỗi trống ''. Chuỗi trống là một giá trị không phải là null hợp lệ. Kết hợp với người trợ giúp nếu chuỗi trống cũng nên được bỏ qua: coalesce(if(empty(A), null, A), if(empty(B), null, B), 'default').
28. Kiểm tra xem giá trị có rỗng hay trống
Kịch bản: Xác thực rằng trường bắt buộc có giá trị sử dụng được trước khi xử lý.
Biểu thức: empty(variables('input'))
Ví dụ: trả empty('') về true.
empty(null) trả về true.
empty('hello') trả về false.
Quan trọng
empty() không hoạt động trên các số.
empty(0) sẽ trả về lỗi. Đối với các số, trước equals(variables('num'), null) tiên hãy sử dụng hoặc kiểm tra loại.
29. So sánh ngày (là ngày A sau ngày B?)
Kịch bản: Kiểm tra xem thời hạn đã trôi qua chưa hoặc liệu một sự kiện đã xảy ra trước sự kiện khác hay chưa.
Biểu thức: greater(ticks(variables('dateA')), ticks(variables('dateB')))
Ví dụ: trả greater(ticks('2026-03-18'), ticks('2026-03-15')) về true (ngày 18 tháng 3 là sau ngày 15 tháng 3).
Quan trọng
So sánh chuỗi ngày trực tiếp với sẽ xảy greater('2026-03-18', '2026-03-15') ra để làm việc cho định dạng ISO (YYYY-MM-DD) bởi vì nó sắp xếp từ điển. Nhưng không thành công đối với các định dạng khác.
greater('03/18/2026', '12/01/2025') trả về false vì 0<1. Luôn sử dụng để ticks() so sánh ngày đáng tin cậy.
30. Lô-gic Boolean (AND/OR trong điều kiện)
Kịch bản: Kết hợp nhiều điều kiện trong một biểu thức duy nhất, ví dụ: giá trị AND được chấp > thuận là 1000.
Biểu thức: and(equals(variables('status'), 'Approved'), greater(variables('amount'), 1000))
Ví dụ: Chỉ true trả về nếu trạng thái bằng Approved và số tiền lớn hơn 1000.
Lưu ý
Bạn không thể liên kết với and/or cú &&/|| pháp. Luôn sử dụng biểu mẫu hàm. Đối với lô-gic phức tạp, hãy lồng chúng: or(and(A, B), and(C, D)). Khả năng đọc giảm khi lồng sâu. Cân nhắc sử dụng hành động Điều kiện với nhiều hàng để thay thế.
Thẻ tham chiếu nhanh
| Tác vụ | Expression |
|---|---|
| Chữ hoa | toUpper(value) |
| Chữ thường | toLower(value) |
| Chuỗi con | substring(value, start, length) |
| Replace | replace(value, old, new) |
| Split | split(value, delimiter) |
| Chứa (văn bản) | contains(toLower(value), toLower(search)) |
| Bây giờ (được định dạng) | formatDateTime(utcNow(), 'yyyy-MM-dd') |
| Thêm ngày | addDays(date, count) |
| Ngày trong tuần |
dayOfWeek(date) (0=Mặt trời) |
| Ngày trong khoảng | div(sub(ticks(end), ticks(start)), 864000000000) |
| Mục đầu tiên | first(array) |
| Mục cuối cùng | last(array) |
| Count | length(array) |
| Tham gia | join(array, delimiter) |
| Phân tích JSON | json(stringValue) |
| Thuộc tính an toàn | object?['key'] |
| Dự phòng null | coalesce(value, default) |
| Trống | empty(value) |
| Nếu/khác | if(condition, trueVal, falseVal) |
| So sánh ngày tháng | greater(ticks(dateA), ticks(dateB)) |
| Int từ chuỗi | int(stringValue) |
| Trôi nổi từ chuỗi | float(stringValue) |
| VÀ | and(condA, condB) |
| HOẶC | or(condA, condB) |
Thông tin liên quan
- Tham chiếu mã lỗi luồng đám mây
- Khắc phục lỗi luồng đám mây
- Sử dụng biểu thức trong điều kiện
- Tham chiếu hàm biểu thức dòng công việc
- Power Automate hạn và cấu hình
Lưu ý: Tác giả đã tạo bài viết này với sự hỗ trợ từ AI. Tìm hiểu thêm