26. Автоматизация с использованием данных JSON

Вы можете использовать данные в JSON для дублирования диаграмм, которые были созданы как шаблон, и предоставить им новую таблицу данных. Вы можете контролировать порядок использования определенных шаблонов для создания новой презентации. Кроме того, шаблоны можно применять множество раз.

И шаблоны PowerPoint, и данные JSON можно хранить локально и удаленно. Данные JSON можно даже создавать динамически в веб-службе.

26.1
Структура данных JSON для think-cell
26.2
Использование данных JSON для создания презентации
26.3
Удаленное предоставление данных JSON
26.4
Удаленное предоставление шаблона
26.5
Удаленная обработка данных JSON

26.1 Структура данных JSON для think-cell

Пример данных JSON для think-cell приведен ниже. Его можно найти в файле sample.ppttc в папке ppttc в каталоге установки think-cell. Файл JSON определяет презентацию, которую требуется создать за счет объединения шаблонов. Файл соответствует схеме в ppttc/ppttc-schema.json.

Пример файла JSON для автоматизации в think-cell.

На корневом уровне находится массив элементов. Каждый элемент определяет файл шаблона и данные для его диаграмм. Можно объединять различные шаблоны, а один шаблон можно использовать несколько раз. В самом простом случае один шаблон используется для заполнения всех диаграмм, которые содержатся в этом шаблоне, данными.

Каждый элемент в массиве объединенных шаблонов содержит два ключа: image.  template и image.  data. Значение image.  template — это путь к файлу PowerPoint с диаграммами think-cell, для которых имя задано как идентификатор (см. раздел 24. Введение в автоматизацию). Файл шаблона также можно извлечь из удаленного расположения, как описано в разделе Удаленное предоставление данных JSON.

Значение ключа image. data — это список таблиц данных в формате JSON для диаграмм, которые содержатся в шаблоне. Каждый элемент в списке имеет два свойства: image.  name и image.  table. image.  name обозначает диаграмму по ее названию, а image.  table содержит таблицу данных.

Структура значения image. table напрямую соответствует неперекодированной таблице, в которой строки представляют ряды, а столбцы — категории. Для диаграммы по умолчанию это означает следующий порядок строк:

  1. Сначала строка с пустой ячейкой (null), а затем ячейки с именами категорий.
  2. Строка значений 100 %. Если значения 100 % не используются, пустая строка обозначается как . image.  [].
  3. Несколько строк с первой ячейкой, содержащей имя ряда, и последующими ячейками, содержащими числовые значения.

В JSON можно указать имя любой диаграммы и затем ссылаться на нее. Сведения о макете таблицы диаграмм см. в соответствующей главе. Или просто откройте внутреннюю таблицу диаграммы.

Примечание: Любая ячейка в диапазоне таблицы think-cell может содержать любой тип текста. При необходимости можно заполнить первую ячейку в первой строке.

Данные, из которых состоит значение ключа table, должно соответствовать определенному набору правил в схеме. Значение ключа table представляет собой массив. Подмассивы представляют строки таблицы. Пустые строки можно указать с помощью пустого массива []. Содержимое ячейки описывается элементами, указанными в таком подмассиве. Порядок элементов соответствует порядку столбцов в таблице. Пустую ячейку необходимо описать явно, используя элемент null. Ячейки с содержимым следует описать с использованием другой пары «ключ-значение». В этом случае ключ описывает тип данных, а значение содержит фактические данные, которые должны быть показаны на презентации. Поддерживаются три разных типа данных:

image.  string для любого вида текста. Поддерживаются любые печатаемые символы Юникода (UTF-8). Пример.: {"string":"Echo"}

image.  number для любого типа чисел. Десятичный разделитель должен быть точкой. Пример.: {"number":"5"}

image.  date для дат. Требуемый формат: YYYY-MM-DD. Пример.: {"date":"2016-09-04"}

Любое форматирование содержимого ячеек (например, указания формата дат) должно осуществляться в шаблоне PowerPoint.

Для именованных текстовых полей элемент table состоит из одной ячейки в одной строке, поэтому вам нужно использовать массив JSON, как в следующем фрагменте, который отображается один раз для каждого именованного текстового поля в элементе data:

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

26.2 Использование данных JSON для создания презентации

Типом файла данных JSON должен быть .ppttc. При открытии такого файла:

  1. think-cell читает файл и проверяет его структурную целостность.
  2. Создается новая презентация. Для каждого элемента на верхнем уровне файла JSON новая презентация содержит копию указанного шаблона.
  3. Таблицы диаграмм в копиях шаблона, указанные значениями name, заменяются на данные в значениях table. Любые метки итоговых значений, расположения меток, значения стрелок разницы и другие элементы украшения диаграммы обновляются.

Затем отображается презентация. Пользователь может изменить ее содержимое или сохранить ее.

Вы также можете создать презентацию на основе данных JSON data в командной строке:

ppttc input.ppttc -o output.pptx

Исполняемый файл ppttc.exe находится в папке установки think-cell. Вызов ppttc.exe можно легко интегрировать в workflow-процессы автоматизации.

26.3 Удаленное предоставление данных JSON

Данные JSON в файле .ppttc можно создать удаленно с помощью веб-службы и предоставить пользователю для загрузки в браузере. См. пример, указанный ниже, и в sample.html в подкаталоге ppttc каталога установки 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>

В нашем примере данные JSON компилируются динамически, когда пользователь запрашивает загрузку. Хотя в пример встроены статические данные, вы, конечно, можете динамически создавать JSON на основе других источников данных, используя параметры, предоставленные пользователем на веб-сайте.

После загрузки файла .ppttc пользователь может сохранить или открыть его, как и любые другие загрузки. При открытии файла данные JSON используются для создания презентации, как описано в разделе Использование данных JSON для создания презентации.

26.4 Удаленное предоставление шаблона

Файлы шаблона с диаграммами think-cell также могут предоставляться через удаленный сервер. В этом случае значением ключа template будет URL-адрес, а не локальный путь, как показано в примере удаленных данных JSON выше. В URL-адресе в качестве протокола может быть указан http, https для безопасного соединения или любой другой протокол, поддерживаемый системой, в которой открыт файл .ppttc.

При обработке файла .ppttc, который ссылается на удаленный шаблон PowerPoint извлекает файл шаблона. Поэтому пользователю, который открыл файл .ppttc, требуются соответствующие права доступа к удаленному шаблону.

Если данные JSON создаются удаленно веб-службой и шаблоны также хранятся удаленно, на компьютере пользователя необходима только стандартная установка think-cell, чтобы использовать динамически созданные презентации PowerPoint с диаграммами think-cell.

26.5 Удаленная обработка данных JSON

Вы можете запустить обработку данных JSON на сервере think-cell. В этом случае объединение данных JSON с шаблонами для создания презентаций PowerPoint выполняется на удаленном сервере. Сервер принимает фрагменты JSON в качестве входных данных и предоставляет объединенные презентации PowerPoint в качестве выходных данных через HTTP.

Чтобы запустить сервер think-cell, перейдите в папку установки и выполните файл tcserver.exe. Откроется следующее диалоговое окно:

Диалоговое окно настройки сервера think-cell.

Чтобы запустить сервер:

  1. Укажите IP-адрес и порт, который должен прослушиваться сервером, в поле Префикс URL-адреса в виде URL-адреса. Первая часть URL-адреса определяет использование незашифрованного HTTP или зашифрованного HTTPS.
  2. Нажмите кнопку Применить.
  3. Подтвердите изменения конфигурации системы в появившемся диалоговом окне "Контроль учетных записей (UAC)".

В поле Журнал в нижней части окна вы увидите подтверждение того, что сервер запущен и ведет прослушивание URL-адреса. В поле Журнал также будут отображаться все запросы клиентов и ответы сервера.

Диалоговое окно сервера think-cell с сообщениями журнала.

Чтобы остановить работу сервера, нажмите кнопку Удалить. Чтобы изменить URL-адрес, введите новый URL-адрес в поле Префикс URL-адреса и нажмите кнопку Применить.

Сервер принимает данные JSON в качестве запросов HTTP POST с application/vnd.think-cell.ppttc+json типа MIME и отвечает файлом PowerPoint.

Чтобы начать использовать сервер, скопируйте URL-адрес из поля Префикс URL-адреса и откройте его в браузере. Откроется пример страницы. Сервер является самодокументируемым, а код исходного текста HTML на открывшейся странице демонстрирует его использование и подробный пример. Пример включает в себя следующие элементы:

  • HTML-разметка для кнопки, которая вызывает метод, использующий XMLHttpRequest для связи с сервером при нажатии.
  • Статический фрагмент JSON. В вашем режиме применения данные JSON будут, как правило, создаваться динамически.
  • Функцию JavaScript для отправки данных JSON на сервер. Она создает запрос HTTP POST со статическими данными JSON. Ответ сервера отображается в браузере в виде загрузки файла.

Работает также и любой другой метод создания запросов HTTP POST и сохранения ответа сервера в виде файла PowerPoint. В вашем режиме применения для этой цели можно использовать не только JavaScript.

Еще не пользуетесь нашим продуктом?

Поделиться