跳转到内容

模板语法

变量是模板中的占位符,生成时会被每条记录中的数据替换:Excel 表格的一行、SharePoint 列表的一项、Dataverse 的一行、Google 工作表的一行、飞书多维表格的一条记录,或您通过文档 API 发送的 JSON。无论数据来自哪里,语法都相同。

用大括号包住准确的字段名:

{Field_Name}

示例:

  • {Customer_Name} → “Acme Corp”
  • {Invoice_Date} → “2024-01-15”
  • {Total_Amount} → “1,500.00”

不使用过滤器时,占位符按数据来源显示的样子输出值。数字和日期过滤器则作用于其底层的原始值,参见过滤器读取原始值。

值 Excel SharePoint 列表 Dataverse Google Sheets 飞书多维表格 文档 API
数字 按单元格的显示 1,234.5,按该列的小数位数 Dataverse 格式化后的文本 按单元格的显示 按字段的数字格式 按发送的原样:1234.5
货币 按单元格的显示 通常按该列的货币:$1,234.50 Dataverse 格式化后的文本,带货币符号 按单元格的显示 按字段的货币:$1,234.50 按发送的原样
百分比 按单元格的显示:12% 12% 输出为数字 按单元格的显示:12% 进度字段,通常为:12% 按发送的原样
日期、时间 按单元格的显示 2026/02/26,带时间时为 2026/02/26 15:30 2026/02/26,带时间时为 2026/02/26 15:30 按单元格的显示 按字段的日期格式,默认为 2026/02/26 按发送的原样
人员 文本 姓名 输出姓名的查阅列 人员智能条状标签:姓名 姓名 按发送的原样
链接 =HYPERLINK(…):链接地址 链接地址 链接地址 只含一个链接的单元格:链接地址 链接地址 按发送的原样
选项 文本 标签;多个时用逗号连接 标签;多个时用逗号连接 所选选项;多个时按单元格的显示 选项;多个时用逗号连接 按发送的原样;列表用逗号连接
是/否 true / false true / false 该列自己的标签,例如 Yes / No 复选框:true / false 复选框:true / false true / false
图片、文件 图片列 图片列和图像列,以及列表项的 {Attachments} 图像列和文件列、备注 文件智能条状标签、Google Drive 文件的链接、=IMAGE(…) 附件字段 图片 URL
关联的行 关联表格 查阅列 查阅和关系 关联工作表 关联字段和查找引用字段 对象和列表
  • 来自 SharePoint、Dataverse 和飞书多维表格的日期按模板的时区输出(模板 → 输出 → 时区,未设置时为 UTC)。
  • 空的单元格或字段不输出任何内容,在 {#if} 中视为空。
  • 图片和文件不会作为文字输出。请通过图片的替代文字放置它们(参见动态图片),或用 {ATTACH:…} 把它们添加到 PDF 中。
  • 关联的行用点号语法或循环访问,参见关联记录。
  • 链接和人员有子属性,例如 {Website.text} 和 {Owner.email},参见字段的扩展属性。
  • 飞书多维表格:公式字段按其结果类型(文本、数字或日期)输出,评分字段通常输出 4/5,查找引用字段输出其引用到的值。

各数据来源自己的页面有更多细节:Excel 加载项、SharePoint 列表和 Dataverse、Google Sheets 插件和文档 API。

数字和日期过滤器不管值如何显示,而是把底层的原始值重新格式化:

{Price} → "$1,234.50" (按数据来源的显示)
{Price | number:2} → "1,234.50" (原始数字,重新格式化)
{Price | currency:"EUR":"de-DE"} → "1.234,50 €" (原始数字,德语区格式)
{Date} → "2026/02/26" (按数据来源的显示)
{Date | date:"DD MMM YYYY"} → "26 Feb 2026" (原始日期,重新格式化)

sum、avg、max、min、where 和 sort 比较的也是原始值。原始值是什么,取决于数据来源:

数据来源 原始数字 原始日期
Excel 单元格的值,与其数字格式无关 单元格中的日期和时间,按模板的时区
SharePoint 列表 存储的数字 仅日期的列:那一天,按模板的时区。日期和时间列:存储的时刻
Dataverse 存储的数字 仅日期或与时区无关的列:其中的日期和时间,按模板的时区。其他列:存储的时刻
Google Sheets 单元格格式之下的值 单元格中的日期和时间,按模板的时区
飞书多维表格 字段的数字 存储的时刻
文档 API JSON 数字,或纯数字的文本,例如 "1234.5" 文本,例如 2026-02-26 或 2026-02-26 15:30,按模板的时区读取。带时区的文本,例如 2026-02-26T15:30:00Z,按写明的时区读取。数字按自 1970 年 1 月 1 日(UTC)起的毫秒数读取
  • 百分比的原始值是小数:12% 即 0.12,percent 会将其乘以 100。通过文档 API 时,请发送 0.12,而不是 12。
  • 对没有原始数字的值应用数字过滤器时,会按原样输出并给出警告。这包括带分隔符的文本(例如 "1,234.50")、飞书评分字段,以及引用了多个数字的飞书查找引用字段。
  • 在 Excel 和 Google Sheets 中,只含时间或时长的单元格是文本:按显示内容输出,不视为日期。
  • 设置为 1904 日期系统的 Excel 工作簿,日期会正确输出。当 AutomaDoc 从 OneDrive 或 SharePoint 读取它时(模板绑定到该文件),其原始日期会提前四年零一天。

关联记录来自关联表格(Excel)、查阅列(SharePoint、Dataverse)、关联工作表(Google Sheets)、关联字段(飞书多维表格)或嵌套对象(文档 API)。使用点号语法访问它们的字段:

{Customer.Name}
{Customer.Address}
{Customer.Email}

最多支持 5 层嵌套:

{Order.Customer.Company.Address.City}

链接和人员可以通过点号语法访问子属性,部分飞书多维表格字段类型也可以。不使用点号时,它们会输出默认值。

来自 Excel 的 =HYPERLINK(…) 单元格、SharePoint 超链接列、只含一个链接的 Google Sheets 单元格,或飞书的链接字段:

{Website} → "https://example.com" (链接地址)
{Website.text} → "Example Site" (显示的文字)
{Website.link} → "https://example.com" (链接地址)

在 Google Sheets 中,链接嵌在其他文字中的单元格会输出那段文字。在 Excel 中,用插入 → 链接添加的链接会输出其显示的文字。

单个人员,来自 SharePoint 的个人列,或飞书的创建人或修改人字段:

{Owner} → "John Doe" (姓名)
{Owner.name} → "John Doe"
{Owner.email} → "john@example.com" (SharePoint)
{Owner.en_name} → "John Doe" (飞书多维表格:英文名)
{Owner.id} → 此人在数据来源中的 ID;在飞书多维表格中为飞书用户 ID,例如 "ou_abc123"

可以容纳多人的地方,值都是列表,即使只有一个人也是如此,因此 {Assignee.name} 取不到值:飞书的人员字段、含人员智能条状标签的 Google Sheets 单元格,或允许多人的 SharePoint 个人列。请改用下标取某个人,或用循环列出所有人:

{Assignee} → "John Doe, Jane Roe" (所有姓名)
{Assignee[0].name} → "John Doe" (第一个人)
{Assignee[0].email} → "john@example.com" (SharePoint、Google Sheets)
{#Assignee}
{name}
{/Assignee}

在 Dataverse 中,人员(所有者、创建者)是查阅列:{Owner} 输出姓名,{Owner.Field} 读取此人所在行的某一列,与任何关联记录一样。

地理位置字段(飞书多维表格)

Section titled “地理位置字段(飞书多维表格)”
{Office} → "Headquarters, 123 Main St, City, Country"
{Office.name} → "Headquarters"
{Office.full_address} → "123 Main St, City, Country"
{Office.address} → "123 Main St"

群组字段是列表,{Team.name} 取不到值,请改用下标或循环:

{Team} → "Engineering, Design" (逗号分隔的群组名)
{Team[0].name} → 第一个群组名
{Team[0].id} → 第一个群组 ID

遍历全部群组请使用循环:

{#Team}
{name} (ID: {id})
{/Team}

飞书的多选字段、含多个值的 SharePoint 选项列或托管元数据列、Dataverse 的多选选项或 Google Sheets 的多选下拉列表,都可以循环遍历,也可以用您自己的分隔符连接:

{Tags} → "Red, Blue, Green" (默认逗号分隔)
{Tags | join:" / "} → "Red / Blue / Green"
{#Tags}
- {.}
{/Tags}

通过文档 API 发送时,普通值列表到达时已用逗号连接,因此 {Tags} 输出 Red, Blue, Green,无法循环。要循环,请发送对象列表。

对于关联多条记录的字段,使用循环语法为每一项重复内容:

{#Line_Items}
Product: {Product_Name}
Quantity: {Quantity}
Price: {Price}
{/Line_Items}

{#Field} 开始循环,{/Field} 结束循环。循环内部引用字段时不需要加上父级前缀。

可以用 {/} 代替重复写字段名:

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

当循环标签放在表格行内时,整行会为每一项复制一次,非常适合明细表:

Product Qty Price
{#Line_Items} {Product_Name} {Quantity} {Price} {/Line_Items}

对于简单值(而非对象)组成的数组,用 {.} 引用当前项:

{#Tags}
{.}
{/Tags}

在任意循环内部,可以使用以下特殊变量:

变量 说明 示例
{$index} 当前索引(从 0 开始) 0、1、2 ……
{$num} 行号(从 1 开始) 1、2、3 ……
{$first} 第一项时为 true 输出 true / false
{$last} 最后一项时为 true 输出 true / false

循环可以嵌套。内层循环可以访问外层作用域中的字段:

{#Departments}
Department: {Name}
{#Employees}
{Name} works in {Department.Name}
{/Employees}
{/Departments}

如果同一个字段名在内层和外层都存在,内层优先。

在循环的开始标签中加入过滤器,即可选择重复哪些行、按什么顺序重复:

{#Line_Items | where:"Status == 'Approved'" | sort:"Amount":"desc" | limit:10}
{Product_Name} {Amount | currency:"USD"}
{/Line_Items}
过滤器 作用 示例
where 只保留符合条件的行 where:"Status == 'Approved'"
sort 按某个字段排序,从小到大或从早到晚 sort:"Due_Date"
sort ……或从大到小、从晚到早 sort:"Amount":"desc"
limit 只保留前几行 limit:10
offset 跳过前几行 offset:10
unique 字段的每个值只保留第一行 unique:"Customer"

过滤器按书写顺序从左到右依次生效:sort:"Amount":"desc" | limit:3 是值最大的三行,而 limit:3 | sort:"Amount":"desc" 是前三行按从大到小排列。

where 条件写在双引号内,其中的文本值用单引号括起来:

条件 保留的行
Status == 'Approved' Status 恰好为 Approved
Status != 'Draft' Status 为 Draft 以外的任何值
Amount > 1000 Amount 大于 1000(也支持 >=、<、<=)
Paid Paid 有值,与 {#if Paid} 相同
!Notes Notes 为空
  • 数字按原始值比较,而不是按其输出的样子:Amount > 1000 能匹配 $1,250.00。数字请直接书写:写 1000,不要写 1,000。
  • 日期写成 2026-01-31(或带时间,写成 2026-01-31 17:30)时,会按模板的时区作为日期进行比较:where:"Due_Date >= '2026-01-01'"。比较以整天为单位:Due_Date > '2026-01-31' 从 2 月 1 日开始算起。
  • 用 &&(并且)和 ||(或者)连接多个条件,并用括号分组:where:"Status == 'Approved' && (Amount > 1000 || Rush)"。
  • sort 按先后顺序排列日期、按大小排列数字、按字母顺序排列文本。空单元格始终排在最后。
  • 多个 where 过滤器必须全部满足。连续书写的多个 sort 过滤器先按第一个排序,第一个相同时再按下一个排序:sort:"Category" | sort:"Amount":"desc"。
  • 关联记录字段可以使用点号语法:where:"Product.Category == 'Hardware'"。
  • 对于由简单值组成的列表(例如多选字段),用 . 表示值本身:{#Tags | where:". != 'Internal'" | sort}。
  • 过滤器在表格行循环、段落循环、嵌套循环和飞书审批明细中都同样适用。

sum、count 和 join 也支持同样的过滤器,因此合计可以只累加上方表格所显示的那些行:

{Line_Items | where:"Status == 'Approved'" | sum:"Amount" | currency:"USD"}
{Line_Items | where:"Status == 'Approved'" | count} approved items

如果合计中的过滤器无法应用,合计会留空并给出警告,而不是把所有行都加起来。

在表格内的循环中加上 horizontal,即可让单元格横向重复,每一项占一列,而不是向下重复整行:

标签 横向重复
Name {#Staff | horizontal} {Name}
Role {Role} {/Staff}

有三个人时,就会生成每人一列的表格。开始标签和结束标签之间的所有行会一起重复,因此每个人的姓名和职位都位于同一列。

  • 新列平分模板单元格的宽度,并保留其边框和底纹。
  • 可与其他过滤器组合使用:{#Staff | where:"Active" | sort:"Name" | horizontal}。
  • 最多 20 列。超出的项会被省略,并给出警告。
  • 如果列表为空,单元格会留空,而不会被删除。
  • 横向循环可以放在行循环之内:此时每一行的列数等于该行自身列表的项数。
  • 在表格之外,horizontal 会被忽略并给出警告,循环照常重复。

根据字段值显示或隐藏内容。

仅当字段有值时显示内容:

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

仅当字段为空时显示内容:

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

>、>=、< 和 <= 按实际值比较数字,按日期比较日期(写成 2026-01-31,使用模板的时区):

{#if Amount > 1000}
Requires a second approval.
{/if}
{#if Due_Date < "2026-01-01"}
Overdue.
{/if}

{#if} 中的 == 和 != 按输出的文本进行比较:{#if Qty == "2"} 不会匹配显示为 2.00 的数量。在 where 过滤器或 {#Qty == 2}…{/} 区块中,它们还能匹配相同的数字或同一天。

过滤器用竖线(|)语法改变值的显示方式:

{Field | filterName}
{Field | filterName:"arg1":"arg2"}

过滤器在取到值之后、写入文档之前生效。未使用过滤器时,值按数据来源显示的样子输出(参见占位符输出什么)。

过滤器 说明 示例 输出
upper 转为大写 {Name | upper} ACME CORP
lower 转为小写 {Name | lower} acme corp
capitalize 每个单词首字母大写 {Name | capitalize} Acme Corp
trim 去除首尾空格 {Name | trim} Acme Corp
truncate 截断到指定长度(默认 50) {Description | truncate:16} Lorem ipsum dolo...
pad 用指定字符补位(默认 0) {$num | pad:3} 001

number、currency 和 percent 可以接受一个可选的地区参数,用于按地区格式化:

过滤器 参数 示例 输出
number 小数位数、地区 {Price | number:2} 1,234.50
number 小数位数、地区 {Price | number:2:"de-DE"} 1.234,50
currency 货币代码、地区 {Price | currency:"USD"} $1,234.50
currency 货币代码、地区 {Price | currency:"EUR":"de-DE"} 1.234,50 €
currency 货币代码、地区 {Price | currency:"JPY":"ja-JP"} ¥1,235
currency 货币代码、地区、小数位数 {Price | currency:"IDR":"id-ID":2} Rp 1.234,50
percent 小数位数、地区 {Rate | percent:1} 45.6%
percent 小数位数、地区 {Rate | percent:1:"de-DE"} 45,6 %
toFixed 小数位数 {Price | toFixed:2} 1234.50(无千位分隔符)
chineseUppercase 无 {Amount | chineseUppercase} 捌万捌仟捌佰捌拾捌
chineseLowercase 无 {Amount | chineseLowercase} 八八八八八
chineseFinancial 无 {Amount | chineseFinancial} 捌万捌仟捌佰捌拾捌元整

用自定义格式输出日期,适用于数据中日期的格式不是您需要的格式时。

语法: {Field | date:"format":"timezone":"locale"}

所有参数都是可选的。时区默认为模板的时区(模板 → 输出 → 时区),未设置时为 UTC;地区默认为 en-US。不带时区的日期文本(例如文档 API 或飞书审批表单传来的 2026-01-31)无论时区如何都按当天输出。

过滤器 参数 示例 输出
date 格式、时区、地区 {Date | date:"DD MMM YYYY"} 26 Feb 2026
date 格式、时区、地区 {Date | date:"dddd, DD MMMM YYYY"} Thursday, 26 February 2026
date 格式、时区、地区 {Date | date:"DD MMMM YYYY":"UTC":"fr-FR"} 26 février 2026
date 格式、时区、地区 {Date | date:"dddd, DD MMMM YYYY":"UTC":"de-DE"} Donnerstag, 26 Februar 2026

支持的日期占位符:

占位符 输出 示例
YYYY 四位年份 2026
MMMM 月份全称(随地区变化) February、février、Februar
MMM 月份缩写(随地区变化) Feb、févr.、Feb
MM 两位月份 02
dddd 星期全称(随地区变化) Thursday、Donnerstag、木曜日
ddd 星期缩写(随地区变化) Thu、Do、木
DD 两位日期 26
HH 24 小时制小时 15
mm 分钟 30
ss 秒 00

示例:

{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 (东京时区)
{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
过滤器 说明 示例 输出
join 连接数组值(默认 , ) {Tags | join:" / "} Red / Blue / Green
join 连接每一行的某个字段,省略空值 {Items | join:", ":"Name"} Widget, Gadget
sum 对循环中所有行的某个字段求和 {Items | sum:"Price"} 1234.5
sum 合计,由后一个过滤器格式化 {Items | sum:"Price" | currency:"USD"} $1,234.50
count 循环中的行数 {Items | count} 12
avg 循环中所有行某个字段的平均值(不计空单元格) {Items | avg:"Price"} 411.5
max / min 循环中所有行某个字段的最大值/最小值 {Items | max:"Price"} $980.00
default 空值时的兜底文本 {Phone | default:"N/A"} N/A

多个过滤器可以用竖线串联,从左到右依次生效:

{Name | trim | upper} → " hello " 变成 "HELLO"
{$num | pad:3} → 1 变成 "001"
{Phone | default:"N/A" | upper} → null 变成 "N/A"

过滤器同样适用于循环变量和当前项引用:

{#Items}
#{$num | pad:3} - {Name | upper}
{/Items}
{#Tags}{. | capitalize}, {/Tags}

把模板中的占位图片替换成您数据中的图片:Excel 表格或 SharePoint 列表的图片列、Dataverse 的图像列、Google Sheets 中的文件智能条状标签或 =IMAGE(…) 单元格、飞书附件字段,或发送给文档 API 的图片 URL。上表列出了每个数据来源提供的内容。

  1. 在 Word 模板中插入任意一张图片(作为占位图)。
  2. 右键点击图片 → 编辑替换文字。
  3. 在替代文字描述中填写 {FieldName}。
  4. 保存模板。

生成时,占位图会被该字段中的图片替换,并保留占位图的尺寸。

对于包含多个附件的字段,可使用索引语法:

{Photo} → 第一张图片(等同于 {Photo[0]})
{Photo[1]} → 第二张图片
{Photo[2]} → 第三张图片

如果附件数量不固定,可以用循环语法,并把 {.} 作为图片的替代文字。每个附件都会展开为一份占位图的副本:

{#Product_Photos}
[替代文字为 {.} 的图片]
{/Product_Photos}

放在表格中时,每个附件会各占一行:

# Photo Filename
{#Product_Photos} {$num} 替代文字:{.} {name} {/Product_Photos}

循环内部可用的属性:

变量 说明 示例
{name} 文件名 photo1.jpg
{type} MIME 类型 image/jpeg
{size} 文件大小(字节) 204800

图片占位符同样可以在循环块中使用,每次迭代都会解析该项对应的图片:

{#Employees}
Name: {Name}
Photo: [替代文字为 {Photo} 的图片]
{/Employees}

根据字段值生成二维码和条形码。配置方式与动态图片相同,通过图片的替代文字设置。

{QR:FieldName}

示例:{QR:Order_ID} 会生成一个包含 Order_ID 值的二维码。

语法 类型 说明
{BARCODE:FieldName} Code128 默认类型,支持字母与数字
{BARCODE128:FieldName} Code128 显式指定 Code128
{BARCODE39:FieldName} Code39 仅支持大写字母与数字
{BARCODEEAN13:FieldName} EAN-13 13 位零售商品码
{BARCODEEAN8:FieldName} EAN-8 8 位短版 EAN
{BARCODEUPCA:FieldName} UPC-A 12 位北美零售码
{BARCODEUPCE:FieldName} UPC-E 压缩版 UPC
{BARCODEITF14:FieldName} ITF-14 物流/整箱条码
{BARCODEDATAMATRIX:FieldName} DataMatrix 二维码,信息密度高
{BARCODEPDF417:FieldName} PDF417 二维码,堆叠线性码

前缀不区分大小写:{qr:Field} 与 {QR:Field} 效果相同。

所有占位符语法在页眉和页脚中同样有效,用法与正文一致。

常见用途:

  • 页眉中的公司名称或 Logo
  • 页脚中的文档编号或日期
  • 动态标题,例如 Invoice for {Customer_Name}

添加方式:插入 → 页眉/页脚 → 编辑,然后输入 {Field_Name} 之类的占位符。

为其他飞书文档应用编写的模板无需修改即可在这里使用,直接上传原有的 Word 文件即可。这些语法在 AutomaDoc 中的效果如下:

写法 在这里的效果
{#isNew} Welcome {/isNew} 字段有值时显示文本。如果字段是列表,则作为循环
{#!isNew}Welcome{/isNew} 字段为空、未勾选或为空列表时显示文本
{#Status=="Paid"}…{/} 条件成立时显示文本。也支持 !=、>、>=、<、<=、&& 和 ||
{/} 关闭最近一个未关闭的循环或区块
{$index+1} 行号,从 1 开始,与 {$num} 相同
{#Items | sortBy:"Total":"desc"} 与 sort 相同
{#Items | where:"A == 'x' && B > 5"} 保留符合条件的行,参见筛选、排序和限制行数
{>Items}{Name} 位于表格行开头 将该单元格及其右侧的单元格沿该行横向重复,每一项占一列,即横向循环
{#image}{#$isImage}{%src}{/}{#!$isImage}{$fileName}{/}{/image} 输出附件字段中的每张图片,以及每个非图片文件的文件名
{%src | size:100:50} / {%src | maxSize:500:500} 按该尺寸(像素)精确显示图片,或使图片不超过该尺寸
{%Logo} 附件字段中的第一张图片,按其原始尺寸显示,最宽不超过页面宽度
{Name | uppercase} / {Name | lowercase} 与 upper / lower 相同
{Price | toFixed:"2"} 保留两位小数的数字,无千位分隔符
{Price | currency:'USD'} 参数用单引号与用双引号效果相同
{Date | customDate:'YYYY-MM-DD HH:mm:ss'} 与 date 使用相同的日期占位符,按模板的时区
{Date | date:'full'} 2024-7-13 Saturday 00:00:00
chineseUppercase、chineseLowercase、chineseFinancial 用中文表示数字,参见数字过滤器
语法 说明
{Field} 普通变量
{Field.Nested} 关联记录字段(点号语法)
{Link.text} / {Link.link} 链接子属性
{Owner.name} / .email / .id 单个人员的子属性(飞书多维表格中还有 .en_name)
{Assignee[0].name} 多个人员(是列表,请用下标或循环)
{Location.name} / {Location.full_address} 飞书多维表格地理位置子属性
{Team[0].name} / {Team[0].id} 飞书多维表格群组字段(是列表,请用下标或循环)
{#Field}...{/Field} 遍历多值字段
{#Field | where:"Status == 'Paid'"} 只遍历符合条件的行
{#Field | sort:"Amount":"desc"} 按顺序遍历,从大到小
{#Field | limit:5} / {#Field | offset:5} 前 5 行 / 除前 5 行外的所有行
{#Field | horizontal} 横向重复表格单元格,每行一列
{Field | where:"Paid" | sum:"Amount"} 符合条件的行的合计
{Field | count} 行数
{Field | avg:"Amount"} / max / min 各行的平均值、最大值、最小值
{#Field == "v"}...{/} 条件成立时显示的区块
{#!Field}...{/Field} 字段为空时显示的区块
{#if Field > 100}...{/if} 条件(按数字或日期大小)
{/} 简写结束标签(关闭最近的循环)
{.} 循环中的当前项(用于基础类型数组)
{$index} 循环索引(从 0 开始)
{$num} 行号(从 1 开始)
{$first} / {$last} 是否为首项/末项
{#if Field}...{/if} 条件(非空)
{#if !Field}...{/if} 条件(为空)
{#if Field == "val"}...{/if} 条件(相等)
{#if Field != "val"}...{/if} 条件(不等)
{Field | upper} 过滤器:转大写
{Field | lower} 过滤器:转小写
{Field | capitalize} 过滤器:单词首字母大写
{Field | trim} 过滤器:去除首尾空格
{Field | truncate:30} 过滤器:截断并加省略号
{Field | pad:3} 过滤器:补零
{Field | number:2} 过滤器:指定小数位数
{Field | number:2:"de-DE"} 过滤器:按地区格式化数字
{Field | currency:"USD"} 过滤器:货币格式
{Field | currency:"EUR":"de-DE"} 过滤器:按地区格式化货币
{Field | percent:1} 过滤器:百分比
{Field | date:"DD MMM YYYY"} 过滤器:自定义日期格式
{Field | date:"dddd, MMMM DD":"UTC":"fr-FR"} 过滤器:按地区格式化日期
{Field | join:" / "} 过滤器:用分隔符连接数组
{Field | default:"N/A"} 过滤器:兜底值
{Field | trim | upper} 串联过滤器(从左到右)
{Photo} / {Photo[1]} 图片(通过替代文字)
{QR:Field} 二维码(通过替代文字)
{BARCODE:Field} 条形码(通过替代文字)