Automatización con datos de JSON

Cree automáticamente presentaciones de think-cell con JavaScript Object Notation (JSON). Con la automatización JSON de think-cell, puede hacer lo siguiente:

  • Rellene las plantillas de PowerPoint con datos (por ejemplo, títulos de diapositivas y gráficos)
  • Reutilizar y reordenar plantillas para crear nuevas presentaciones
  • Usar datos JSON y plantillas de PowerPoint de origen local o remoto
  • Convertir los datos en tiempo real en nuevas presentaciones con un servicio web

Estructura de archivos JSON

Esta sección explica cómo estructurar el archivo JSON. Los fragmentos de un archivo de ejemplo, sample.ppttc, acompañan esta explicación. Consulte el ejemplo completo al final de esta sección (Ejemplo de JSON completo).

En la carpeta de instalación de think-cell, la carpeta ppttc contiene los siguientes archivos:

  • El esquema JSON ppttc-schema.json
  • La Plantilla de PowerPoint template.pptx
  • El archivo de datos JSON sample.ppttc

El archivo ppttc-schema.json describe las reglas que debe seguir un archivo .ppttc para crear una presentación de PowerPoint con think-cell.

El archivo template.pptx contiene elementos con nombre (consulte Automatización avanzada de informes). Una plantilla puede tener cualquier número de diapositivas.

El archivo sample.ppttc especifica:

  • Las plantillas que think-cell utilizará para crear una nueva presentación
  • El orden en que aparecerán las plantillas
  • Los datos JSON que rellenan las plantillas

Especificar plantillas, elementos y sus datos

El ejemplo sample.ppttc muestra una matriz que representa una presentación de PowerPoint (consulte Ejemplo de JSON completo).

Plantillas

La matriz contiene una serie de objetos, cada uno de los cuales representa una copia de una plantilla de PowerPoint. En la nueva presentación, las plantillas aparecen en el orden especificado en la matriz. Si una plantilla tiene varias diapositivas, solo puede modificar el orden de estas editando la plantilla en PowerPoint.

En la matriz, cada objeto de plantilla debe tener dos propiedades: template y data.

template

La propiedad template es una cadena que especifica la plantilla de PowerPoint que desea utilizar. La cadena puede ser una de las siguientes:

  • Si ha almacenado la plantilla localmente, especifique la ruta relativa o absoluta de la plantilla en el sistema de archivos local. El separador de directorio debe ser una barra diagonal inversa (\) en Windows, transformada en una barra diagonal inversa doble (\\) en JSON, o una barra diagonal (/) en macOS.

En el caso más sencillo, como se muestra en Ejemplo de JSON completo, la cadena template es solo el nombre de archivo de la plantilla de PowerPoint, dado que la plantilla está en la misma carpeta que el archivo .ppttc.

"template": "template.pptx",
data

La propiedad data es una matriz de objetos que especifica lo siguiente:

Los objetos pueden aparecer en cualquier orden en la matriz data, independientemente de la posición de sus elementos correspondientes en la plantilla de PowerPoint.

"data": [ ... ]

Elementos

Cada objeto de la matriz data tiene dos propiedades:

  • name especifica el nombre de un elemento, que asigna usted en AddRangeData Name (consulte Automatización avanzada de informes).
  • table especifica los datos que rellenan el elemento.

Si dos elementos tienen el mismo nombre, think-cell los rellena con los mismos datos.

El valor table es una matriz. La estructura de la matriz depende del tipo de elemento:

  • Para un campo de texto de automatización, Harvey Ball o casilla de verificación, la matriz table contiene una sola submatriz con un solo objeto. El objeto, como una cadena de texto o un número, rellena el campo de texto.
  • Para un gráfico o tabla, la matriz table contiene submatrices que representan la hoja de datos del elemento.
{
	"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}]
	]
},

Estructura de la hoja de datos del gráfico

Para un gráfico, cada submatriz de la matriz table representa una fila de la hoja de datos de un gráfico. Para ver el diseño específico de la hoja de datos de un gráfico, consulte el capítulo respectivo en el manual del usuario o abra la hoja de datos del gráfico como referencia (consulte Introducir datos en el gráfico). A continuación se describe la estructura de las filas de un gráfico predeterminado, como se especifica en el esquema JSON.

Primera fila

La primera fila es una submatriz que contiene etiquetas de categoría. Una primera celda vacía (null) precede a las etiquetas de categoría. Los datos de la primera celda no aparecen en el gráfico, por lo que pueden contener cualquier información.

[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"}],

Filas posteriores

Las siguientes filas son submatrices que contienen las etiquetas de serie y los puntos de datos del gráfico. El orden de los elementos en una submatriz corresponde al orden de las celdas en una fila de una hoja de datos. La primera celda de la fila contiene la etiqueta de serie, que suele ser una cadena. Las celdas posteriores de la fila deben contener números o, para los gráficos de Gantt, fechas.

[{"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}]

Filas vacías

Para especificar una fila vacía, utilice una matriz vacía ([]).

En el fragmento anterior, la matriz vacía cambia la forma en que think-cell aplica la combinación de colores PowerPoint Theme a la serie del gráfico (consulte Esquema de relleno de gráficos). La combinación de colores asigna verde oscuro a la serie de la fila 3. Dejando la fila 3 en blanco, las series Competitor 1 y Our brand ahora están en las filas 4 y 5, a las que la combinación de colores asigna azul claro y azul oscuro, respectivamente.

Filas y columnas opcionales

En las hojas de datos de gráficos de la plantilla de PowerPoint, puede añadir o quitar filas y columnas opcionales (consulte Editar diseño de hoja de datos). Esto afecta a la forma en que think-cell interpreta los datos JSON en las filas y columnas correspondientes.

Por ejemplo, si añade la fila 100%= en una hoja de datos de gráfico, think-cell interpreta la segunda fila de datos JSON como los totales a partir de los cuales se calculan los porcentajes. Si omite la fila 100%=, como en este ejemplo, think-cell interpreta los datos JSON de la segunda fila como puntos de datos ordinarios.

La siguiente tabla resume las filas y columnas opcionales comunes, sus posiciones de hoja de datos y su configuración predeterminada. Para comprobar el diseño de datos de un gráfico específico, haga doble clic en el gráfico para abrir su hoja de datos.

Option

Contents

Datasheet position

Default setting

Series

Etiquetas de series

Columna 1

Seleccionado

Category

Etiqueta de categoría

Fila 1

Seleccionado

100%=

Totales para cálculos de porcentaje

Fila 2 (si Category está seleccionada)

Fila 1 (si Category no está seleccionada)

No seleccionado

Campos de texto de automatización, Harvey balls y casillas de verificación

Al rellenar campos de texto de automatización, Harvey balls individuales y casillas de verificación individuales con datos JSON, think-cell espera una matriz table con una celda. Dentro de la matriz table, la celda se representa como una sola submatriz que contiene un solo objeto.

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

Si una Harvey ball o casilla de verificación forma parte de una tabla, simplemente especifique el contenido del elemento en su celda de tabla correspondiente.

Tipos de datos de celda

En un archivo .ppttc, las celdas pueden contener los siguientes tipos de datos.

Data type

Key

Example

Notes

Texto

string

{"string": "Our brand"}

Todos los caracteres unicode imprimibles (UTF-8) son compatibles.

Número

number

{"number": 12.5}

El separador decimal debe ser un punto (.).

Fecha

date

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

Formato obligatorio: "YYYY-MM-DD" (ISO 8601)

Porcentaje

percentage

{"percentage": 50.5}

El separador decimal debe ser un punto (.). No incluya el signo de porcentaje (%).

Color de relleno de celda de hoja de datos

fill

Hexagonal: {"number": 12, "fill": "#ff0000"}

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

Añada fill y su valor hexadecimal o RBG a otra clave.

Para aplicar los colores de relleno de la hoja de datos a las funciones del gráfico, en la plantilla de PowerPoint, seleccione Use Datasheet Fill (consulte Esquema de relleno de gráficos).

Celda vacía

No aplicable

null

No lo delimite null por comillas.

Ejemplo de JSON completo

Vea el ejemplo completo de JSON de sample.ppttc a continuación:

[
	{
		"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}]
				]
			}
		]
	}
]

Crear presentaciones con datos JSON

Cuando think-cell está instalado, le indica a su sistema operativo que abra archivos .ppttc con think-cell. Para abrir archivos JSON con think-cell en el Explorador de archivos (Windows) o en Finder (macOS), por ejemplo, haciendo doble clic, utilice la extensión .ppttc.

Cuando se abre un archivo JSON, think-cell hace lo siguiente:

  1. think-cell lee el archivo y lo comprueba en busca de errores.
  2. think-cell crea una nueva presentación. La presentación consta de copias de las plantillas de diapositivas especificadas en la matriz de nivel superior del archivo JSON.
  3. En las copias de plantilla, think-cell rellena los elementos (identificados por name) con sus datos correspondientes (especificados en table). Los elementos se actualizan en consecuencia.
  4. La nueva presentación se abre en PowerPoint. Puede guardar o editar la presentación.

Crear presentaciones desde la línea de comandos

Solo Windows

Cree una presentación a partir de los datos JSON de la línea de comandos introduciendo lo siguiente:

 PPTTC_PATH PPTTC_INPUT -o PPTX_OUTPUT 

Sustituya lo siguiente:

  • PPTTC_PATH: la ruta de ppttc.exe
  • PPTTC_INPUT: la ruta de su archivo .ppttc
  • PPTX_OUTPUT: el nombre del archivo .pptx que crea, precedido por la ruta donde desea guardarlo

El ejecutable ppttc.exe está ubicado en ppttc en la carpeta de instalación de think-cell. Llame a ppttc.exe en los guiones de automatización para crear nuevas presentaciones de PowerPoint.

Proporcionar datos JSON de forma remota

Genere datos JSON de forma remota para un archivo .ppttc en un servidor. Para crear una nueva presentación, el usuario descarga el archivo .ppttc desde un navegador web y lo abre con think-cell.

Para ver un ejemplo de cómo generar y descargar datos JSON con un servidor, en la carpeta de instalación de think-cell, consulte /ppttc/sample.html. El archivo sample.html contiene los elementos siguientes:

  • Marca HTML para un botón que, al hacer clic en él, recopila datos JSON sobre la marcha
  • Algunos datos JSON estáticos. En un caso de uso típico, los datos JSON provienen de otro origen.
  • Una función JavaScript que descarga el archivo .ppttc en el ordenador del usuario

Después de que el usuario descargue el archivo .ppttc, puede guardarlo o abrirlo. Cuando el usuario abre el archivo, think-cell crea una nueva presentación utilizando los datos JSON (consulte Crear presentaciones con datos JSON).

Proporcionar plantillas de forma remota

Para proporcionar plantillas de PowerPoint a través de un servidor, haga lo siguiente:

  • En el archivo JSON, proporcione una URL en lugar de una ruta local para la clave template. El protocolo URL puede ser HTTP o HTTPS.
  • Asegúrese de que el usuario que abre el archivo .ppttc tenga acceso a la plantilla remota.

Una instalación estándar de think-cell en la máquina del usuario es suficiente para generar presentaciones de think-cell con plantillas y datos JSON remotos.

Crear presentaciones de forma remota

Configure flujos de trabajo automatizados en los que los usuarios descarguen presentaciones de think-cell con datos personalizados. Para descargar presentaciones, los usuarios solo necesitan un navegador web. No necesitan tener think-cell instalado en su ordenador.

La configuración de estos flujos de trabajo requiere el servidor de think-cell, que solo funciona en Windows. El servidor de think-cell toma los datos JSON como entrada y ofrece presentaciones de PowerPoint como salida.

Ejecutar el servidor de think-cell

Solo Windows

Para iniciar el servidor de think-cell, siga estos pasos:

  1. En la carpeta de instalación de think-cell, ejecute tcserver.exe.
  2. Introduzca una URL que especifique la dirección IP y el puerto en el que el servidor debe escuchar. El protocolo del servidor es HTTP o HTTPS.
  3. Seleccione Register URL.
  4. Cuando se le solicite, permita que el servidor de think-cell realice cambios en su dispositivo.

Para detener el servidor de think-cell, siga estos pasos:

  1. Seleccione Unregister URL.
  2. Cuando se le solicite, permita que el servidor de think-cell realice cambios en su dispositivo.

El campo Log muestra lo siguiente:

  • Confirmación de que el servidor ha empezado a escuchar o ha dejado de hacerlo en una URL
  • Todas las solicitudes del cliente y respuestas del servidor

El servidor acepta datos JSON a modo de solicitudes HTTP POST con el tipo de medio (también llamado MIME) application/vnd.think-cell.ppttc+json y responde con archivos de PowerPoint.

Ejecutar como servicio de inicio automático

Para iniciar automáticamente el servidor de think-cell al encender el ordenador, siga estos pasos:

  1. En el cuadro de diálogo think-cell server, seleccione la opción Run as auto-start service.
  2. En Password, introduzca la contraseña de la cuenta nombrada en la opción Run as auto-start service.

¡Pruébelo!

Solo Windows

Cree una presentación de PowerPoint con solo hacer clic en un botón utilizando nuestro ejemplo listo para usar.

  1. Inicie el servidor de think-cell con la URL http://127.0.0.1:8080.
  2. Abrir http://127.0.0.1:8080 en un navegador.
  3. Se abrirá la página web “prueba ppttc”. Seleccione Send .ppttc to server and get .pptx.

El servidor de think-cell crea una presentación de PowerPoint a partir de datos JSON. El navegador descarga la presentación en su ordenador.

El código fuente HTML de la página “prueba ppttc” demuestra un posible uso de la automatización JSON de think-cell. El código fuente puede servir como punto de partida para su propio flujo de trabajo automatizado. El código contiene los elementos enumerados a continuación:

  • Marcado HTML para un botón que, al pulsarlo, invoca un método que utiliza XMLHttpRequest para comunicarse con el servidor de think-cell.
  • Algunos datos JSON estáticos. En un caso de uso típico, los datos JSON provienen de otro origen.
  • Una función JavaScript para enviar los datos JSON al servidor de think-cell. El servidor genera la solicitud HTTP POST con los datos JSON estáticos. La respuesta del servidor es una descarga de archivo.

La página “prueba ppttc” utiliza JavaScript para enviar solicitudes HTTP POST y guardar la respuesta del servidor de think-cell como archivo PowerPoint. Obviamente, otros idiomas también funcionan.