如何通过API提取含Table Transformer Macro的Confluence页面数据
解决Confluence本地部署中获取Table Transformer宏处理后表格数据的方案
核心问题说明
Confluence原生API(比如/rest/api/content的body_storage或body.view)只会返回Table Transformer宏的配置信息(比如源页面ID、SQL查询语句),不会执行宏的SQL计算逻辑,所以拿不到处理后的结果。这类宏属于第三方插件(通常是Adaptavist的Table Filter and Charts for Confluence),需要借助插件自身能力或自定义方案来获取数据。
可行解决方案
1. 调用插件自带的REST API
如果使用的是Table Filter and Charts for Confluence插件,它提供了专门用于计算宏结果的REST端点。以常见版本为例:
- 端点路径:
/rest/tablefilter/1.0/transformer/evaluate - 请求方式:POST
- 请求体需要包含宏的核心配置参数(示例JSON):
{ "sourcePageId": "源页面ID", "sqlQuery": "宏中使用的SQL查询语句", "spaceKey": "空间键" }
- 认证:需要带上Confluence的Basic Auth信息(用户名:密码Base64编码)或会话Cookie。
- 返回结果:直接返回处理后的表格数据(JSON格式,包含表头和行数据)。
注意:不同插件版本的端点路径可能略有差异,可在Confluence后台的插件管理页面查看该插件的本地文档确认细节。
2. 无头浏览器渲染抓取
通过模拟浏览器加载页面,获取渲染完成后的表格内容:
- 工具选择:使用Puppeteer(Node.js)或Playwright等无头浏览器工具
- 步骤:
- 配置浏览器会话,登录Confluence(处理登录认证,保存Cookie)
- 打开目标页面URL,等待Table Transformer宏对应的表格元素加载完成(可通过元素选择器判断,比如
table.table-transformer-result) - 提取表格的DOM内容,转换为CSV、JSON等格式保存
3. 自定义ScriptRunner脚本扩展
如果部署了ScriptRunner插件,可以编写Groovy脚本直接调用Table Transformer的内部服务:
- 在ScriptRunner中创建自定义REST端点
- 脚本中调用插件的核心服务类(比如
com.adaptavist.confluence.tablefilter.transformer.TableTransformerService),传入宏的配置参数(源页面ID、SQL语句) - 执行计算后,将结果以JSON格式返回
注意事项
- 所有方案都需要确保操作账号拥有目标页面和源页面的查看权限
- 本地部署的Confluence需要允许对应API的访问(比如防火墙、反向代理配置)
- 插件版本升级后,相关API或服务类可能变更,需要同步调整实现
内容的提问来源于stack exchange,提问作者Hooray123
相关产品推荐
相关产品推荐

