模板语法
变量是模板中的占位符,生成时会被每条记录中的数据替换:Excel 表格的一行、SharePoint 列表的一项、Dataverse 的一行、Google 工作表的一行、飞书多维表格的一条记录,或您通过文档 API 发送的 JSON。无论数据来自哪里,语法都相同。
用大括号包住准确的字段名:
{Field_Name}示例:
{Customer_Name}→ “Acme Corp”{Invoice_Date}→ “2024-01-15”{Total_Amount}→ “1,500.00”
占位符输出什么
Section titled “占位符输出什么”不使用过滤器时,占位符按数据来源显示的样子输出值。数字和日期过滤器则作用于其底层的原始值,参见过滤器读取原始值。
| 值 | 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。
过滤器读取原始值
Section titled “过滤器读取原始值”数字和日期过滤器不管值如何显示,而是把底层的原始值重新格式化:
{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 读取它时(模板绑定到该文件),其原始日期会提前四年零一天。
关联记录(嵌套字段)
Section titled “关联记录(嵌套字段)”关联记录来自关联表格(Excel)、查阅列(SharePoint、Dataverse)、关联工作表(Google Sheets)、关联字段(飞书多维表格)或嵌套对象(文档 API)。使用点号语法访问它们的字段:
{Customer.Name}{Customer.Address}{Customer.Email}最多支持 5 层嵌套:
{Order.Customer.Company.Address.City}字段的扩展属性(点号语法)
Section titled “字段的扩展属性(点号语法)”链接和人员可以通过点号语法访问子属性,部分飞书多维表格字段类型也可以。不使用点号时,它们会输出默认值。
来自 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"群组字段(飞书多维表格)
Section titled “群组字段(飞书多维表格)”群组字段是列表,{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,无法循环。要循环,请发送对象列表。
循环(多值关联字段)
Section titled “循环(多值关联字段)”对于关联多条记录的字段,使用循环语法为每一项重复内容:
{#Line_Items} Product: {Product_Name} Quantity: {Quantity} Price: {Price}{/Line_Items}{#Field} 开始循环,{/Field} 结束循环。循环内部引用字段时不需要加上父级前缀。
简写结束标签
Section titled “简写结束标签”可以用 {/} 代替重复写字段名:
{#Line_Items} {Product_Name} - {Price}{/}当循环标签放在表格行内时,整行会为每一项复制一次,非常适合明细表:
| Product | Qty | Price |
|---|---|---|
{#Line_Items} {Product_Name} |
{Quantity} |
{Price} {/Line_Items} |
基础类型数组
Section titled “基础类型数组”对于简单值(而非对象)组成的数组,用 {.} 引用当前项:
{#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}如果同一个字段名在内层和外层都存在,内层优先。
筛选、排序和限制行数
Section titled “筛选、排序和限制行数”在循环的开始标签中加入过滤器,即可选择重复哪些行、按什么顺序重复:
{#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}。 - 过滤器在表格行循环、段落循环、嵌套循环和飞书审批明细中都同样适用。
与筛选后表格一致的合计
Section titled “与筛选后表格一致的合计”sum、count 和 join 也支持同样的过滤器,因此合计可以只累加上方表格所显示的那些行:
{Line_Items | where:"Status == 'Approved'" | sum:"Amount" | currency:"USD"}{Line_Items | where:"Status == 'Approved'" | count} approved items如果合计中的过滤器无法应用,合计会留空并给出警告,而不是把所有行都加起来。
横向循环(列)
Section titled “横向循环(列)”在表格内的循环中加上 horizontal,即可让单元格横向重复,每一项占一列,而不是向下重复整行:
| 标签 | 横向重复 |
|---|---|
| Name | {#Staff | horizontal} {Name} |
| Role | {Role} {/Staff} |
有三个人时,就会生成每人一列的表格。开始标签和结束标签之间的所有行会一起重复,因此每个人的姓名和职位都位于同一列。
- 新列平分模板单元格的宽度,并保留其边框和底纹。
- 可与其他过滤器组合使用:
{#Staff | where:"Active" | sort:"Name" | horizontal}。 - 最多 20 列。超出的项会被省略,并给出警告。
- 如果列表为空,单元格会留空,而不会被删除。
- 横向循环可以放在行循环之内:此时每一行的列数等于该行自身列表的项数。
- 在表格之外,
horizontal会被忽略并给出警告,循环照常重复。
根据字段值显示或隐藏内容。
仅当字段有值时显示内容:
{#if Discount} Discount applied: {Discount}{/if}为空判断(取反)
Section titled “为空判断(取反)”仅当字段为空时显示内容:
{#if !Notes} No additional notes.{/if}{#if Status == "Approved"} This invoice has been approved.{/if}{#if Status != "Draft"} This document has been submitted.{/if}比较数字与日期
Section titled “比较数字与日期”>、>=、< 和 <= 按实际值比较数字,按日期比较日期(写成 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"}过滤器在取到值之后、写入文档之前生效。未使用过滤器时,值按数据来源显示的样子输出(参见占位符输出什么)。
字符串过滤器
Section titled “字符串过滤器”| 过滤器 | 说明 | 示例 | 输出 |
|---|---|---|---|
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"在循环中使用过滤器
Section titled “在循环中使用过滤器”过滤器同样适用于循环变量和当前项引用:
{#Items} #{$num | pad:3} - {Name | upper}{/Items}
{#Tags}{. | capitalize}, {/Tags}把模板中的占位图片替换成您数据中的图片:Excel 表格或 SharePoint 列表的图片列、Dataverse 的图像列、Google Sheets 中的文件智能条状标签或 =IMAGE(…) 单元格、飞书附件字段,或发送给文档 API 的图片 URL。上表列出了每个数据来源提供的内容。
- 在 Word 模板中插入任意一张图片(作为占位图)。
- 右键点击图片 → 编辑替换文字。
- 在替代文字描述中填写
{FieldName}。 - 保存模板。
生成时,占位图会被该字段中的图片替换,并保留占位图的尺寸。
对于包含多个附件的字段,可使用索引语法:
{Photo} → 第一张图片(等同于 {Photo[0]}){Photo[1]} → 第二张图片{Photo[2]} → 第三张图片遍历所有图片
Section titled “遍历所有图片”如果附件数量不固定,可以用循环语法,并把 {.} 作为图片的替代文字。每个附件都会展开为一份占位图的副本:
{#Product_Photos} [替代文字为 {.} 的图片]{/Product_Photos}放在表格中时,每个附件会各占一行:
| # | Photo | Filename |
|---|---|---|
{#Product_Photos} {$num} |
替代文字:{.} |
{name} {/Product_Photos} |
循环内部可用的属性:
| 变量 | 说明 | 示例 |
|---|---|---|
{name} |
文件名 | photo1.jpg |
{type} |
MIME 类型 | image/jpeg |
{size} |
文件大小(字节) | 204800 |
关联记录循环中的图片
Section titled “关联记录循环中的图片”图片占位符同样可以在循环块中使用,每次迭代都会解析该项对应的图片:
{#Employees} Name: {Name} Photo: [替代文字为 {Photo} 的图片]{/Employees}二维码与条形码
Section titled “二维码与条形码”根据字段值生成二维码和条形码。配置方式与动态图片相同,通过图片的替代文字设置。
{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} 之类的占位符。
从其他飞书文档应用迁移
Section titled “从其他飞书文档应用迁移”为其他飞书文档应用编写的模板无需修改即可在这里使用,直接上传原有的 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} |
条形码(通过替代文字) |