Bỏ qua để đến nội dung

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.

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”

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 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à percent nhân nó với 100. Qua API tài liệu, hãy gửi 0.12, không phải 12.
  • 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 đế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.

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ó.

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.

{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 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}

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.

Bạn có thể dùng {/} thay vì viết lại tên trường:

{#Line_Items}
{Product_Name} - {Price}
{/}

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}

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}

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 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.

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 > 1000 khớp với $1,250.00. Hãy viết số ở dạng thuần: 1000, không phải 1,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)".
  • sort xế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 where thì dòng phải thỏa mãn tất cả. Nhiều bộ lọc sort viế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.

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 items

Nế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.

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, horizontal bị bỏ qua kèm cảnh báo và vòng lặp lặp lại như bình thường.

Hiển thị hoặc ẩn nội dung dựa trên giá trị của trường.

Chỉ hiển thị nội dung khi trường có dữ liệu:

{#if Discount}
Discount applied: {Discount}
{/if}

Chỉ hiển thị nội dung khi trường rỗng:

{#if !Notes}
No additional notes.
{/if}
{#if Status == "Approved"}
This invoice has been approved.
{/if}
{#if Status != "Draft"}
This document has been submitted.
{/if}

>, >=, < 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 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 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

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} 捌万捌仟捌佰捌拾捌元整

Đị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 2026
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

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 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}

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.

  1. Chèn một ảnh bất kỳ vào mẫu Word (đây là ảnh giữ chỗ).
  2. Nhấp chuột phải vào ảnh → Edit Alt Text.
  3. Trong phần mô tả Alt Text, nhập {FieldName}.
  4. 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ỗ.

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ứ ba

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

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}

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.

{QR:FieldName}

Ví dụ: {QR:Order_ID} tạo mã QR chứa giá trị của Order_ID.

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.

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