26. Automazione con dati JSON

È possibile utilizzare i dati in JSON per duplicare i grafici creati inizialmente come modello e fornire loro un nuovo foglio dati. È possibile controllare l'ordine in cui vengono utilizzati modelli specifici per costruire una nuova presentazione. È anche possibile utilizzare più volte i modelli.

Sia i modelli di PowerPoint e i dati JSON possono essere archiviati a livello locale o in remoto. I dati JSON possono inoltre essere generati al volo da un servizio Web.

26.1
Struttura dei dati JSON per think-cell
26.2
Utilizzo dei dati JSON per creare una presentazione
26.3
Fornire i dati JSON in remoto
26.4
Fornire il modello in remoto
26.5
Elaborazione dei dati JSON in remoto

26.1 Struttura dei dati JSON per think-cell

Un esempio di dati JSON per think-cell è mostrato sotto e può essere trovato nel file sample.ppttc nella sottocartella ppttc della directory di installazione di think-cell. JSON specifica una presentazione da creare da una concatenazione di modelli. È conforme allo schema ppttc/ppttc-schema.json.

esempio di file JSON per l'automazione think-cell.

Al livello principale c'è una matrice di elementi. Ogni elemento specifica un file modello e dati per i suoi grafici. È possibile concatenare diversi modelli e un singolo modello può essere utilizzato più volte. Nel caso più semplice, un solo modello viene utilizzato una sola volta per riempire tutti i grafici contenuti nel modello con i dati.

Ogni elemento della matrice di modelli concatenati contiene due chiavi: image.  template e image.  data. Il valore per image.  template è il percorso a un file PowerPoint con think-cell per il quale è stato impostato un nome come identificatore (fare riferimento a 24. Introduzione all’automazione). Il file modello può anche essere recuperato da una posizione remota come descritto in Fornire i dati JSON in remoto.

Il valore per la chiave image.  data è un elenco di tabelle di dati in formato JSON per i grafici contenuti nel modello. Ogni elemento nell'elenco ha due proprietà: image.  name e image.  table. image.  name specifica un grafico usando il suo nome e image.  table contiene la tabella dati.

La struttura del valore per image.  table corrisponde direttamente a un foglio dati non trasposto con righe che rappresentano le serie e colonne che rappresentano le categorie. Per un grafico predefinito significa che verrà rappresentato il seguente ordine di righe:

  1. Una riga con prima una cella vuota (null) e poi celle con i nomi delle categorie.
  2. Una riga di 100% valori. Se non viene utilizzato 100% valori, la riga vuota viene specificata come: image.  [].
  3. Multiple righe con una prima cella che fornisce il nome della serie e le celle successive contengono valori numerici.

In JSON si può fare riferimento a qualsiasi grafico a cui può essere assegnato un nome. Per il layout specifico del foglio dati, vedere il rispettivo capitolo o semplicemente aprire il foglio dati interno del grafico per farvi riferimento.

Nota: Una cella nell’intervallo del foglio dati think-cell può contenere qualsiasi tipo di testo. Se lo si desidera, è anche possibile riempire la prima cella nella prima riga.

I dati che compongono il valore per una chiave table devono essere conformi a determinate regole impostate nello schema. Il valore per la chiave table è di per sé una matrice. Le sottomatrici rappresentano le righe del foglio dati. Le righe vuote possono essere specificate utilizzando una matrice vuota []. Il contenuto di una cella è descritto dagli elementi elencati in tale sottomatrice. L'ordine degli elementi corrisponde all'ordine delle colonne in un foglio dati. Una cella vuota deve essere descritta esplicitamente utilizzando l'elemento null. Le celle con un contenuto devono essere descritte utilizzando un'altra coppia chiave-valore. In questo caso, la chiave descrive il tipo di dati e il valore contiene i dati effettivi da mostrare nella presentazione. Sono supportati tre diversi tipi di dati:

image.  string per qualsiasi tipo di testo. Sono supportati tutti i caratteri Unicode (UTF-8) stampabili. Esempio: {"string":"Echo"}

image.  number per qualsiasi tipo di numero. Il separatore decimale utilizzato deve essere un punto. Esempio: {"number":"5"}

image.  date per le date. Il formato obbligatorio è YYYY-MM-DD. Esempio: {"date":"2016-09-04"}

La formattazione del contenuto delle celle (ad esempio, specificare il formato della data) deve essere eseguita nel modello di PowerPoint.

Per i campi di testo con nome, l'elemento table è composto da solo una "cella" in una "riga", quindi è necessario utilizzare una matrice JSON come nel frammento seguente, che potrebbe comparire una volta sala per ogni campo di testo con nome all'interno di un elemento data:

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

26.2 Utilizzo dei dati JSON per creare una presentazione

Il file di dati JSON deve essere un tipo di file .ppttc. Quando si apre un file di questo tipo:

  1. think-cell legge il file e ne verifica l'integrità strutturale.
  2. Viene creata una nuova presentazione. Per ogni elemento al livello più alto del file JSON, la nuova presentazione contiene una copia del modello specificato.
  3. Nelle copie del modello, i fogli dati dei grafici identificati dai valori name vengono sostituiti con i dati nei valori table. Tutte le etichette totali, i posizionamenti delle etichette e i valori della freccia di differenza o altri elementi decorativi dei grafici vengono aggiornati.

Successivamente, viene visualizzata la nuova presentazione. L'utente può modificare ulteriormente i contenuti e salvarli o utilizzarli in qualsiasi altro modo.

È possibile anche creare una presentazione di dati JSON sulla linea di comando:

ppttc input.ppttc -o output.pptx

L'eseguibile ppttc.exe si trova nella cartella di installazione di think-cell. La chiamata ppttc.exe può essere facilmente integrata in flussi di lavoro di automazione.

26.3 Fornire i dati JSON in remoto

I dati JSON in un file .ppttc possono anche essere generati in remoto da un servizio Web e offerti all'utente per il download in un browser Web. Consultare l'esempio fornito sotto e in sample.html nella sottocartella ppttc della directory di installazione di 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>

Nel nostro esempio, i dati JSON vengono compilati al volo quando l'utente richiede un download. Sebbene l'esempio incorpori dati statici, è possibile creare dinamicamente JSON da altre fonti di dati utilizzando i parametri forniti dall'utente sul proprio sito Web.

Quando viene scaricato un file .ppttc, l'utente può scegliere di salvare il file o aprirlo in modo simile ad altri download. Quando si apre il file, i dati JSON vengono utilizzati per creare una nuova presentazione come descritto in Utilizzo dei dati JSON per creare una presentazione.

26.4 Fornire il modello in remoto

I file di modello con think-cell chart possono anche essere forniti tramite un server remoto. In questo caso, il valore per la chiave template è un URL anziché un percorso locale, come mostrato nell'esempio JSON remoto di cui sopra. L'URL può specificare http come protocollo, https per una connessione sicura o qualsiasi altro protocollo valido sul sistema in cui viene aperto il file .ppttc.

Durante l'elaborazione di un file .ppttc che fa riferimento a un modello remoto, PowerPoint recupera il file del modello. Pertanto, l'utente che ha aperto il file .ppttc necessita di un accesso appropriato al modello remoto.

Quando i dati JSON vengono generati in remoto da un servizio Web e i modelli vengono archiviati anche in remoto, per utilizzare presentazioni PowerPoint generate dinamicamente con grafici di think-cell è necessaria solo un'installazione di think-cell standard sul computer dell'utente.

26.5 Elaborazione dei dati JSON in remoto

È possibile eseguire l'elaborazione dei dati JSON da parte di think-cell come server. In tal caso, l’unione dei dati JSON con i modelli al fine di creare presentazioni PowerPoint viene eseguita su un server remoto. Il server accetta i frammenti JSON come input e restituisce le presentazioni PowerPoint unite come output, entrambi via HTTP.

Per avviare il server think-cell, individuare la cartella di installazione ed eseguire tcserver.exe. Verrà aperta la finestra di dialogo seguente:

La finestra di dialogo di configurazione del server think-cell.

Per avviare il server:

  1. Specificare l’indirizzo IP e la porta che deve essere ascoltata dal server nel campo UrlPrefix sotto forma di URL. La prima parte dell’URL determina se verrà usato un HTTP non crittografato o un HTTPS crittografato.
  2. Fare clic sul pulsanteApplica.
  3. Verificare le modifiche alla configurazione del sistema nella finestra di dialogo Controllo account utente (UAC) visualizzata.

Nel campo Registro nella parte inferiore della finestra viene visualizzata la conferma che il server è stato avviato e che sta ora eseguendo l’ascolto di un URL. Nel campo Registro, verranno inoltre visualizzate tutte le richieste del client e le risposte del server.

Finestra di dialogo del server di think-cell con i messaggi di registro.

Per arrestare il server, fare clic sul pulsante Rimuovi. Per modificare l’URL, inserire un nuovo URL nel campo UrlPrefix, quindi fare clic su Applica.

Il server accetta i dati JSON come richieste HTTP POST con tipo MIME application/vnd.think-cell.ppttc+json e risponde con un file PowerPoint.

Per iniziare a usare il server, copiare l’URL dal campo UrlPrefix, quindi aprirlo in un browser. Viene aperta una pagina di esempio. Il server esegue l’autodocumentazione con il codice sorgente HTML della pagina di esempio che mostra il relativo uso e un esempio elaborato. L’esempio contiene gli elementi seguenti:

  • Un markup HTML per un pulsante che, quando cliccato, richiama un metodo che fa uso di XMLHttpRequest per comunicare con il server.
  • Un frammento JSON statico. Durante l’uso, i dati JSON vengono normalmente generati in modo dinamico.
  • Una funzione JavaScript per inviare i dati JSON al server. Genera la richiesta HTTP POST con i dati JSON statici. La risposta del server viene presentata al browser come download del file.

È inoltre possibile utilizzare qualsiasi altro metodo di generazione di richieste HTTP POST e di salvataggio della risposta del server come file PowerPoint. Durante l’uso, non è obbligatorio usare JavaScript a tale scopo.

Condividi