跳到主要内容

Word 模板 token 参考

Word 模板中可使用的数据路径(绑定)完整列表。本页对应产品内的 token 参考面板以及校验器所强制执行的绑定目录——如果某个路径未在此列出,编辑器会将其标记出来。语法和格式化器请参见 Word Template Mode

如何阅读本页

  • 标量绑定用于值 token:${issue.summary}
  • 集合绑定用于循环:${#each issue.subtasks as sub}…${/each}。在循环内部,通过循环变量访问项目字段:${sub.key}
  • 层级 —— A 为普遍可用;B 之所以提供,仅因为问题数据包中本就带有这些数据;C 可见但不可绑定,列出它们是为了如实说明产品范围。
  • 可用的根取决于导出上下文。

导出上下文及其根

Word 模板运行在七种上下文之一,每种上下文暴露一组不同的顶层根。

上下文可用的根
single-issueissuegeneratedAt
automation(Jira Automation 操作)issuegeneratedAt
multi-issue(JQL / 看板)issuesissueGroupsgeneratedAt
scheduledissuesissueGroupsgeneratedAt
sprintissuesissueGroupssprintgeneratedAt
releaseissuesissueGroupsreleasegeneratedAt
backlogissuesissueGroupsbackloggeneratedAt

generatedAt(日期时间)在所有上下文中都可用。

层级 A —— 问题数据面(issue.*

single-issueautomation 中可用。相同的字段也是 issues 集合中每一项的结构——在 ${#each issues as it} 内部使用 ${it.key}${it.summary} 等。

标量

路径类型
issue.key字符串
issue.summary字符串
issue.description富文本(ADF)
issue.status状态
issue.status.category字符串
issue.priority优先级
issue.assignee用户
issue.assignee.displayName字符串
issue.reporter用户
issue.reporter.displayName字符串
issue.created日期时间
issue.updated日期时间
issue.dueDate日期
issue.parent.key字符串
issue.parent.summary字符串
issue.parent.status字符串

用户类型的值默认渲染显示名;可使用 user 格式化器选取其中一部分,例如 ${issue.assignee | user("displayName")}。富文本值会带格式渲染;使用 | plain() 可去除格式。

集合

集合项目字段(相对于循环变量)
issue.labels基本类型列表 —— 循环变量本身就是标签字符串
issue.componentsname
issue.fixVersionsnamereleased(布尔值)
issue.affectsVersionsname
issue.subtaskskeysummarystatuspriorityassigneedueDate
issue.commentsauthor(用户)、author.displayNamebody(ADF)、createdupdated
issue.attachmentsfilenamemimeTypesizeisImagecreatedauthor.displayName —— 仅元数据,不含二进制内容,也不含 URL
issue.issueLinkstypeNamedirectionlinkedIssue.keylinkedIssue.summarylinkedIssue.status
issue.worklogsauthor.displayNametimeSpenttimeSpentSecondscreatedstarted

示例:

${#each issue.worklogs as wl}
${wl.author.displayName}: ${wl.timeSpentSeconds | duration("hm")} on ${wl.started | date("yyyy-MM-dd")}
${/each}

层级 A —— 多问题根

multi-issuescheduledsprintreleasebacklog 中可用。

路径种类项目字段
issues集合完整的问题数据面,相对于循环变量
issueGroups.fixVersions集合keytitleissues
issueGroups.sprints集合keytitleissues
issueGroups.assignees集合keytitleissues
issueGroups.worklogAssignees集合keytitleissues

示例 —— 先分组,再遍历每组内的问题:

${#each issueGroups.assignees as group}
## ${group.title}
${#each group.issues as it}
- ${it.key}: ${it.summary}
${/each}
${/each}

层级 A —— 上下文数据包根

仅在各自的上下文中可用。

sprint

路径类型
sprint.sprint.name字符串
sprint.sprint.goal字符串
sprint.sprint.state选项
sprint.stats.issueCount数字
sprint.stats.percentDone数字

release

路径类型
release.release.name字符串
release.release.releaseDate日期
release.release.released布尔值
release.stats.issueCount数字
release.stats.percentDone数字

backlog

路径类型 / 项目字段
backlog.board.boardName字符串
backlog.board.boardType选项
backlog.stats.totalIssueCount数字
backlog.groups集合 —— kindnameissueCountissues

层级 A —— 元数据

路径类型上下文
generatedAt日期时间全部

层级 B —— 变更历史

路径种类项目字段
issue.changeHistory集合author.displayNamecreateditems

层级 C —— 可见但不可绑定

这些在概念上存在,但无法解析;列出它们是为了让编辑器和校验能够如实说明适用范围。

能力说明
issue.jsmJira Service Management 的请求、SLA 和审批数据面——已推迟。
模板内 JQL由迁移扫描器检测并给出诊断,绝不执行
Tempo工作日志上可能存在 Tempo 镜像,但未提供绑定。
Xray / Zephyr测试管理字段需要第三方应用。
Assets / Insight对象字段已推迟。

自定义字段

自定义字段在单一命名空间下可绑定:

${ issue.customFields.<fieldId>.<…> }
  • 未知的自定义字段 id 属于软性问题:编辑器会显示警告,值可能渲染为空,但绝不会硬性阻断——因此模板可以引用当前站点恰好没有的字段而不会失败。
  • 裸路径 issue.customFields(整个映射)绝不可绑定。
  • 只允许使用安全的标识符字符;__proto__prototypeconstructor 片段会被拒绝。

从 Xporter 迁移时的注意事项

迁移扫描器会为常见的 Xporter 字段名建议对应的 Exportelier 路径。要让建议的改写真正可解析,有两点需要注意:

  1. 自动转换修正的是语法,而不是路径是否存在。 改写具有正确的形态,但目标仍必须是本页中真实存在的绑定,否则会产生 unknown-binding 警告:
    • 不在目录中: Creatorissue.creatorResolutionissue.resolutionProjectissue.projectIssueType/Typeissue.issuetype
    • 大小写不匹配: DueDate 会被建议为 issue.duedate,但实际绑定是 issue.dueDate
    • 类型不匹配: Labels 被建议为标量,但 issue.labels 是集合——请使用循环。
  2. 问题链接。 别名 Links 会被建议为 links,但真实绑定是 issue.issueLinks

完整的迁移对照表请参见 Xporter 语法:哪些可用

绝不允许的路径

出于安全考虑,某些路径无论在何种上下文中都会以 unsafe-template 错误被拒绝——即内部字段、凭据字段或包含 URL 的字段。其中包括 authcontextforgeinternalsecretsstoragetoken 等根,以及任何以 accountIdapiTokenavatarUrlbaseUrlcontentUrlthumbnailUrlcookiesessionheadersprivatestorageRef 结尾的路径。只要坚持使用本页列出的绑定,就不会遇到这些问题。