使用 JSON 数据实现自动化
- Home
- 资源
- 用户手册
- think-cell Charts:数据可视化
- 高级报告自动化
- 使用 JSON 数据实现自动化
使用 JavaScript 对象表示法 (JSON) 自动创建 think-cell 演示文稿。借助 think-cell JSON 自动化,您可以执行以下操作:
- 用数据(例如,幻灯片标题和图表)填充 PowerPoint 模板
- 重复使用和重新排序模板以创建新的演示文稿
- 使用来自本地或远程来源的 JSON 数据和 PowerPoint 模板
- 通过 Web 服务将实时数据转化为新的演示文稿
JSON 文件结构
本节介绍了如何构建 JSON 文件。来自示例文件 sample.ppttc 的片段附带此说明。参见本节末尾的完整示例 (完整的 JSON 示例)。
在 think-cell 安装文件夹中,ppttc 文件夹包含以下文件:
- JSON 架构
ppttc-schema.json - PowerPoint 模板
template.pptx - JSON 数据文件
sample.ppttc
文件 ppttc-schema.json 描述了使用 think-cell 创建 PowerPoint 演示文稿时 .ppttc 文件必须遵循的规则。
文件 template.pptx 包含已命名的元素(请参阅高级报告自动化)。模板可以有任意数量的幻灯片。
文件 sample.ppttc 指定:
- think-cell 将用于创建新演示文稿的模板
- 模板的显示顺序
- 用于填写模板的 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指定用于填充元素的数据。
如果两个元素具有相同的名称,think-cell 会用相同的数据来填充它们。
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}]
空行
若要指定空行,请使用空阵列 ([])。
在前面的片段中,空阵列会改变 think-cell 将 PowerPoint Theme 配色方案应用到图表系列的方式(请参阅图表填充方案)。配色方案将深绿色分配给第 3 行中的系列。通过将第 3 行留空,系列Competitor 1和Our brand现位于第 4 行和第 5 行,配色方案分别为其分配浅蓝色和深蓝色。
可选行和列
在 PowerPoint 模板的图表数据表中,您可以添加或删除可选的行和列(请参阅编辑数据表布局)。这样做会影响 think-cell 解释相应行和列中的 JSON 数据的方式。
例如,如果您在图表数据表中添加 100%= 行,think-cell 会将第二行 JSON 数据解释为总计,再根据总计计算百分比。如果省略100%=行,如此示例所示,think-cell 会将第二行中的 JSON 数据解释为普通数据点。
下表总结了常见的可选行和列、这些行和列在数据表中的位置及这些行和列的默认设置。若要检查特定图表的数据布局,请双击图表以打开其数据表。
|
Option |
Contents |
Datasheet position |
Default setting |
|---|---|---|---|
|
Series |
系列标签 |
第 1 列 |
已选择 |
|
Category |
类别标签 |
第 1 行 |
已选择 |
|
100%= |
用于计算百分比的总计 |
第 2 行(如果选择了“Category”) 第 1 行(如果未选择“Category”) |
未选择 |
自动化文本字段、哈维球和复选框
使用 JSON 数据填充自动化文本字段、单个哈维球和单个复选框时,think-cell 预期一个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 数据创建演示文稿
think-cell 安装后,就会指示操作系统使用 think-cell 打开 .ppttc 文件。若要在文件资源管理器 (Windows) 或访达 (macOS) 中使用 think-cell 打开 JSON 文件(例如,通过双击),请使用 .ppttc 扩展名。
打开 JSON 文件时,think-cell 会执行以下操作:
- think-cell 读取文件并检查文件是否存在错误。
- think-cell 创建新的演示文稿。演示文稿包含 JSON 文件中顶层阵列中指定的幻灯片模板的副本。
- 在模板副本中,think-cell 会用相应的数据(在
table中指定)填充元素(用name来标识)。元素会相应地更新。 - 新的演示文稿将在 PowerPoint 中打开。您可以保存或进一步编辑演示文稿。
从命令行创建演示文稿
通过输入以下内容,根据命令行中的 JSON 数据创建演示文稿:
PPTTC_PATH PPTTC_INPUT -o PPTX_OUTPUT
替换以下内容:
PPTTC_PATH:ppttc.exe的路径PPTTC_INPUT:.ppttc 文件的路径PPTX_OUTPUT:您创建的 .pptx 文件的名称,前跟文件的保存路径
可执行文件 ppttc.exe 位于 think-cell 安装文件夹的 ppttc 中。在自动化脚本中调用 ppttc.exe,以创建新的 PowerPoint 演示文稿。
远程提供 JSON 数据
为服务器上的 .ppttc 文件远程生成 JSON 数据。若要创建新的演示文稿,用户可从网页浏览器下载 .ppttc 文件,然后使用 think-cell 打开该文件。
如需关于如何使用服务器生成和下载 JSON 数据的举例说明,请参阅 think-cell 安装文件夹中的 /ppttc/sample.html。文件 sample.html 包含以下元素:
- 按钮的 HTML 标记,单击该按钮即会对 JSON 数据进行动态编译
- 一些静态 JSON 数据。在典型用例中,JSON 数据来自其他来源。
- 某 JavaScript 函数,可将 .ppttc 文件下载到用户的计算机
用户下载 .ppttc 文件后,可以保存或打开该文件。用户打开文件时,think-cell 会使用 JSON 数据创建新的演示文稿(请参阅使用 JSON 数据创建演示文稿)。
远程提供模板
若要通过服务器提供 PowerPoint 模板,请执行以下操作:
- 在 JSON 文件中,提供 URL 而不是
template密钥的本地路径。URL 协议可以是 HTTP 或 HTTPS。 - 确保打开 .ppttc 文件的用户有权访问远程模板。
只需在用户的计算机上进行标准 think-cell 安装,就足以使用远程 JSON 数据和模板来生成 think-cell 演示文稿。
远程创建演示文稿
设置自动化工作流程,在这些工作流程中,用户下载包含自定义数据的 think-cell 演示文稿。用户只需使用网页浏览器即可下载演示文稿,而无需在计算机上安装 think-cell。
设置这些工作流程需要 think-cell 服务器,该服务器仅可在 Windows 上运行。think-cell 服务器将 JSON 数据作为输入,将 PowerPoint 演示文稿作为输出。
运行 think-cell 服务器
若要启动 think-cell 服务器,请按照以下步骤操作:
- 在 think-cell 安装文件夹中,运行
tcserver.exe。 - 输入用于指定服务器应侦听的 IP 地址和端口的 URL。服务器协议是 HTTP 或 HTTPS。
- 选择“Register URL”。
- 出现提示时,允许 think-cell 服务器对您的设备进行更改。
若要停止 think-cell 服务器,请按照以下步骤操作:
- 选择“Unregister URL”。
- 出现提示时,允许 think-cell 服务器对您的设备进行更改。
“Log”字段显示以下内容:
- 确认服务器已开始或停止侦听 URL
- 所有客户端请求和服务器响应
服务器接受 JSON 数据作为媒体类型(又称为 MIME 类型)为 application/vnd.think-cell.ppttc+json 的 HTTP POST 请求,并以 PowerPoint 文件提供响应。
作为自动启动服务运行
若要在打开计算机时自动启动 think-cell 服务器,请按照以下步骤操作:
- 在“think-cell server”对话框中,选择“Run as auto-start service”选项。
- 在“Password”字段中,输入“Run as auto-start service”选项中指定的帐户的密码。
试试吧!
使用我们现成的示例,单击按钮即可创建 PowerPoint 演示文稿。
- 使用 URL
http://127.0.0.1:8080启动 think-cell 服务器。 - 在浏览器中打开
http://127.0.0.1:8080。 - 网页“ppttc 测试”将打开。选择“Send .ppttc to server and get .pptx”。
think-cell 服务器根据 JSON 数据创建 PowerPoint 演示文稿。浏览器将演示文稿下载到您的计算机。
“ppttc 测试”页面的 HTML 源代码展示了 think-cell JSON 自动化的可能用途。源代码可以作为您自己的自动化工作流程的起点。代码包含以下元素:
- 按钮的 HTML 标记,在受到点击时,按钮会使用
XMLHttpRequest调用某种方法,以便与服务器进行通信。 - 一些静态 JSON 数据。在典型用例中,JSON 数据来自其他来源。
- 某 JavaScript 函数,可将 JSON 数据发送到 think-cell 服务器。服务器会生成对静态 JSON 数据的 HTTP POST 请求。服务器响应是文件下载。
“ppttc 测试”页面使用 JavaScript 发送 HTTP POST 请求,并将 think-cell 服务器的响应保存为 PowerPoint 文件。显然,其他语言也有效。