Sách dạy nấu ăn biểu thức cho dòng đám mây

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')

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'))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')

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ề false0<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))

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&&/|| 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)
and(condA, condB)
HOẶC or(condA, condB)

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