Cú pháp mẫu
Biến là những biến giữ chỗ trong mẫu, sẽ được thay bằng dữ liệu của từng bản ghi: một hàng của bảng Excel, một mục danh sách SharePoint, một hàng Dataverse, một hàng của Google Sheet, một bản ghi Lark Base, hoặc JSON bạn gửi qua API tài liệu. Cú pháp vẫn như nhau, dù dữ liệu đến từ nguồn nào.
Cú pháp cơ bản
Phần tiêu đề “Cú pháp cơ bản”Dùng dấu ngoặc nhọn với tên trường chính xác:
{Field_Name}Ví dụ:
{Customer_Name}→ “Acme Corp”{Invoice_Date}→ “2024-01-15”{Total_Amount}→ “1,500.00”
Biến giữ chỗ in ra gì
Phần tiêu đề “Biến giữ chỗ in ra gì”Khi không có bộ lọc, biến giữ chỗ in giá trị đúng như nguồn dữ liệu hiển thị. Ngược lại, các bộ lọc số và ngày làm việc trên giá trị gốc bên dưới: xem Bộ lọc đọc giá trị gốc.
| Giá trị | Excel | Danh sách SharePoint | Dataverse | Google Sheets | Lark Base | API tài liệu |
|---|---|---|---|---|---|---|
| Số | Như ô hiển thị | 1,234.5, với số chữ số thập phân của cột |
Văn bản đã định dạng của Dataverse | Như ô hiển thị | Định dạng số của trường | Như khi gửi: 1234.5 |
| Tiền tệ | Như ô hiển thị | Thường theo đơn vị tiền tệ của cột: $1,234.50 |
Văn bản đã định dạng của Dataverse, kèm ký hiệu tiền tệ | Như ô hiển thị | Theo đơn vị tiền tệ của trường: $1,234.50 |
Như khi gửi |
| Phần trăm | Như ô hiển thị: 12% |
12% |
Dưới dạng số | Như ô hiển thị: 12% |
Trường Tiến độ, thường là: 12% |
Như khi gửi |
| Ngày, giờ | Như ô hiển thị | 2026/02/26, hoặc 2026/02/26 15:30 khi có giờ |
2026/02/26, hoặc 2026/02/26 15:30 khi có giờ |
Như ô hiển thị | Định dạng ngày của trường, mặc định 2026/02/26 |
Như khi gửi |
| Người | Văn bản | Tên | Một tra cứu in ra tên | Thẻ thông minh người: các tên | Tên | Như khi gửi |
| Liên kết | =HYPERLINK(…): địa chỉ |
Địa chỉ | Địa chỉ | Ô chỉ chứa một liên kết: địa chỉ | Địa chỉ | Như khi gửi |
| Lựa chọn | Văn bản | Nhãn; nhiều nhãn thì nối bằng dấu phẩy | Nhãn; nhiều nhãn thì nối bằng dấu phẩy | Tùy chọn; nhiều tùy chọn thì như ô hiển thị | Tùy chọn; nhiều tùy chọn thì nối bằng dấu phẩy | Như khi gửi; danh sách được nối bằng dấu phẩy |
| Có/không | true / false |
true / false |
Các nhãn riêng của cột, như Yes / No |
Hộp kiểm: true / false |
Hộp kiểm: true / false |
true / false |
| Hình ảnh, tệp | Cột hình ảnh | Cột hình ảnh và hình thu nhỏ, cùng {Attachments} của mục |
Cột hình ảnh và tệp, ghi chú | Thẻ thông minh tệp, liên kết tới tệp Drive, =IMAGE(…) |
Trường đính kèm | URL hình ảnh |
| Hàng liên kết | Bảng liên quan | Cột tra cứu | Tra cứu và quan hệ | Thẻ liên quan | Trường Liên kết và Lookup | Đối tượng và danh sách |
- Ngày từ SharePoint, Dataverse và Lark Base được in theo múi giờ của mẫu (Mẫu → Đầu ra → Múi giờ, hoặc UTC nếu chưa đặt).
- Ô hoặc trường trống không in gì, và được tính là rỗng trong
{#if}. - Hình ảnh và tệp không in ra dưới dạng văn bản. Hãy đặt chúng qua Alt Text của một hình ảnh (xem Hình ảnh động), hoặc thêm chúng vào PDF bằng
{ATTACH:…}. - Hàng liên kết được truy cập bằng cú pháp dấu chấm hoặc vòng lặp: xem Bản ghi liên kết.
- Liên kết và người có thuộc tính con, như
{Website.text}và{Owner.email}: xem Thuộc tính mở rộng của trường. - Lark Base: trường Công thức in theo kiểu kết quả của nó (văn bản, số hoặc ngày), trường Đánh giá thường in ra
4/5, và trường Lookup in ra các giá trị mà nó tra cứu.
Trang riêng của từng nguồn có thêm chi tiết: phần bổ trợ Excel, Danh sách SharePoint và Dataverse, tiện ích bổ sung Google Sheets và API tài liệu.
Bộ lọc đọc giá trị gốc
Phần tiêu đề “Bộ lọc đọc giá trị gốc”Bộ lọc số và ngày bỏ qua cách một giá trị được in ra và định dạng lại giá trị gốc bên dưới:
{Price} → "$1,234.50" (như nguồn hiển thị){Price | number:2} → "1,234.50" (số gốc, định dạng lại){Price | currency:"EUR":"de-DE"} → "1.234,50 €" (số gốc, locale Đức)
{Date} → "2026/02/26" (như nguồn hiển thị){Date | date:"DD MMM YYYY"} → "26 Feb 2026" (ngày gốc, định dạng lại)Giá trị gốc cũng là thứ mà sum, avg, max, min, where và sort dùng để so sánh. Giá trị đó là gì thì tùy theo nguồn:
| Nguồn | Số gốc | Ngày gốc |
|---|---|---|
| Excel | Giá trị của ô, bất kể định dạng số của nó | Ngày và giờ mà ô chứa, theo múi giờ của mẫu |
| Danh sách SharePoint | Số được lưu | Cột chỉ có ngày: ngày đó, theo múi giờ của mẫu. Cột ngày và giờ: thời điểm được lưu |
| Dataverse | Số được lưu | Cột chỉ có ngày hoặc cột không phụ thuộc múi giờ: ngày và giờ mà cột chứa, theo múi giờ của mẫu. Cột khác: thời điểm được lưu |
| Google Sheets | Giá trị bên dưới định dạng của ô | Ngày và giờ mà ô chứa, theo múi giờ của mẫu |
| Lark Base | Số của trường | Thời điểm được lưu |
| API tài liệu | Một số JSON, hoặc văn bản là một số thuần, như "1234.5" |
Văn bản như 2026-02-26 hoặc 2026-02-26 15:30, đọc theo múi giờ của mẫu. Văn bản có múi giờ, như 2026-02-26T15:30:00Z, đọc đúng như được viết. Một số, tính bằng mili giây kể từ ngày 1 tháng 1 năm 1970 (UTC) |
- Giá trị gốc của phần trăm là một phân số:
12%là0.12, vàpercentnhân nó với 100. Qua API tài liệu, hãy gửi0.12, không phải12. - Giá trị không có số gốc được in nguyên trạng, kèm một cảnh báo, khi áp dụng bộ lọc số. Điều này gồm văn bản có dấu phân cách như
"1,234.50", trường Đánh giá của Lark, và một trường Lookup của Lark chứa nhiều hơn một số. - Trong Excel và Google Sheets, ô chỉ chứa giờ hoặc khoảng thời gian là văn bản: nó được in như hiển thị và không phải là ngày.
- Sổ làm việc Excel dùng hệ ngày 1904 in ngày của nó đúng. Khi AutomaDoc đọc sổ làm việc đó từ OneDrive hoặc SharePoint (mẫu được gắn với tệp), các ngày gốc của nó sớm hơn bốn năm và một ngày.
Bản ghi liên kết (trường lồng nhau)
Phần tiêu đề “Bản ghi liên kết (trường lồng nhau)”Bản ghi liên kết đến từ một bảng liên quan (Excel), một cột tra cứu (SharePoint, Dataverse), một thẻ liên quan (Google Sheets), một trường liên kết (Lark Base) hoặc một đối tượng lồng nhau (API tài liệu). Truy cập trường của chúng bằng cú pháp dấu chấm:
{Customer.Name}{Customer.Address}{Customer.Email}Hỗ trợ lồng tối đa 5 cấp:
{Order.Customer.Company.Address.City}Thuộc tính mở rộng của trường (cú pháp dấu chấm)
Phần tiêu đề “Thuộc tính mở rộng của trường (cú pháp dấu chấm)”Liên kết và người cung cấp thuộc tính con qua cú pháp dấu chấm, một số loại trường của Lark Base cũng vậy. Nếu không dùng dấu chấm, chúng in ra giá trị mặc định.
Liên kết
Phần tiêu đề “Liên kết”Một liên kết từ ô =HYPERLINK(…) của Excel, cột siêu liên kết của SharePoint, ô Google Sheets chỉ chứa một liên kết, hoặc trường URL của Lark:
{Website} → "https://example.com" (địa chỉ){Website.text} → "Example Site" (chữ hiển thị){Website.link} → "https://example.com" (địa chỉ)Trong Google Sheets, ô có liên kết nằm giữa văn bản khác sẽ in ra văn bản đó. Trong Excel, liên kết thêm bằng Insert → Link in ra chữ hiển thị của nó.
Người
Phần tiêu đề “Người”Một người, từ cột người của SharePoint hoặc trường Created By hay Modified By của Lark:
{Owner} → "John Doe" (tên){Owner.name} → "John Doe"{Owner.email} → "john@example.com" (SharePoint){Owner.en_name} → "John Doe" (Lark Base: tên tiếng Anh){Owner.id} → ID của người đó trong nguồn; trong Lark Base là ID người dùng Lark như "ou_abc123"Ở nơi có thể chứa nhiều người, giá trị là một danh sách kể cả khi chỉ chứa một người, nên {Assignee.name} không trả về gì: trường User của Lark, ô Google Sheets chứa thẻ thông minh người, hoặc cột người của SharePoint cho phép nhiều người. Hãy dùng chỉ số để lấy một người cụ thể, hoặc vòng lặp để lấy tất cả:
{Assignee} → "John Doe, Jane Roe" (mọi tên){Assignee[0].name} → "John Doe" (người đầu tiên){Assignee[0].email} → "john@example.com" (SharePoint, Google Sheets)
{#Assignee} {name}{/Assignee}Trong Dataverse, người (chủ sở hữu, “người tạo”) là các cột tra cứu: {Owner} in ra tên, còn {Owner.Field} đọc một cột trong hàng của người đó, như với mọi bản ghi liên kết.
Trường vị trí (Lark Base)
Phần tiêu đề “Trường vị trí (Lark Base)”{Office} → "Headquarters, 123 Main St, City, Country"{Office.name} → "Headquarters"{Office.full_address} → "123 Main St, City, Country"{Office.address} → "123 Main St"Trường nhóm (Lark Base)
Phần tiêu đề “Trường nhóm (Lark Base)”Trường nhóm là danh sách nên {Team.name} không trả về gì. Hãy dùng chỉ số hoặc vòng lặp:
{Team} → "Engineering, Design" (tên các nhóm, phân tách bằng dấu phẩy){Team[0].name} → "Engineering" (nhóm đầu tiên){Team[0].id} → ID nhóm đầu tiênĐể lấy toàn bộ nhóm, hãy dùng vòng lặp:
{#Team} {name} (ID: {id}){/Team}Nhiều lựa chọn
Phần tiêu đề “Nhiều lựa chọn”Trường Chọn nhiều của Lark, cột lựa chọn hoặc siêu dữ liệu được quản lý của SharePoint có nhiều giá trị, cột lựa chọn nhiều của Dataverse, hoặc danh sách thả xuống chọn nhiều của Google Sheets đều có thể lặp qua, hoặc nối lại bằng dấu phân tách do bạn chọn:
{Tags} → "Red, Blue, Green" (mặc định phân tách bằng dấu phẩy){Tags | join:" / "} → "Red / Blue / Green"{#Tags} - {.}{/Tags}Qua API tài liệu, một danh sách giá trị đơn giản đến nơi đã được nối bằng dấu phẩy, nên {Tags} in ra Red, Blue, Green và không thể lặp qua. Để lặp, hãy gửi một danh sách đối tượng.
Vòng lặp (trường liên kết nhiều bản ghi)
Phần tiêu đề “Vòng lặp (trường liên kết nhiều bản ghi)”Với trường liên kết tới nhiều bản ghi, dùng cú pháp vòng lặp để lặp lại nội dung cho từng mục:
{#Line_Items} Product: {Product_Name} Quantity: {Quantity} Price: {Price}{/Line_Items}{#Field} mở vòng lặp, {/Field} đóng lại. Bên trong vòng lặp, viết tên trường mà không cần tiền tố của trường cha.
Thẻ đóng rút gọn
Phần tiêu đề “Thẻ đóng rút gọn”Bạn có thể dùng {/} thay vì viết lại tên trường:
{#Line_Items} {Product_Name} - {Price}{/}Mở rộng hàng bảng
Phần tiêu đề “Mở rộng hàng bảng”Khi thẻ vòng lặp được đặt trong một hàng của bảng, toàn bộ hàng sẽ được nhân bản cho mỗi mục, rất hợp cho bảng chi tiết.
| Product | Qty | Price |
|---|---|---|
{#Line_Items} {Product_Name} |
{Quantity} |
{Price} {/Line_Items} |
Mảng giá trị đơn giản
Phần tiêu đề “Mảng giá trị đơn giản”Với mảng chứa giá trị đơn giản (không phải đối tượng), dùng {.} để tham chiếu mục hiện tại:
{#Tags} {.}{/Tags}Siêu dữ liệu vòng lặp
Phần tiêu đề “Siêu dữ liệu vòng lặp”Bên trong bất kỳ vòng lặp nào, các biến đặc biệt sau đều khả dụng:
| Biến | Mô tả | Ví dụ |
|---|---|---|
{$index} |
Chỉ số hiện tại (bắt đầu từ 0) | 0, 1, 2, … |
{$num} |
Số thứ tự hàng (bắt đầu từ 1) | 1, 2, 3, … |
{$first} |
true ở mục đầu tiên |
In ra true / false |
{$last} |
true ở mục cuối cùng |
In ra true / false |
Vòng lặp lồng nhau
Phần tiêu đề “Vòng lặp lồng nhau”Vòng lặp có thể lồng nhau. Vòng lặp bên trong vẫn truy cập được trường ở phạm vi bên ngoài:
{#Departments} Department: {Name} {#Employees} {Name} works in {Department.Name} {/Employees}{/Departments}Nếu một tên trường tồn tại ở cả phạm vi trong và ngoài, phạm vi bên trong được ưu tiên.
Lọc, sắp xếp và giới hạn dòng
Phần tiêu đề “Lọc, sắp xếp và giới hạn dòng”Thêm bộ lọc vào thẻ mở của vòng lặp để chọn những dòng nào được lặp lại, và theo thứ tự nào:
{#Line_Items | where:"Status == 'Approved'" | sort:"Amount":"desc" | limit:10} {Product_Name} {Amount | currency:"USD"}{/Line_Items}| Bộ lọc | Tác dụng | Ví dụ |
|---|---|---|
where |
Chỉ giữ lại các dòng thỏa mãn một điều kiện | where:"Status == 'Approved'" |
sort |
Sắp xếp các dòng theo một trường, nhỏ nhất hoặc sớm nhất trước | sort:"Due_Date" |
sort |
… hoặc lớn nhất hoặc muộn nhất trước | sort:"Amount":"desc" |
limit |
Giữ lại các dòng đầu tiên | limit:10 |
offset |
Bỏ qua các dòng đầu tiên | offset:10 |
unique |
Giữ lại dòng đầu tiên cho mỗi giá trị của một trường | unique:"Customer" |
Bộ lọc được áp dụng từ trái sang phải, theo thứ tự bạn viết: sort:"Amount":"desc" | limit:3 là ba dòng lớn nhất, còn limit:3 | sort:"Amount":"desc" là ba dòng đầu tiên, xếp từ lớn nhất.
Điều kiện where đặt bên trong dấu ngoặc kép, còn mọi giá trị văn bản đặt trong dấu nháy đơn:
| Điều kiện | Giữ lại các dòng mà |
|---|---|
Status == 'Approved' |
Status đúng bằng Approved |
Status != 'Draft' |
Status là bất kỳ giá trị nào ngoài Draft |
Amount > 1000 |
Amount lớn hơn 1000 (dùng được cả >=, <, <=) |
Paid |
Paid có giá trị, như trong {#if Paid} |
!Notes |
Notes rỗng |
- Số được so sánh theo giá trị gốc, không theo cách chúng được in ra:
Amount > 1000khớp với$1,250.00. Hãy viết số ở dạng thuần:1000, không phải1,000. - Ngày được so sánh như ngày khi bạn viết dưới dạng
2026-01-31(hoặc kèm giờ,2026-01-31 17:30), theo múi giờ của mẫu:where:"Due_Date >= '2026-01-01'". So sánh tính theo trọn ngày:Due_Date > '2026-01-31'bắt đầu từ ngày 1 tháng 2. - Nối các điều kiện bằng
&&(và) và||(hoặc), rồi nhóm chúng bằng dấu ngoặc đơn:where:"Status == 'Approved' && (Amount > 1000 || Rush)". sortxếp ngày theo thứ tự thời gian, số theo thứ tự giá trị và văn bản theo thứ tự chữ cái. Ô trống luôn được xếp cuối cùng.- Nhiều bộ lọc
wherethì dòng phải thỏa mãn tất cả. Nhiều bộ lọcsortviết liền nhau sẽ sắp xếp theo bộ lọc đầu tiên, rồi theo bộ lọc tiếp theo khi bộ lọc đầu cho giá trị bằng nhau:sort:"Category" | sort:"Amount":"desc". - Trường của bản ghi liên kết dùng được với cú pháp dấu chấm:
where:"Product.Category == 'Hardware'". - Với danh sách giá trị đơn giản, chẳng hạn trường chọn nhiều, dùng
.để chỉ chính giá trị đó:{#Tags | where:". != 'Internal'" | sort}. - Bộ lọc hoạt động như nhau trong vòng lặp hàng bảng, vòng lặp đoạn văn, vòng lặp lồng nhau và danh sách chi tiết của Lark Approval.
Tổng khớp với bảng đã lọc
Phần tiêu đề “Tổng khớp với bảng đã lọc”sum, count và join nhận cùng các bộ lọc đó, nên một tổng có thể cộng đúng những dòng mà bảng phía trên hiển thị:
{Line_Items | where:"Status == 'Approved'" | sum:"Amount" | currency:"USD"}{Line_Items | where:"Status == 'Approved'" | count} approved itemsNếu không áp dụng được bộ lọc trong một tổng, tổng sẽ để trống kèm cảnh báo, thay vì cộng tất cả các dòng.
Vòng lặp ngang (cột)
Phần tiêu đề “Vòng lặp ngang (cột)”Thêm horizontal vào một vòng lặp nằm trong bảng để lặp các ô của nó theo chiều ngang, mỗi mục một cột, thay vì lặp hàng xuống dưới:
| Nhãn | Lặp theo chiều ngang |
|---|---|
| Name | {#Staff | horizontal} {Name} |
| Role | {Role} {/Staff} |
Với ba người, bảng sẽ có một cột cho mỗi người. Mọi hàng nằm giữa thẻ mở và thẻ đóng được lặp cùng nhau, nên tên và vai trò của mỗi người nằm trong cùng một cột.
- Các cột mới chia đều độ rộng của ô trong mẫu, và giữ nguyên đường viền cùng tô nền của ô đó.
- Kết hợp được với các bộ lọc khác:
{#Staff | where:"Active" | sort:"Name" | horizontal}. - Tối đa 20 cột. Các mục vượt quá sẽ bị bỏ qua, kèm cảnh báo.
- Nếu danh sách rỗng, ô được để trống chứ không bị xóa.
- Vòng lặp ngang có thể nằm trong một vòng lặp hàng: khi đó mỗi hàng có số cột bằng số mục trong danh sách của chính hàng đó.
- Bên ngoài bảng,
horizontalbị bỏ qua kèm cảnh báo và vòng lặp lặp lại như bình thường.
Nội dung có điều kiện
Phần tiêu đề “Nội dung có điều kiện”Hiển thị hoặc ẩn nội dung dựa trên giá trị của trường.
Kiểm tra có giá trị
Phần tiêu đề “Kiểm tra có giá trị”Chỉ hiển thị nội dung khi trường có dữ liệu:
{#if Discount} Discount applied: {Discount}{/if}Kiểm tra rỗng (phủ định)
Phần tiêu đề “Kiểm tra rỗng (phủ định)”Chỉ hiển thị nội dung khi trường rỗng:
{#if !Notes} No additional notes.{/if}So sánh bằng
Phần tiêu đề “So sánh bằng”{#if Status == "Approved"} This invoice has been approved.{/if}So sánh khác
Phần tiêu đề “So sánh khác”{#if Status != "Draft"} This document has been submitted.{/if}So sánh số và ngày
Phần tiêu đề “So sánh số và ngày”>, >=, < và <= so sánh số theo giá trị và so sánh ngày như ngày (viết dạng 2026-01-31, theo múi giờ của mẫu):
{#if Amount > 1000} Requires a second approval.{/if}
{#if Due_Date < "2026-01-01"} Overdue.{/if}Trong {#if}, == và != so sánh văn bản đúng như khi được in ra: {#if Qty == "2"} không khớp với số lượng hiển thị là 2.00. Trong bộ lọc where hoặc phần {#Qty == 2}…{/}, chúng còn khớp với cùng một số hoặc cùng một ngày.
Bộ lọc
Phần tiêu đề “Bộ lọc”Bộ lọc thay đổi cách hiển thị giá trị, dùng cú pháp dấu gạch đứng (|):
{Field | filterName}{Field | filterName:"arg1":"arg2"}Bộ lọc được áp dụng sau khi lấy giá trị và trước khi chèn vào tài liệu. Khi không có bộ lọc, giá trị được in ra đúng như nguồn hiển thị (xem Biến giữ chỗ in ra gì).
Bộ lọc chuỗi
Phần tiêu đề “Bộ lọc chuỗi”| Bộ lọc | Mô tả | Ví dụ | Kết quả |
|---|---|---|---|
upper |
Viết hoa toàn bộ | {Name | upper} |
ACME CORP |
lower |
Viết thường toàn bộ | {Name | lower} |
acme corp |
capitalize |
Viết hoa chữ cái đầu mỗi từ | {Name | capitalize} |
Acme Corp |
trim |
Bỏ khoảng trắng đầu/cuối | {Name | trim} |
Acme Corp |
truncate |
Cắt bớt theo độ dài (mặc định 50) | {Description | truncate:16} |
Lorem ipsum dolo... |
pad |
Đệm bằng ký tự (mặc định 0) |
{$num | pad:3} |
001 |
Bộ lọc số
Phần tiêu đề “Bộ lọc số”number, currency và percent nhận thêm tham số locale tùy chọn để định dạng theo khu vực:
| Bộ lọc | Tham số | Ví dụ | Kết quả |
|---|---|---|---|
number |
số thập phân, locale | {Price | number:2} |
1,234.50 |
number |
số thập phân, locale | {Price | number:2:"de-DE"} |
1.234,50 |
currency |
mã tiền tệ, locale | {Price | currency:"USD"} |
$1,234.50 |
currency |
mã tiền tệ, locale | {Price | currency:"EUR":"de-DE"} |
1.234,50 € |
currency |
mã tiền tệ, locale | {Price | currency:"JPY":"ja-JP"} |
¥1,235 |
currency |
mã tiền tệ, locale, số thập phân | {Price | currency:"IDR":"id-ID":2} |
Rp 1.234,50 |
percent |
số thập phân, locale | {Rate | percent:1} |
45.6% |
percent |
số thập phân, locale | {Rate | percent:1:"de-DE"} |
45,6 % |
toFixed |
số thập phân | {Price | toFixed:2} |
1234.50 (không có dấu phân cách hàng nghìn) |
chineseUppercase |
Không có | {Amount | chineseUppercase} |
捌万捌仟捌佰捌拾捌 |
chineseLowercase |
Không có | {Amount | chineseLowercase} |
八八八八八 |
chineseFinancial |
Không có | {Amount | chineseFinancial} |
捌万捌仟捌佰捌拾捌元整 |
Bộ lọc ngày
Phần tiêu đề “Bộ lọc ngày”Định dạng ngày theo mẫu riêng, khi định dạng của ngày trong dữ liệu của bạn không phải định dạng bạn cần.
Cú pháp: {Field | date:"format":"timezone":"locale"}
Mọi tham số đều tùy chọn. Múi giờ mặc định là múi giờ của mẫu (Mẫu → Đầu ra → Múi giờ), hoặc UTC nếu chưa đặt; locale mặc định là en-US. Ngày gửi dưới dạng văn bản không có múi giờ, như 2026-01-31 từ API tài liệu hoặc biểu mẫu Lark Approval, được in đúng ngày đó bất kể múi giờ.
| Bộ lọc | Tham số | Ví dụ | Kết quả |
|---|---|---|---|
date |
định dạng, múi giờ, locale | {Date | date:"DD MMM YYYY"} |
26 Feb 2026 |
date |
định dạng, múi giờ, locale | {Date | date:"dddd, DD MMMM YYYY"} |
Thursday, 26 February 2026 |
date |
định dạng, múi giờ, locale | {Date | date:"DD MMMM YYYY":"UTC":"fr-FR"} |
26 février 2026 |
date |
định dạng, múi giờ, locale | {Date | date:"dddd, DD MMMM YYYY":"UTC":"de-DE"} |
Donnerstag, 26 Februar 2026 |
Các ký hiệu ngày được hỗ trợ:
| Ký hiệu | Kết quả | Ví dụ |
|---|---|---|
YYYY |
Năm 4 chữ số | 2026 |
MMMM |
Tên tháng đầy đủ (theo locale) | February, février, Februar |
MMM |
Tên tháng viết tắt (theo locale) | Feb, févr., Feb |
MM |
Tháng 2 chữ số | 02 |
dddd |
Tên thứ đầy đủ (theo locale) | Thursday, Donnerstag, 木曜日 |
ddd |
Tên thứ viết tắt (theo locale) | Thu, Do, 木 |
DD |
Ngày 2 chữ số | 26 |
HH |
Giờ định dạng 24h | 15 |
mm |
Phút | 30 |
ss |
Giây | 00 |
Ví dụ:
{Invoice_Date | date:"DD MMM YYYY"} → 26 Feb 2026{Invoice_Date | date:"YYYY-MM-DD"} → 2026-02-26{Invoice_Date | date:"MM/DD/YYYY"} → 02/26/2026{Invoice_Date | date:"DD/MM/YYYY":"Asia/Tokyo"} → 26/02/2026 (múi giờ Tokyo){Invoice_Date | date:"dddd, DD MMMM YYYY":"UTC":"ja-JP"} → 木曜日, 26 2月 2026{Invoice_Date | date:"DD MMMM YYYY":"UTC":"id-ID"} → 26 Februari 2026Bộ lọc khác
Phần tiêu đề “Bộ lọc khác”| Bộ lọc | Mô tả | Ví dụ | Kết quả |
|---|---|---|---|
join |
Nối các giá trị mảng (mặc định , ) |
{Tags | join:" / "} |
Red / Blue / Green |
join |
Nối một trường của mỗi dòng, bỏ qua các giá trị trống | {Items | join:", ":"Name"} |
Widget, Gadget |
sum |
Cộng một trường trên tất cả các dòng của vòng lặp | {Items | sum:"Price"} |
1234.5 |
sum |
Tổng, được định dạng bởi bộ lọc tiếp theo | {Items | sum:"Price" | currency:"USD"} |
$1,234.50 |
count |
Số dòng của vòng lặp | {Items | count} |
12 |
avg |
Trung bình của một trường trên các dòng (bỏ qua ô trống) | {Items | avg:"Price"} |
411.5 |
max / min |
Giá trị lớn nhất / nhỏ nhất của một trường trên các dòng | {Items | max:"Price"} |
$980.00 |
default |
Giá trị thay thế khi rỗng | {Phone | default:"N/A"} |
N/A |
Nối chuỗi bộ lọc
Phần tiêu đề “Nối chuỗi bộ lọc”Có thể nối nhiều bộ lọc bằng dấu gạch đứng, áp dụng từ trái sang phải:
{Name | trim | upper} → " hello " thành "HELLO"{$num | pad:3} → 1 thành "001"{Phone | default:"N/A" | upper} → null thành "N/A"Bộ lọc trong vòng lặp
Phần tiêu đề “Bộ lọc trong vòng lặp”Bộ lọc cũng dùng được với biến vòng lặp và tham chiếu mục hiện tại:
{#Items} #{$num | pad:3} - {Name | upper}{/Items}
{#Tags}{. | capitalize}, {/Tags}Hình ảnh động
Phần tiêu đề “Hình ảnh động”Thay ảnh giữ chỗ bằng một hình ảnh từ dữ liệu của bạn: một cột hình ảnh của bảng Excel hoặc danh sách SharePoint, một cột hình ảnh Dataverse, một thẻ thông minh tệp hoặc ô =IMAGE(…) trong Google Sheets, một trường đính kèm của Lark, hoặc một URL hình ảnh gửi tới API tài liệu. Bảng ở trên liệt kê những gì mỗi nguồn cung cấp.
- Chèn một ảnh bất kỳ vào mẫu Word (đây là ảnh giữ chỗ).
- Nhấp chuột phải vào ảnh → Edit Alt Text.
- Trong phần mô tả Alt Text, nhập
{FieldName}. - Lưu mẫu lại.
Ảnh giữ chỗ sẽ được thay bằng hình ảnh từ trường đó, giữ nguyên kích thước của ảnh giữ chỗ.
Nhiều ảnh
Phần tiêu đề “Nhiều ảnh”Với trường có nhiều tệp đính kèm, dùng cú pháp chỉ số:
{Photo} → Ảnh đầu tiên (giống {Photo[0]}){Photo[1]} → Ảnh thứ hai{Photo[2]} → Ảnh thứ baLặp qua toàn bộ ảnh
Phần tiêu đề “Lặp qua toàn bộ ảnh”Với trường có số lượng tệp đính kèm thay đổi, dùng cú pháp vòng lặp với {.} làm alt text. Mỗi tệp đính kèm sẽ nhân ra một bản sao của ảnh giữ chỗ:
{#Product_Photos} [ảnh có alt text: {.}]{/Product_Photos}Trong bảng, mỗi tệp đính kèm chiếm một hàng riêng:
| # | Photo | Filename |
|---|---|---|
{#Product_Photos} {$num} |
alt ảnh: {.} |
{name} {/Product_Photos} |
Các thuộc tính khả dụng bên trong vòng lặp:
| Biến | Mô tả | Ví dụ |
|---|---|---|
{name} |
Tên tệp | photo1.jpg |
{type} |
Kiểu MIME | image/jpeg |
{size} |
Dung lượng tệp (byte) | 204800 |
Ảnh trong vòng lặp bản ghi liên kết
Phần tiêu đề “Ảnh trong vòng lặp bản ghi liên kết”Biến giữ chỗ ảnh cũng hoạt động bên trong vòng lặp. Mỗi vòng lặp sẽ lấy đúng ảnh của mục đó:
{#Employees} Name: {Name} Photo: [ảnh có alt text: {Photo}]{/Employees}Mã QR và mã vạch
Phần tiêu đề “Mã QR và mã vạch”Tạo mã QR và mã vạch từ giá trị của trường. Cách thiết lập giống hình ảnh động: thông qua Alt Text của ảnh.
Mã QR
Phần tiêu đề “Mã QR”{QR:FieldName}Ví dụ: {QR:Order_ID} tạo mã QR chứa giá trị của Order_ID.
Mã vạch
Phần tiêu đề “Mã vạch”| Cú pháp | Loại | Ghi chú |
|---|---|---|
{BARCODE:FieldName} |
Code128 | Mặc định, chữ và số |
{BARCODE128:FieldName} |
Code128 | Chỉ định rõ Code128 |
{BARCODE39:FieldName} |
Code39 | Chỉ chữ hoa và chữ số |
{BARCODEEAN13:FieldName} |
EAN-13 | Mã sản phẩm bán lẻ 13 chữ số |
{BARCODEEAN8:FieldName} |
EAN-8 | EAN rút gọn 8 chữ số |
{BARCODEUPCA:FieldName} |
UPC-A | Bán lẻ Bắc Mỹ 12 chữ số |
{BARCODEUPCE:FieldName} |
UPC-E | UPC nén |
{BARCODEITF14:FieldName} |
ITF-14 | Mã vận chuyển / thùng hàng |
{BARCODEDATAMATRIX:FieldName} |
DataMatrix | Mã 2D, mật độ cao |
{BARCODEPDF417:FieldName} |
PDF417 | Mã 2D, tuyến tính xếp chồng |
Tiền tố không phân biệt hoa thường: {qr:Field} và {QR:Field} đều hoạt động.
Đầu trang và chân trang
Phần tiêu đề “Đầu trang và chân trang”Toàn bộ cú pháp biến giữ chỗ cũng hoạt động ở đầu trang và chân trang, giống như trong phần thân tài liệu.
Các cách dùng phổ biến:
- Tên công ty hoặc logo ở đầu trang
- Số hiệu tài liệu hoặc ngày tháng ở chân trang
- Nhãn động như
Invoice for {Customer_Name}
Cách thêm: Insert → Header/Footer → Edit → nhập biến giữ chỗ như {Field_Name}.
Chuyển từ một ứng dụng tài liệu Lark khác
Phần tiêu đề “Chuyển từ một ứng dụng tài liệu Lark khác”Mẫu được viết cho một ứng dụng tài liệu Lark khác vẫn dùng được ở đây mà không cần sửa: cứ tải tệp Word lên nguyên trạng. Cú pháp của chúng hoạt động trong AutomaDoc như sau:
| Cách viết | Tác dụng ở đây |
|---|---|
{#isNew} Welcome {/isNew} |
Hiển thị văn bản khi trường có giá trị. Với một danh sách, đây là vòng lặp |
{#!isNew}Welcome{/isNew} |
Hiển thị văn bản khi trường rỗng, chưa được đánh dấu hoặc là danh sách rỗng |
{#Status=="Paid"}…{/} |
Hiển thị văn bản khi điều kiện đúng. !=, >, >=, <, <=, && và || cũng dùng được |
{/} |
Đóng vòng lặp hoặc phần đang mở gần nhất |
{$index+1} |
Số thứ tự dòng, bắt đầu từ 1, giống {$num} |
{#Items | sortBy:"Total":"desc"} |
Giống sort |
{#Items | where:"A == 'x' && B > 5"} |
Giữ lại các dòng khớp điều kiện, như trong Lọc, sắp xếp và giới hạn dòng |
{>Items}{Name} ở đầu một hàng bảng |
Lặp ô đó và các ô bên phải nó theo chiều ngang của hàng, mỗi mục một cột, tức là một vòng lặp ngang |
{#image}{#$isImage}{%src}{/}{#!$isImage}{$fileName}{/}{/image} |
In từng ảnh của trường đính kèm, và tên của từng tệp không phải là ảnh |
{%src | size:100:50} / {%src | maxSize:500:500} |
Ảnh có đúng kích thước đó, hoặc không lớn hơn kích thước đó, tính bằng pixel |
{%Logo} |
Ảnh đầu tiên của trường đính kèm, theo kích thước gốc, tối đa bằng chiều rộng trang |
{Name | uppercase} / {Name | lowercase} |
Giống upper / lower |
{Price | toFixed:"2"} |
Số có hai chữ số thập phân, không có dấu phân cách hàng nghìn |
{Price | currency:'USD'} |
Đối số trong dấu nháy đơn hoạt động giống như trong dấu nháy kép |
{Date | customDate:'YYYY-MM-DD HH:mm:ss'} |
Cùng các ký hiệu như date, theo múi giờ của mẫu |
{Date | date:'full'} |
2024-7-13 Saturday 00:00:00 |
chineseUppercase, chineseLowercase, chineseFinancial |
Số viết bằng tiếng Trung, xem Bộ lọc số |
Tra cứu nhanh
Phần tiêu đề “Tra cứu nhanh”| Cú pháp | Mô tả |
|---|---|
{Field} |
Biến đơn giản |
{Field.Nested} |
Trường của bản ghi liên kết (cú pháp dấu chấm) |
{Link.text} / {Link.link} |
Thuộc tính con của liên kết |
{Owner.name} / .email / .id |
Thuộc tính con của một người (.en_name trong Lark Base) |
{Assignee[0].name} |
Nhiều người: là danh sách, nên dùng chỉ số hoặc vòng lặp |
{Location.name} / {Location.full_address} |
Thuộc tính con của trường vị trí Lark Base |
{Team[0].name} / {Team[0].id} |
Trường nhóm của Lark Base: là danh sách, nên dùng chỉ số hoặc vòng lặp |
{#Field}...{/Field} |
Lặp qua trường nhiều giá trị |
{#Field | where:"Status == 'Paid'"} |
Chỉ lặp qua các dòng khớp điều kiện |
{#Field | sort:"Amount":"desc"} |
Lặp theo thứ tự, lớn nhất trước |
{#Field | limit:5} / {#Field | offset:5} |
5 dòng đầu / tất cả trừ 5 dòng đầu |
{#Field | horizontal} |
Lặp các ô bảng theo chiều ngang, mỗi dòng một cột |
{Field | where:"Paid" | sum:"Amount"} |
Tổng của các dòng khớp điều kiện |
{Field | count} |
Số dòng |
{Field | avg:"Amount"} / max / min |
Trung bình, lớn nhất, nhỏ nhất của các dòng |
{#Field == "v"}...{/} |
Phần hiển thị khi điều kiện đúng |
{#!Field}...{/Field} |
Phần hiển thị khi trường rỗng |
{#if Field > 100}...{/if} |
Điều kiện (thứ tự số hoặc ngày) |
{/} |
Thẻ đóng rút gọn (đóng vòng lặp gần nhất) |
{.} |
Mục hiện tại trong vòng lặp (mảng đơn giản) |
{$index} |
Chỉ số vòng lặp (từ 0) |
{$num} |
Số thứ tự hàng (từ 1) |
{$first} / {$last} |
Boolean mục đầu/cuối |
{#if Field}...{/if} |
Điều kiện (có giá trị) |
{#if !Field}...{/if} |
Điều kiện (rỗng) |
{#if Field == "val"}...{/if} |
Điều kiện (bằng) |
{#if Field != "val"}...{/if} |
Điều kiện (khác) |
{Field | upper} |
Bộ lọc: viết hoa |
{Field | lower} |
Bộ lọc: viết thường |
{Field | capitalize} |
Bộ lọc: hoa chữ cái đầu mỗi từ |
{Field | trim} |
Bộ lọc: bỏ khoảng trắng |
{Field | truncate:30} |
Bộ lọc: cắt bớt kèm dấu ba chấm |
{Field | pad:3} |
Bộ lọc: đệm số 0 |
{Field | number:2} |
Bộ lọc: số với phần thập phân |
{Field | number:2:"de-DE"} |
Bộ lọc: số theo locale |
{Field | currency:"USD"} |
Bộ lọc: định dạng tiền tệ |
{Field | currency:"EUR":"de-DE"} |
Bộ lọc: tiền tệ theo locale |
{Field | percent:1} |
Bộ lọc: phần trăm |
{Field | date:"DD MMM YYYY"} |
Bộ lọc: định dạng ngày tùy chỉnh |
{Field | date:"dddd, MMMM DD":"UTC":"fr-FR"} |
Bộ lọc: ngày theo locale |
{Field | join:" / "} |
Bộ lọc: nối mảng bằng dấu phân tách |
{Field | default:"N/A"} |
Bộ lọc: giá trị thay thế |
{Field | trim | upper} |
Nối bộ lọc (trái sang phải) |
{Photo} / {Photo[1]} |
Hình ảnh (qua Alt Text) |
{QR:Field} |
Mã QR (qua Alt Text) |
{BARCODE:Field} |
Mã vạch (qua Alt Text) |