26. Automação com dados JSON

Você pode usar os dados no JSON para duplicar gráficos criados primeiramente como modelo e fornecer uma nova planilha de dados para eles. Você pode controlar a ordem na qual modelos específicos são usados para construir uma nova apresentação. Os modelos também podem ser usados várias vezes.

Os modelos do PowerPoint e os dados do JSON podem ser armazenados local ou remotamente. Os dados do JSON podem até ser gerados em tempo real por um serviço da internet.

26.1
Estrutura dos dados JSON para o think-cell
26.2
Usar dados JSON para criar uma apresentação
26.3
Abastecer dados JSON remotamente
26.4
Fornecer o modelo de forma remota
26.5
Processar dados JSON remotamente

26.1 Estrutura dos dados JSON para o think-cell

Um exemplo dos dados do JSON para o think-cell aparece abaixo e pode ser encontrado no arquivo sample.ppttc na subpasta ppttc do diretório de instalação do think-cell. O JSON especifica uma apresentação a ser criada a partir de uma concatenação de modelos. Isso adequa-se ao esquema em ppttc/ppttc-schema.json.

arquivo de exemplo do JSON para automação do think-cell.

No nível raiz há uma matriz de itens. Cada item especifica um arquivo de modelo e dados para seus gráficos. Os modelos diferentes podem ser concatenados e um único modelo pode ser usado mais de uma vez. No caso mais simples, um único modelo é usado uma única vez para preencher todos os gráficos contidos nesse modelo com dados.

Cada item na matriz de modelos concatenados contém duas chaves: image.  template e image.  data. O valor para image.  template é o caminho para um arquivo do PowerPoint com gráficos do think-cell para os quais um nome foi definido como um identificador (consulte 24. Introdução à automação). O arquivo de modelo também pode ser recuperado a partir de um local remoto conforme descrito em Abastecer dados JSON remotamente.

O valor para a chave image.  data é uma lista de tabelas de dados no formato JSON para os gráficos contidos no modelo. Cada item na lista tem duas propriedades: image.  name e image.  table. image.  name especifica um gráfico usando o nome dele e image.  table contém a tabela de dados.

A estrutura do valor para image.  table corresponde diretamente a uma planilha de dados não transposta com linhas que representam séries e colunas que representam categorias. Para um gráfico padrão, significa que a seguinte ordem de linhas serão representadas:

  1. Uma linha com uma célula vazia primeiro (null) e então células com nomes de categorias.
  2. Uma linha de valores 100%. Se nenhum valor 100% for usado, a linha vazia é especificada como image.  [].
  3. Múltiplas linhas com uma primeira célula dando o nome das séries e as células subsequentes contendo valores numéricos.

Qualquer gráfico que possa ser dado um nome pode ser referenciado em JSON. Para seu layout de planilha específica, veja o capítulo respectivo ou simplesmente abra a planilha interna do gráfico como referência.

Observação: Qualquer célula dentro do intervalo da planilha do think-cell pode conter qualquer tipo de texto. Se desejar, a primeira célula na primeira linha também pode ser preenchida.

Os dados que compõem o valor de uma chave table devem obedecer a determinadas regras estabelecidas no esquema. O valor para a chave table em si é uma matriz. As submatrizes representam as linhas da planilha de dados. Linhas vazias podem ser especificadas usando uma matriz vazia []. O conteúdo de uma célula é descrito pelos elementos listados nesta submatriz. A ordem dos elementos corresponde à ordem das colunas em uma planilha de dados. Uma célula vazia deve ser explicitamente descrita usando um elemento null. As células com conteúdo devem ser descritas usando outro par de chave-valor. Nesse caso, a chave descreve o tipo de dados e o valor contém os dados reais a serem exibidos na apresentação. Três tipos diferentes de dados são válidos:

image.  string para qualquer tipo de texto. Todos os caracteres unicode imprimíveis (UTF-8) são válidos. Exemplo: {"string":"Echo"}

image.  number para qualquer tipo de número. O separador decimal usado tem que ser um ponto. Exemplo: {"number":"5"}

image.  date para datas. O formato obrigatório é YYYY-MM-DD. Exemplo: {"date":"2016-09-04"}

Qualquer formatação do conteúdo das células (por exemplo, especificar o formato da data) deve ser feita no modelo do PowerPoint.

Para campos de texto com nome, o elemento table consiste em apenas uma "célula" em uma "linha", portanto você precisa usar uma matriz JSON como no fragmento a seguir, que poderia aparecer uma vez para cada campo de texto com nome dentro de um elemento data:

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

26.2 Usar dados JSON para criar uma apresentação

O arquivo de dados do JSON deve ter um tipo de arquivo de .ppttc. Ao abrir esse arquivo:

  1. think-cell lê o arquivo e verifica sua integridade estrutural.
  2. Uma nova apresentação é criada. Para cada item no nível superior do arquivo do JSON, a nova apresentação contém uma cópia do modelo especificado.
  3. Nas cópias do modelo, as planilhas de dados dos gráficos identificados pelos valores name são substituídas pelos dados nos valores table. Todos os rótulos totais, colocações de rótulos e valores de seta de diferença ou outras decorações de gráfico são atualizados.

Depois, a nova apresentação é exibida. O usuário pode ainda editar seus conteúdos e salvá-los ou usá-los de qualquer outra forma.

Você pode criar uma apresentação a partir de dados JSON na linha de comando:

ppttc input.ppttc -o output.pptx

O ppttc.exe executável está localizado na pasta de instalação do think-cell. Chamar o ppttc.exe pode ser integrado facilmente em fluxos de trabalho de automação.

26.3 Abastecer dados JSON remotamente

Os dados do JSON em um arquivo .ppttc também podem ser gerados remotamente por um serviço de internet e disponibilizados ao usuário para download em um navegador de rede. Consulte a amostra fornecida abaixo e em sample.html na subpasta ppttc do diretório de instalação do 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>

No nosso exemplo, os dados JSON são compilados rapidamente quando o usuário solicita um download. Enquanto o exemplo incorpora dados estáticos, você pode criar dinamicamente JSON a partir de outras fontes de dados usando os parâmetros fornecidos pelo usuário em seu site.

Quando um arquivo .ppttc é baixado, o usuário pode escolher salvar o arquivo ou abri-lo de forma semelhante a outros downloads. Ao abrir o arquivo, os dados do JSON são usados para criar uma nova apresentação como descrito em Usar dados JSON para criar uma apresentação.

26.4 Fornecer o modelo de forma remota

Os arquivos de modelos com gráficos do think-cell também podem ser abastecidos por meio de um servidor remoto. Nesse caso, o valor da chave template é uma URL em vez de um caminho local, como mostrado no exemplo remoto do JSON acima. A URL pode especificar http como protocolo, https para uma conexão segura ou qualquer outro protocolo válido no sistema onde o arquivo .ppttc é aberto.

Ao processar um arquivo .ppttc que se refere a um modelo remoto, o PowerPoint recupera o arquivo modelo. Portanto, o usuário que abriu o arquivo .ppttc precisa de acesso apropriado ao modelo remoto.

Quando os dados JSON são gerados remotamente por um serviço de rede e os modelos também são armazenados remotamente, apenas uma instalação padrão do think-cell é necessária na máquina do usuário para usar as apresentações do PowerPoint, geradas dinamicamente, com os gráficos do think-cell.

26.5 Processar dados JSON remotamente

Você pode executar o processamento dos dados JSON do think-cell como servidor. A fusão dos dados JSON com os modelos para criar apresentações do PowerPoint é feita em um servidor remoto nesse caso. O servidor aceita fragmentos JSON como entrada e fornece as apresentações do PowerPoint fundidas como resultado, ambos via HTTP.

Para iniciar o servidor do think-cell, vá para a pasta de instalação e execute tcserver.exe. A caixa de diálogo a seguir é exibida:

caixa de diálogo de configuração do servidor do think-cell.

Para iniciar o servidor:

  1. Especifique o endereço IP e a porta que o servidor deverá detectar no campo UrlPrefix em formato de URL. A primeira parte da URL determina se é usado um HTTP não encriptado ou um HTTPS encriptado.
  2. Clique no botão Aplicar .
  3. Confirme as mudanças de configuração em seu sistema na caixa de diálogo Controle de Conta do Usuário (UAC) que aparece.

No campo Registro, na parte inferior da janela, você verá uma confirmação de que o servidor foi inicializado e agora está detectando um URL. Você também verá todas as solicitações dos clientes e as respostas do servidor no campo Registro .

A caixa de diálogo do servidor do think-cell com as mensagens de registro.

Para parar o servidor, clique no botão Remover. Para alterar a URL, insira um novo U|RL no campo UrlPrefix e clique em Aplicar.

O servidor aceita os dados JSON como solicitações HTTP POST com o tipo MIME application/vnd.think-cell.ppttc+json e responde com um arquivo do PowerPoint.

Para começar a usar o servidor, favor copiar o URL do arquivo UrlPrefix e abri-lo em um navegador. Uma página de amostra é exibida. O servidor está autodocumentando, com o código fonte do HTML da página de amostra mostrando seu uso e um exemplo elaborado. O exemplo contém os seguintes elementos:

  • A marcação HTML para um botão que invoca um método usando XMLHttpRequest para se comunicar com o servidor quando clicado.
  • Um fragmento JSON estático. Em seu uso, você geralmente gerará os dados JSON dinamicamente.
  • Uma função JavaScript para enviar os dados JSON ao servidor. Ela gera a solicitação HTTP POST com os dados JSON estáticos. A resposta do servidor é apresentada ao navegador como um download de arquivo.

Qualquer outro método de geração de solicitações de HTTP POST e de salvar a resposta do servidor como um arquivo PowerPoint também funciona. Durante o uso, você não está limitado a usar o JavaScript para aquele propósito.

Compartilhar