使用 JSON 数据实现自动化
- Home
- 资源
- 用户手册
- thinkcell Charts:数据可视化
- 高级报告自动化
- 使用 JSON 数据实现自动化
使用 JavaScript 对象表示法 (JSON) 自动创建 thinkcell 演示文稿。借助 thinkcell JSON 自动化,您可以执行以下操作:
- 用数据(例如,幻灯片标题和图表)填充 PowerPoint 模板
- 重复使用和重新排序模板以创建新的演示文稿
- 使用来自本地或远程来源的 JSON 数据和 PowerPoint 模板
- 通过 Web 服务将实时数据转化为新的演示文稿
JSON 文件结构
本节介绍了如何构建 JSON 文件。来自示例文件 sample.ppttc 的片段附带此说明。参见本节末尾的完整示例 (完整的 JSON 示例)。
JSON 架构和示例文件
在 thinkcell 安装文件夹中,ppttc 文件夹包含以下文件:
- JSON 架构
ppttc-schema.json - PowerPoint 模板
template.pptx - JSON 数据文件
sample.ppttc
文件 ppttc-schema.json 描述了使用 thinkcell 创建 PowerPoint 演示文稿时 .ppttc 文件必须遵循的规则。
文件 template.pptx 包含已命名的元素(请参阅高级报告自动化)。模板可以有任意数量的幻灯片。
文件 sample.ppttc 指定:
- thinkcell 将用于创建新演示文稿的模板
- 模板的显示顺序
- 用于填写模板的 JSON 数据
指定模板、元素及其数据
示例 sample.ppttc 显示了表示 PowerPoint 演示文稿的阵列(请参阅完整的 JSON 示例)。
模板
阵列包含一系列对象,每个对象代表 PowerPoint 模板的一个副本。在新的演示文稿中,模板按您在阵列中指定的顺序显示。如果模板有多个幻灯片,您只能通过在 PowerPoint 中编辑模板来修改幻灯片顺序。
在阵列中,每个模板对象必须具有两个属性:template 和 data。
template
template 属性是字符串,用于指定要使用的 PowerPoint 模板。字符串可以是以下其中一项:
- 如果您已本地存储模板,请在本地文件系统中指定模板的相对或绝对路径。在 Windows 上,目录分隔符必须是反斜杠 (\) — 在 JSON 中转义为双反斜杠 (\\);在 macOS 上,目录分隔符必须是斜杠 (/)。
- 如果您已远程存储模板,请指定存储模板的 URL(请参阅远程提供模板)。
在最简单的情况下,如完整的 JSON 示例所示,字符串 template 只是 PowerPoint 模板的文件名,因为模板与 .ppttc 文件位于同一文件夹中。
"template": "template.pptx",
data
data 属性是指定以下内容的对象阵列:
- 具有 AddRangeData 名称的图表和其他元素(请参阅高级报告自动化)
- 用于填充这些元素的数据
对象可以以任何顺序显示在 data 阵列中,无论 PowerPoint 模板中相应的元素的位置如何。
"data": [ ... ]
元素
data 阵列中的每个对象都具有两个属性:
name指定您在AddRangeData Name中分配的元素名称(请参阅)高级报告自动化。table指定用于填充元素的数据。
如果两个元素具有相同的名称,thinkcell 会用相同的数据来填充它们。
table 值是阵列。阵列的结构取决于元素类型:
- 对于自动化文本字段、哈维球或复选框,
table阵列包含单个子阵列和单个对象。对象(例如文本字符串或数字)填充文本字段。 - 对于图表或表格,
table阵列包含表示元素数据表的子数组。
{
"name": "RightChartTitle",
"table": [[{"string": "Our orders (10K)"}]]
},
{
"name": "LeftChart",
"table": [
[null, {"date": "2020-01-01"}, {"date": "2021-01-01"}, {"date": "2022-01-01"}, {"date": "2023-01-01"}, {"date": "2024-01-01"}, {"date": "2025-01-01"}],
[{"string": "Market headroom"}, {"percentage": 46.5}, {"percentage": 47}, {"percentage": 45}, {"percentage": 45}, {"percentage": 41}, {"percentage": 40.5}],
[],
[{"string": "Competitor 1"}, {"percentage": 0.5}, {"percentage": 1}, {"percentage": 5}, {"percentage": 2}, {"percentage": 4}, {"percentage": 4.5}],
[{"string": "Our brand"}, {"percentage": 53}, {"percentage": 52}, {"percentage": 50}, {"percentage": 53}, {"percentage": 55}, {"percentage": 55}]
]
},
图表数据表结构
对于图表,table阵列中的每个子阵列代表图表数据表的一行。有关图表的特定数据表布局,请参阅用户手册中相应的章节,或打开图表的数据表进行参考(请参阅输入图表数据)。下面描述了默认图表行的结构,如 JSON 架构中所指定。
第一行
第一行是包含类别标签的子阵列。类别标签前面有一个空的第一个单元格 (null)。第一个单元格中的数据不会显示在图表中,因此实际上可以包含任何数据。
[null, {"date": "2020-01-01"}, {"date": "2021-01-01"}, {"date": "2022-01-01"}, {"date": "2023-01-01"}, {"date": "2024-01-01"}, {"date": "2025-01-01"}],
后续行
后续行是包含系列标签和图表数据点的子阵列。子阵列中元素的顺序对应于数据表行中单元格的顺序。行中的第一个单元格包含系列标签——通常是字符串。行中的后续单元格应包含数字,对于甘特图,应包含日期。
[{"string": "Market headroom"}, {"percentage": 46.5}, {"percentage": 47}, {"percentage": 45}, {"percentage": 45}, {"percentage": 41}, {"percentage": 40.5}],
[],
[{"string": "Competitor 1"}, {"percentage": 0.5}, {"percentage": 1}, {"percentage": 5}, {"percentage": 2}, {"percentage": 4}, {"percentage": 4.5}],
[{"string": "Our brand"}, {"percentage": 53}, {"percentage": 52}, {"percentage": 50}, {"percentage": 53}, {"percentage": 55}, {"percentage": 55}]
空行
若要指定空行,请使用空阵列 ([])。
在前面的片段中,空阵列会改变 thinkcell 将 PowerPoint Theme 配色方案应用到图表系列的方式(请参阅图表填充方案)。配色方案将深绿色分配给第 3 行中的系列。通过将第 3 行留空,系列Competitor 1和Our brand现位于第 4 行和第 5 行,配色方案分别为其分配浅蓝色和深蓝色。
可选行和列
在 PowerPoint 模板的图表数据表中,您可以添加或删除可选的行和列(请参阅编辑数据表布局)。这样做会影响 thinkcell 解释相应行和列中的 JSON 数据的方式。
例如,如果您在图表数据表中添加 100%= 行,thinkcell 会将第二行 JSON 数据解释为总计,再根据总计计算百分比。如果省略100%=行,如此示例所示,thinkcell 会将第二行中的 JSON 数据解释为普通数据点。
下表总结了常见的可选行和列、这些行和列在数据表中的位置及这些行和列的默认设置。若要检查特定图表的数据布局,请双击图表以打开其数据表。
|
Option |
Contents |
Datasheet position |
Default setting |
|---|---|---|---|
|
Series |
系列标签 |
第 1 列 |
已选择 |
|
Category |
类别标签 |
第 1 行 |
已选择 |
|
100%= |
用于计算百分比的总计 |
第 2 行(如果选择了“Category”) |
未选择 |
自动化文本字段、哈维球和复选框
使用 JSON 数据填充自动化文本字段、单个哈维球和单个复选框时,thinkcell 预期一个table阵列包含一个单元格。在table阵列中,单元格表示为包含单个对象的单个子阵列。
{
"name": "SlideTitle",
"table": [[{"string": "Competition: Germany"}]]
},
如果哈维球或复选框是表格的一部分,只需在相应的表格单元格中指定元素的内容。
单元格数据类型
在 .ppttc 文件中,单元格可以包含以下类型的数据。
|
Data type |
Key |
Example |
Notes |
|---|---|---|---|
|
文本 |
|
|
支持所有可打印的 Unicode (UTF-8) 字符。 |
|
数字 |
|
|
小数分隔符必须是点 (.)。 |
|
日历日期 |
|
|
所需格式: |
|
百分比 |
|
|
小数分隔符必须是点 (.)。请勿包含百分号 (%)。 |
|
数据表单元格填充颜色 |
|
十六进制: RGB: |
将 若要将数据表填充颜色应用到图表功能,请在 PowerPoint 模板中选择“Use Datasheet Fill”(请参阅图表填充方案)。 |
|
空单元格 |
不适用 |
|
请勿在引号中包含 |
完整的 JSON 示例
参见下面来自 sample.ppttc 的完整 JSON 示例:
[
{
"template": "template.pptx",
"data": [
{
"name": "SlideTitle",
"table": [[{"string": "Competition: Germany"}]]
},
{
"name": "LeftChartTitle",
"table": [[{"string": "Market share (2020–2025)"}]]
},
{
"name": "RightChartTitle",
"table": [[{"string": "Our orders (10K)"}]]
},
{
"name": "LeftChart",
"table": [
[null, {"date": "2020-01-01"}, {"date": "2021-01-01"}, {"date": "2022-01-01"}, {"date": "2023-01-01"}, {"date": "2024-01-01"}, {"date": "2025-01-01"}],
[{"string": "Market headroom"}, {"percentage": 46.5}, {"percentage": 47}, {"percentage": 45}, {"percentage": 45}, {"percentage": 41}, {"percentage": 40.5}],
[],
[{"string": "Competitor 1"}, {"percentage": 0.5}, {"percentage": 1}, {"percentage": 5}, {"percentage": 2}, {"percentage": 4}, {"percentage": 4.5}],
[{"string": "Our brand"}, {"percentage": 53}, {"percentage": 52}, {"percentage": 50}, {"percentage": 53}, {"percentage": 55}, {"percentage": 55}]
]
},
{
"name": "RightChart",
"table": [
[null, {"date": "2020-01-01"}, {"date": "2021-01-01"}, {"date": "2022-01-01"}, {"date": "2023-01-01"}, {"date": "2024-01-01"}, {"date": "2025-01-01"}],
[{"string": "Pending"}, {"number": 0, "fill": "#ff0000"}, {"number": 0, "fill": "#ff0000"}, {"number": 0, "fill": "#ff0000"}, {"number": 0, "fill": "#ff0000"}, {"number": 0, "fill": "#ff0000"}, {"number": 14, "fill": "#ff0000"}],
[null, {"number": 709}, {"number": 712}, {"number": 710}, {"number": 700}, {"number": 760}, {"number": 747}]
]
}
]
},
{
"template": "template.pptx",
"data": [
{
"name": "SlideTitle",
"table": [[{"string": "Competition: Canada"}]]
},
{
"name": "LeftChartTitle",
"table": [[{"string": "Market share (2022–2025)"}]]
},
{
"name": "RightChartTitle",
"table": [[{"string": "Our orders (1K)"}]]
},
{
"name": "LeftChart",
"table": [
[null, {"date": "2022-01-01"}, {"date": "2023-01-01"}, {"date": "2024-01-01"}, {"date": "2025-01-01"}],
[{"string": "Market headroom"}, {"percentage": 34}, {"percentage": 38}, {"percentage": 41}, {"percentage": 42}],
[{"string": "Competitor 2"}, {"percentage": 31}, {"percentage": 17}, {"percentage": 15}, {"percentage": 14}],
[{"string": "Competitor 1"}, {"percentage": 20}, {"percentage": 10}, {"percentage": 9}, {"percentage": 7}],
[{"string": "Our brand"}, {"percentage": 15}, {"percentage": 35}, {"percentage": 35}, {"percentage": 37}]
]
},
{
"name": "RightChart",
"table": [
[null, {"date": "2022-01-01"}, {"date": "2023-01-01"}, {"date": "2024-01-01"}, {"date": "2025-01-01"}],
[{"string": "Pending"}, {"number": 0, "fill": "#ff0000"}, {"number": 0, "fill": "#ff0000"}, {"number": 0, "fill": "#ff0000"}, {"number": 15, "fill": "#ff0000"}],
[null, {"number": 250}, {"number": 401}, {"number": 481}, {"number": 476}]
]
}
]
}
]
使用 JSON 数据创建演示文稿
thinkcell 安装后,就会指示操作系统使用 thinkcell 打开 .ppttc 文件。若要在文件资源管理器 (Windows) 或访达 (macOS) 中使用 thinkcell 打开 JSON 文件(例如,通过双击),请使用 .ppttc 扩展名。
打开 JSON 文件时,thinkcell 会执行以下操作:
- thinkcell 读取文件并检查文件是否存在错误。
- thinkcell 创建新的演示文稿。演示文稿包含 JSON 文件中顶层阵列中指定的幻灯片模板的副本。
- 在模板副本中,thinkcell 会用相应的数据(在
table中指定)填充元素(用name来标识)。元素会相应地更新。 - 新的演示文稿将在 PowerPoint 中打开。您可以保存或进一步编辑演示文稿。
从命令行创建演示文稿
通过输入以下内容,根据命令行中的 JSON 数据创建演示文稿:
<var>PPTTC_PATH</var> <var>PPTTC_INPUT</var> -o <var>PPTX_OUTPUT</var>
替换以下内容:
PPTTC_PATH:ppttc.exe的路径PPTTC_INPUT:.ppttc 文件的路径PPTX_OUTPUT:您创建的 .pptx 文件的名称,前跟文件的保存路径
可执行文件 ppttc.exe 位于 thinkcell 安装文件夹的 ppttc 中。在自动化脚本中调用 ppttc.exe,以创建新的 PowerPoint 演示文稿。
远程提供 JSON 数据
为服务器上的 .ppttc 文件远程生成 JSON 数据。若要创建新的演示文稿,用户可从网页浏览器下载 .ppttc 文件,然后使用 thinkcell 打开该文件。
如需关于如何使用服务器生成和下载 JSON 数据的举例说明,请参阅 thinkcell 安装文件夹中的 /ppttc/sample.html。文件 sample.html 包含以下元素:
- 按钮的 HTML 标记,单击该按钮即会对 JSON 数据进行动态编译
- 一些静态 JSON 数据。在典型用例中,JSON 数据来自其他来源。
- 某 JavaScript 函数,可将 .ppttc 文件下载到用户的计算机
用户下载 .ppttc 文件后,可以保存或打开该文件。用户打开文件时,thinkcell 会使用 JSON 数据创建新的演示文稿(请参阅使用 JSON 数据创建演示文稿)。
远程提供模板
若要通过服务器提供 PowerPoint 模板,请执行以下操作:
- 在 JSON 文件中,提供 URL 而不是
template密钥的本地路径。URL 协议可以是 HTTP 或 HTTPS。 - 确保打开 .ppttc 文件的用户有权访问远程模板。
只需在用户的计算机上进行标准 thinkcell 安装,就足以使用远程 JSON 数据和模板来生成 thinkcell 演示文稿。
远程创建演示文稿
设置自动化工作流程,在这些工作流程中,用户下载包含自定义数据的 thinkcell 演示文稿。用户只需使用网页浏览器即可下载演示文稿,而无需在计算机上安装 thinkcell。
设置这些工作流程需要 thinkcell 服务器,该服务器仅可在 Windows 上运行。thinkcell 服务器将 JSON 数据作为输入,将 PowerPoint 演示文稿作为输出。
运行 thinkcell 服务器
若要启动 thinkcell 服务器,请按照以下步骤操作:
- 在 thinkcell 安装文件夹中,运行
tcserver.exe。 - 输入用于指定服务器应侦听的 IP 地址和端口的 URL。服务器协议是 HTTP 或 HTTPS。
- 选择“Register URL”。
- 出现提示时,允许 thinkcell 服务器对您的设备进行更改。
若要停止 thinkcell 服务器,请按照以下步骤操作:
- 选择“Unregister URL”。
- 出现提示时,允许 thinkcell 服务器对您的设备进行更改。
“Log”字段显示以下内容:
- 确认服务器已开始或停止侦听 URL
- 所有客户端请求和服务器响应
服务器接受 JSON 数据作为媒体类型(又称为 MIME 类型)为 application/vnd.think-cell.ppttc+json 的 HTTP POST 请求,并以 PowerPoint 文件提供响应。
作为自动启动服务运行
若要在打开计算机时自动启动 thinkcell 服务器,请按照以下步骤操作:
- 在“thinkcell server”对话框中,选择“Run as auto-start service”选项。
- 在“Password”字段中,输入“Run as auto-start service”选项中指定的帐户的密码。
试试吧!
使用我们现成的示例,单击按钮即可创建 PowerPoint 演示文稿。
- 使用 URL
http://127.0.0.1:8080启动 thinkcell 服务器。 - 在浏览器中打开
http://127.0.0.1:8080。 - 网页“ppttc 测试”将打开。选择“Send .ppttc to server and get .pptx”。
thinkcell 服务器根据 JSON 数据创建 PowerPoint 演示文稿。浏览器将演示文稿下载到您的计算机。
“ppttc 测试”页面的 HTML 源代码展示了 thinkcell JSON 自动化的可能用途。源代码可以作为您自己的自动化工作流程的起点。代码包含以下元素:
- 按钮的 HTML 标记,在受到点击时,按钮会使用
XMLHttpRequest调用某种方法,以便与服务器进行通信。 - 一些静态 JSON 数据。在典型用例中,JSON 数据来自其他来源。
- 某 JavaScript 函数,可将 JSON 数据发送到 thinkcell 服务器。服务器会生成对静态 JSON 数据的 HTTP POST 请求。服务器响应是文件下载。
“ppttc 测试”页面使用 JavaScript 发送 HTTP POST 请求,并将 thinkcell 服务器的响应保存为 PowerPoint 文件。显然,其他语言也有效。
需要排查问题吗?
查看我们的知识库