使用 JSON 数据实现自动化

使用 JavaScript Object Notation (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 描述了 .ppttc 文件必须遵循的规则,用于通过 thinkcell 创建 PowerPoint 演示文稿。

文件 template.pptx 包含命名元素(请参阅 高级报告自动化)。一个模板可以包含任意数量的幻灯片。

文件 sample.ppttc 指定:

  • thinkcell 将用于创建新演示文稿的模板
  • 模板的显示顺序
  • 用于填充模板的 JSON 数据

指定模板、元素及其数据

示例 sample.ppttc 展示了一个表示 PowerPoint 演示文稿的数组(请参阅 完整 JSON 示例)。

模板

该数组包含一系列对象,每个对象都表示一个 PowerPoint 模板副本。在新演示文稿中,模板会按您在数组中指定的顺序显示。如果一个模板包含多张幻灯片,您只能通过在 PowerPoint 中编辑模板来修改幻灯片顺序。

在数组中,每个模板对象都必须包含两个属性:template 和 data。

template

template 属性是一个字符串,用于指定要使用的 PowerPoint 模板。该字符串可以是以下任一形式:

  • 如果您已将模板存储在本地,请指定模板在本地文件系统中的相对路径或绝对路径。目录分隔符在 Windows 上必须是反斜杠 (\)(在 JSON 中转义为双反斜杠 (\\)),在 macOS 上必须是斜杠 (/)。
  • 如果您已将模板远程存储,请指定模板存储位置的 URL(请参阅 远程提供模板)。

在最简单的情况下,如 完整 JSON 示例 所示,如果模板与 .ppttc 文件位于同一文件夹中,template 字符串只需是 PowerPoint 模板的文件名。

"template": "template.pptx",
data

data 属性是一个对象数组,用于指定以下内容:

  • 具有 AddRangeData 名称的图表和其他元素(请参阅 高级报告自动化)
  • 用于填充这些元素的数据

这些对象可以按任意顺序出现在 data 数组中,与其在 PowerPoint 模板中对应元素的位置无关。

"data": [ ... ]

元素

data 数组中的每个对象都有两个属性:

  • name 指定元素名称,您可在 AddRangeData Name 中分配该名称(请参阅 高级报告自动化)。
  • table 指定用于填充元素的数据。

如果两个元素名称相同,thinkcell 会用相同的数据填充它们。

table 值是一个数组。该数组的结构取决于元素类型:

  • 对于自动化文本字段、Harvey ball 或复选框,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 数据解释为普通数据点。

下表总结了常见的可选行和列、它们在数据表中的位置以及默认设置。要检查特定图表的数据布局,请双击该图表以打开其数据表。

选项

内容

数据表位置

默认设置

Series

系列标签

第 1 列

已选中

Category

类别标签

第 1 行

已选中

100%=

用于百分比计算的总计

第 2 行(如果已选择 Category)
第 1 行(如果未选择 Category)

未选中

自动化文本字段、Harvey ball 和复选框

使用 JSON 数据填充自动化文本字段、单个 Harvey ball 和单个复选框时,thinkcell 需要一个包含一个单元格的 table 数组。在 table 数组中,该单元格表示为一个包含单个对象的子数组。

{
	"name": "SlideTitle",
	"table": [[{"string": "Competition: Germany"}]]
},

如果 Harvey ball 或复选框是表格的一部分,只需在其对应的表格单元格中指定该元素的内容。

单元格数据类型

在 .ppttc 文件中,单元格可以包含以下数据类型。

数据类型

键

示例

说明

文本

string

{"string": "Our brand"}

支持所有可打印的 Unicode (UTF-8) 字符。

数字

number

{"number": 12.5}

小数分隔符必须是点 (.)。

日历日期

date

{"date": "2024-01-01"}

必需格式:"YYYY-MM-DD" (ISO 8601)

百分比

percentage

{"percentage": 50.5}

小数分隔符必须是点 (.)。请勿包含百分号 (%)。

数据表单元格填充颜色

fill

十六进制:{"number": 12, "fill": "#ff0000"}

RGB:{"number": 12, "fill": "rgb(255,0,0)"}

将 fill 及其十六进制或 RBG 值添加到另一个键。

要将数据表填充颜色应用到图表功能,请在 PowerPoint 模板中选择 Use Datasheet Fill(请参阅 图表填充方案)。

空单元格

不适用

null

不要将 null 放在引号中。

完整 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 会执行以下操作:

  1. thinkcell 读取文件并检查错误。
  2. thinkcell 创建新的演示文稿。该演示文稿由 JSON 文件中顶级数组所指定的幻灯片模板副本组成。
  3. 在模板副本中,thinkcell 使用相应数据(在 table 中指定)填充元素(由 name 标识)。这些元素会相应更新。
  4. 新演示文稿会在 PowerPoint 中打开。您可以保存或继续编辑该演示文稿。

从命令行创建演示文稿

仅限 Windows

在命令行中输入以下内容,即可基于 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 数据。要创建新演示文稿,用户从 Web 浏览器下载 .ppttc 文件,并使用 thinkcell 打开。

有关如何通过服务器生成和下载 JSON 数据的示例,请参阅 thinkcell 安装文件夹中的 /ppttc/sample.html。文件 sample.html 包含以下元素:

  • 用于按钮的 HTML 标记,点击后会即时编译 JSON 数据
  • 一些静态 JSON 数据。在典型用例中,JSON 数据来自其他来源。
  • 将 .ppttc 文件下载到用户计算机的 JavaScript 函数

用户下载 .ppttc 文件后,可以保存或打开该文件。当用户打开文件时,thinkcell 会使用 JSON 数据创建新的演示文稿(请参阅 使用 JSON 数据创建演示文稿)。

远程提供模板

要通过服务器提供 PowerPoint 模板,请执行以下操作:

  • 在 JSON 文件中,为 template 键提供 URL,而不是本地路径。URL 协议可以是 HTTP 或 HTTPS。
  • 确保打开 .ppttc 文件的用户有权访问远程模板。

用户计算机上安装标准 thinkcell 即可使用远程 JSON 数据和模板生成 thinkcell 演示文稿。

远程创建演示文稿

设置自动化工作流,让用户下载包含自定义数据的 thinkcell 演示文稿。用户只需 Web 浏览器即可下载演示文稿,无需在计算机上安装 thinkcell。

设置这些工作流需要使用 thinkcell 服务器,该服务器仅在 Windows 上运行。thinkcell 服务器以 JSON 数据作为输入,并输出 PowerPoint 演示文稿。

运行 thinkcell 服务器

仅限 Windows

要启动 thinkcell 服务器,请按以下步骤操作:

  1. 在 thinkcell 安装文件夹中,运行 tcserver.exe。
  2. 输入一个 URL,用于指定服务器应监听的 IP 地址和端口。服务器协议为 HTTP 或 HTTPS。
  3. 选择 Register URL。
  4. 出现提示时,允许 thinkcell 服务器对你的设备进行更改。

要停止 thinkcell 服务器,请按以下步骤操作:

  1. 选择 Unregister URL。
  2. 出现提示时,允许 thinkcell 服务器对你的设备进行更改。

Log 字段显示以下内容:

  • 确认服务器已开始或停止监听某个 URL
  • 所有客户端请求和服务器响应

服务器接受媒体类型(又称 MIME 类型)为 application/vnd.think-cell.ppttc+json 的 HTTP POST 请求形式的 JSON 数据,并返回 PowerPoint 文件。

作为自动启动服务运行

要在打开计算机时自动启动 thinkcell 服务器,请按以下步骤操作:

  1. 在 thinkcell server 对话框中,选择 Run as auto-start service 选项。
  2. 在 Password 中,输入 Run as auto-start service 选项中指定账户的密码。

试试看!

仅限 Windows

使用我们的现成示例,只需点击一个按钮即可创建 PowerPoint 演示文稿。

  1. 使用 URL http://127.0.0.1:8080 启动 thinkcell 服务器。
  2. 在浏览器中打开 http://127.0.0.1:8080。
  3. 网页 "ppttc test" 将会打开。选择 Send .ppttc to server and get .pptx。

thinkcell 服务器会基于 JSON 数据创建 PowerPoint 演示文稿。浏览器会将演示文稿下载到你的计算机。

"ppttc test" 页面的 HTML 源代码展示了 thinkcell JSON 自动化的一种可能用法。该源代码可作为你自己的自动化工作流的起点。代码包含以下元素:

  • 用于按钮的 HTML 标记,点击后会调用一个使用 XMLHttpRequest 与 thinkcell 服务器通信的方法。
  • 一些静态 JSON 数据。在典型用例中,JSON 数据来自其他来源。
  • 用于将 JSON 数据发送到 thinkcell 服务器的 JavaScript 函数。服务器会使用静态 JSON 数据生成 HTTP POST 请求。服务器响应是一个文件下载。

"ppttc test" 页面使用 JavaScript 发送 HTTP POST 请求,并将 thinkcell 服务器的响应保存为 PowerPoint 文件。当然,也可以使用其他语言。

需要排查问题吗?

查看我们的知识库