26. Automatización con datos de JSON

Puede utilizar datos en JSON para duplicar gráficos creados primero como plantilla y suministrarles una nueva hoja de datos. Puede controlar el orden en que se utilizan las plantillas específicas para crear una nueva presentación. Las plantillas también se pueden utilizar varias veces.

Tanto las plantillas de PowerPoint como los datos de JSON se pueden almacenar de forma local o remota. Los datos JSON se pueden incluso generar sobre la marcha por un servicio web.

26.1
Estructura de datos JSON para think-cell
26.2
Uso de datos JSON para crear una presentación
26.3
Suministro de datos JSON de forma remota
26.4
Suministro de la plantilla de forma remota
26.5
Procesamiento de datos JSON de forma remota

26.1 Estructura de datos JSON para think-cell

A continuación se muestra un ejemplo de datos JSON para think-cell y se puede encontrar en el archivo sample.ppttc en la subcarpeta ppttc del directorio de instalación de think-cell. JSON especifica una presentación que se creará a partir de una concatenación de plantillas. Se ajusta al esquema en ppttc/ppttc-schema.json.

ejemplo de archivo JSON para la automatización de think-cell.

En el nivel de base, hay una matriz de elementos. Cada elemento especifica un archivo de plantilla y datos para sus gráficos. Se pueden concatenar diferentes plantillas y una única plantilla se puede utilizar más de una vez. En el caso más simple, una única plantilla se utiliza una única vez para rellenar todos los gráficos contenidos en esa plantilla con datos.

Cada uno de los elementos de la matriz de plantillas concatenadas contiene dos claves: image.  template y image.  data. El valor correspondiente a image.  template es la ruta de acceso a un archivo de PowerPoint con gráficos de think-cell para el cual se ha establecido un nombre a modo de identificador (consulte 24. Introducción a la automatización). El archivo de plantilla también se puede recuperar desde una ubicación remota como se describe en Suministro de datos JSON de forma remota.

El valor de la clave image.  data es una lista de tablas de datos en formato JSON correspondientes a los gráficos contenidos en la plantilla. Cada elemento de la lista tiene dos propiedades: image.  name y image.  table. image.  name especifica un gráfico utilizando su nombre y image.  table contiene la tabla de datos.

La estructura del valor perteneciente a image.  table corresponde directamente a una hoja de datos sin transposición con filas que representan series y columnas que representan categorías. Para un gráfico predeterminado que significa el siguiente orden de filas estará representado:

  1. Primero una fila con una celda vacía (null) y luego celdas con nombres de categorías.
  2. Una fila de valores 100 %. Si no se utilizan valores 100 %, la fila vacía se especifica como image.  [].
  3. Varias filas con una primera celda que dan el nombre de la serie y las celdas posteriores que contienen valores numéricos.

Se puede hacer referencia en JSON a cualquier gráfico al que se pueda nombrar. Para su diseño específico de la hoja de datos, consulte su capítulo respectivo o simplemente abra la hoja de datos interna del gráfico a modo de referencia.

Nota: Las celdas comprendidas en el rango de la hoja de datos de think-cell pueden contener cualquier tipo de texto. Si lo desea, también puede llenarse la primera celda en la primera fila.

Los datos que componen el valor de una clave table deben cumplir con ciertas reglas establecidas en el esquema. El valor para una clave table en sí es una matriz. Los submatrices representan las filas de la hoja de datos. Las filas vacías se pueden especificar utilizando una matriz vacía []. El contenido de una celda se describe mediante los elementos enumerados en dicha submatriz. El orden de los elementos corresponde al orden de las columnas en una hoja de datos. Una celda vacía debe describirse de forma explícita utilizando el elemento null. Las celdas con contenido deben describirse utilizando otro par clave-valor. En este caso, la clave describe el tipo de datos y el valor contiene los datos reales que se mostrarán en la presentación. Tres tipos de datos diferentes son compatibles:

image.  string para cualquier tipo de texto. Todos los caracteres unicode imprimibles (UTF-8) son compatibles. Ejemplo: {"string":"Echo"}

image.  number para cualquier tipo de número. El separador decimal utilizado tiene que ser un punto. Ejemplo: {"number":"5"}

image.  date para fechas. El formato necesario es YYYY-MM-DD. Ejemplo: {"date":"2016-09-04"}

Cualquier formato de los contenidos de las celdas (por ejemplo, especificación del formato de fecha) tiene que hacerse en la plantilla de PowerPoint.

En cuanto a campos de texto a los que se les haya asignado un nombre, el elemento table consta de una “celda” en una “fila”, de modo que usted tiene que utilizar una matriz JSON, como en el fragmento siguiente, que aparecería una vez por cada campo de texto con nombre asignado que haya dentro de cualquier elemento data:

{ 
  "name": "Title", 
  "table": [[{"string":"A slide title"}]] 
},

26.2 Uso de datos JSON para crear una presentación

El archivo de datos JSON debe tener un tipo de archivo de .ppttc. Al abrir un archivo como este:

  1. think-cell lee el archivo y verifica su integridad estructural.
  2. Se crea una nueva presentación. Para cada elemento en el nivel superior del archivo JSON, la nueva presentación contiene una copia de la plantilla especificada.
  3. En las copias de la plantilla, las hojas de datos de los gráficos identificados por los valores name se reemplazan con los datos en los valorestable. Se actualizan todas las etiquetas totales, colocaciones de etiqueta y valores de flecha de diferencia u otras decoraciones de gráfico.

Después de esto, se muestra la nueva presentación. El usuario puede editar sus contenidos y guardarlos o usarlos de cualquier otra forma.

La línea de comandos también permite crear presentaciones a partir de datos JSON:

ppttc input.ppttc -o output.pptx

El ejecutable ppttc.exe está ubicado en la carpeta de instalación de think-cell. La invocación de ppttc.exe puede ser integrada con facilidad en los flujos de trabajo de automatización.

26.3 Suministro de datos JSON de forma remota

Los datos de JSON en el archivo .ppttc también se pueden generar de forma remota a través de un servicio web y se le ofrece al usuario la posibilidad de descarga en un explorador web. Por favor, mire la muestra proporcionada a continuación y en sample.html en la subcarpeta ppttc del directorio de instalación de think-cell.

<!DOCTYPE html> 
<html> 
<body> 
 
<h1>ppttc test</h1> 
 
<button type="button" onclick="myFunction()"> 
Download .ppttc 
</button> 
 
<a id="downloader" style="display:none"/> 
 
<script> 
function myFunction() { 
  var obj = [ 
    { 
      template : "https://static.think-cell.com/ppttc/template.pptx", 
      data: [ 
        { 
          name: "Chart1", 
          table: [ 
            [null, {string:"Alpha"},{string:"Bravo"},{string:"Charlie"}], 
            [], 
            [{string:"Delta"},{number:1},{number:2},{number:3}], 
            [{string:"Echo"},{number:4},{number:5},{number:6}] 
          ] 
        }, 
        { 
          name: "Chart2", 
          table: [ 
            [null, {date:"2016-09-03"},{date:"2016-09-04"},{date:"2016-09-05"}], 
            [], 
            [{string:"Foxtrot"},{number:7},{number:8},{number:9}], 
            [{string:"Gulf"},{number:10},{number:11},{number:12}] 
          ] 
        } 
      ] 
    } 
  ]; 
  var elemDownloader = document.getElementById("downloader"); 
  elemDownloader.setAttribute("href","data:application/vnd.think-cell.ppttc+json;charset=utf-8," 
    + encodeURIComponent(JSON.stringify(obj))); 
  elemDownloader.setAttribute("download", "sample.ppttc"); 
  elemDownloader.click(); 
} 
</script> 
 
</body> 
</html>

En nuestro ejemplo, los datos JSON se compilan sobre la marcha cuando el usuario solicita una descarga. Si bien el ejemplo incluye datos estáticos, puede, por supuesto, crear JSON dinámicamente a partir de otras orígenes de datos utilizando parámetros proporcionados por el usuario en su sitio web.

Si se descarga un archivo .ppttc, el usuario puede elegir desde guardar el archivo o abrirlo de manera similar a otras descargas. Al abrir el archivo, los datos de JSON se utilizan para crear una nueva presentación como se describe en Uso de datos JSON para crear una presentación.

26.4 Suministro de la plantilla de forma remota

Los archivos de plantilla con gráficos de think-cell también se pueden proporcionar a través de un servidor remoto. En este caso, el valor de la clave template es una URL en lugar de una ruta local, como se muestra en el ejemplo remoto anterior de JSON. La URL puede especificar http como el protocolo,https para una conexión segura o cualquier otro protocolo válido en el sistema donde se abre el archivo .ppttc.

Al procesar un archivo .ppttc que hace referencia a una plantilla remota, PowerPoint recupera el archivo de plantilla. Por ello, el usuario que abrió el archivo .ppttc necesita un acceso apropiado a la plantilla remota.

Cuando los datos JSON se generan en remoto por medio de un servicio web y las plantillas también se almacenan en remoto, solo se necesita una instalación estándar de think-cell en el equipo del usuario para utilizar presentaciones de PowerPoint generadas de forma dinámica con gráficos de think-cell.

26.5 Procesamiento de datos JSON de forma remota

El procesamiento que think-cell realiza de datos JSON se puede efectuar como servidor. En ese caso, la combinación de datos JSON con plantillas para crear presentaciones de PowerPoint se realiza en un servidor remoto. El servidor acepta fragmentos JSON como entrada y genera las presentaciones de PowerPoint combinadas como salida, ambos a través del protocolo HTTP.

Para iniciar el servidor de think-cell, vaya a la carpeta de instalación y ejecute el archivo tcserver.exe. Se abre el cuadro de diálogo siguiente:

Cuadro de diálogo de configuración del servidor think-cell.

Para iniciar el servidor:

  1. Especifique en formato URL la dirección IP y el puerto en los que el servidor debe escuchar en el campo UrlPrefix. La primera parte de la URL determina si se utiliza protocolo sin cifrado (HTTP) o con cifrado (HTTPS).
  2. Haga clic en el botón Aplicar.
  3. Confirme los cambios de configuración de su sistema en el cuadro de diálogo Control de cuentas de usuario (UAC) que aparece.

En el campo Registro, situado en la parte inferior de la ventana, se ve la confirmación de que el servidor se ha iniciado y de que está a la escucha de una URL. Además, en el campo Registro se ven todas las solicitudes de cliente y respuestas del servidor.

Cuadro de diálogo del servidor de think-cell con mensajes de registro.

Para detener el servidor, haga clic en el botón Eliminar. Para cambiar la URL, especifique una URL nueva en el campo UrlPrefix y haga clic en Aplicar.

El servidor acepta datos JSON a modo de solicitud HTTP POST con el tipo MIME application/vnd.think-cell.ppttc+json y responde con archivos de PowerPoint.

Para comenzar a utilizar el servidor, copie la URL del campo UrlPrefix y ábrala en un navegador. Se abre una página de muestra. El servidor genera su propia documentación y el código fuente HTML de la página de muestra ilustra su uso y un ejemplo detallado. El ejemplo contiene los elementos enumerados a continuación:

  • Marcado HTML para un botón que, al ser pulsado, invoca un método que utiliza XMLHttpRequest para comunicarse con el servidor.
  • Un fragmento JSON estático. En el uso que haga el usuario, lo que ocurre habitualmente es que este genera datos JSON de forma dinámica.
  • Una función JavaScript para enviar los datos JSON al servidor. Genera la solicitud HTTP POST con los datos JSON estáticos. La respuesta del servidor se presenta al navegador en forma de descarga de archivos.

También funciona cualquier otro método con el que generar solicitudes POST HTTP y almacenar respuestas del servidor en forma de archivo de PowerPoint. En el uso que haga el usuario, este no está limitado al uso de JavaScript con ese fin.

Compartir