26. JSONデータを使用しての自動化
JSON のデータを使用して、当初テンプレートとして作成されたグラフをコピーし、そのグラフ用にデータシートを新たに用意できます。新しいプレゼンテーションを構築するために用いられる特定のテンプレートを制御することができます。テンプレートは何度も使用できます。
PowerPoint テンプレートとJSON データは、ローカルでもリモートでも保存できます。JSON データは、ウェブサービスによってオンザフライで生成することができます。
- 26.1
- think-cell 用 JSON データの構造
- 26.2
- JSON データを使用してプレゼンテーションを作成する方法
- 26.3
- JSON データのリモート送信
- 26.4
- テンプレートのリモート送信
- 26.5
- JSON データのリモート処理
26.1 think-cell 用 JSON データの構造
下記に示されるthink-cell 用JSONデータのサンプルは、think-cell インストール ディレクトリのサブフォルダー ppttc
のファイル sample.ppttc
にあります。JSON では、テンプレートの連結から作成されるプレゼンテーションが特定されています。ppttc/ppttc-schema.json
でのスキーマに準拠しています。

ルート レベルには配列されたアイテムがあります。どのアイテムにも、そのグラフ用の特定されたテンプレート ファイルとデータがあります。多種多様なテンプレートは連結することができ、単一のテンプレートは複数回使用できます。簡単にできる例として、単一のテンプレートでも1回の使用でデータ付きテンプレートに含まれるグラフ全体に適用されます。
配列された連結テンプレートの各アイテムには、2 つのキー (
template
および
data
) が含まれています。
template
の値は、think-cell グラフ付きの PowerPoint ファイルへのパスとなります。この場合、名称が識別子として設定されます (オートメーション機能のご紹介を参照)。テンプレート ファイルは、JSON データのリモート送信にあるように遠隔地からでも取得することができます。
キー
data
の値は、テンプレート内のグラフの JSON 形式のデータ表のリストです。リストの各項目には2つのプロパティ (
name
と
table
) が含まれています。
name
は、その名前を使用するグラフを指定し、
table
にはデータテーブルが含まれます。
table
の値の構造は、系列を表す行と項目を表す列を持つ入れ替えが行われていないデータシートと一致します。既定のグラフで行の順序は以下のとおりです:
- まず、空白セルのある行 (
null
)、次にカテゴリ名称のあるセル。 - 100% の行の値。100% の値が使用されていない場合、空白の行は
[]
として指定されます。 - シリーズ名称を含む最初のセル、および数値のある次のセルを有する複数の行。
名称が付けられるグラフはすべて、JSON で参照することができます。データシートが特定のレイアウトの場合は、個別のチャプターを確認するか、参照用のグラフ内部データシートを開きます。
注記: think-cell データシート範囲内のセルはすべて、あらゆる種類のテキストに対応しています。必要な場合、最初の行の最初のセルはフィルすることもできます。
table
キーの値を構成するデータは、スキーマの特定ルールに準拠する必要があります。table
キーそれ自体の値はアレイとなっています。サブアレイは、データシートの行を表します。空白のセルは、空白のアレイ[]
を使って特定することができます。セルのコンテンツは、サブアレイに列挙されたエレメントによって示されます。エレメントの順序は、データシートの列の順序に対応しています。空白のセルは、null
エレメントを使って明記する必要があります。コンテンツのあるセルは、他のキー/値のペアを使って明記する必要があります。この場合、キーはデータタイプを表し、値はプレゼンテーションで表示される実際のデータを含みます。3種類のデータタイプに対応しています:
あらゆる種類のテキストの
string
。印刷可能のユニコード (UTF-8) の文字すべてに対応しています。例:{"string":"Echo"}
あらゆる種類の数字の
number
。小数点は点になります。例:{"number":5}
日付の
date
。必要なフォーマットはYYYY-MM-DD
です。例:{"date":"2016-09-04"}
セルのコンテンツのフォーマット(日付など) は、PowerPoint テンプレートで行う必要があります。
名前が付いたテキスト フィールドの場合、要素 table
は、1 つの「行」の 1 つの「セル」のいで構成されます。このため、以下のフラグメントのように、要素 data
内の名前が付いた各テキスト フィールドに対して 1 度のみ表示される JSON 配列を使用する必要があります。
{
"name": "Title",
"table": [[{"string":"A slide title"}]]
},
26.2 JSON データを使用してプレゼンテーションを作成する方法
JSON データ ファイルには.ppttc
のファイル タイプが必要です。このファイルを開く場合:
- think-cell はファイルを読み込み、その構造上の整合性をチェックします。
- 新しいプレゼンテーションが作成されます。JSON ファイルのトップ レベルの各アイテムのために、新しいプレゼンテーションには指定されたテンプレートのコピーが含まれています。
- テンプレートのコピーでは、
name
値で特定されたグラフのデータシートがtable
値のデータと交換されます。すべてのラベル、ラベル配置、差異矢印の値、その他のグラフ デコレーションは更新されます。
その後、新しいプレゼンテーションが表示されます。そのコンテンツをさらに編集、保存したり、他の方法で使用したりすることができます。
コマンド ラインで JSON データからプレゼンテーションを作成することもできます。
ppttc input.ppttc -o output.pptx
実行可能ファイル ppttc.exe
が think-cell のインストール フォルダーにあります。ppttc.exe
の呼び出しは、自動ワークフローに簡単に組み込むことができます。
26.3 JSON データのリモート送信
.ppttc
ファイルの JSON データは、ウェブサービスで遠隔から生成でき、ブラウザーでダウンロードできます。下のサンプル、およびthink-cell インストール ディレクトリのサブフォルダー ppttc
のsample.html
にあるサンプルを参照してください。
<!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 グラフが含まれるテンプレート ファイルは、リモート サーバー経由でも送信することができます。この場合、上のリモートキーJSON で示されるとおり、template
の値はローカルパスではなくURL となります。URL は、安全な接続のためにhttp
をプロトコル、https
として指定し、または.ppttc
ファイルが開くシステム上有効なプロトコルを指定することができます。
遠隔テンプレートを参照する.ppttc
ファイルを処理するとき、PowerPoint はテンプレート ファイルを取得します。そのため、.ppttc
ファイルを開いた場合はリモート テンプレートに正しくアクセスする必要がります。
ウェブ サービスによって JSON データがリモートで生成され、テンプレートもリモートで保存された場合、生成された think-cell グラフが含まれる PowerPoint プレゼンテーションを動的に使用するには、ユーザーのマシンに標準の think-cell がインストールされている必要があります。
26.5 JSON データのリモート処理
think-cell では、サーバーとしてJSON データの処理を実行できます。JSONデータをテンプレートにマージしてPowerPointプレゼンテーションを作成する場合は、リモート サーバーで行います。サーバーはJSONのフラグメントを入力として受け入れ、マージされたPowerPointプレゼンテーションを出力として届けます。どちらもHTTPで行われます。
think-cellサーバーを起動するには、インストール フォルダーでtcserver.exeを実行します。以下のダイアログが開きます。

サーバーを起動するには:
- UrlPrefixフィールドでサーバーがリッスンするIPアドレスとポートをURL形式で指定します。URLの最初の部分で、暗号化されていないHTTPまたは暗号化されたHTTPSのどちらを使用するのかが決まります。
- [適用] ボタンをクリックします。
- 表示された [ユーザー アカウント管理(UAC)] ダイアログでシステムの構成変更を確定します。
ウィンドウの最下部にある [ログ] フィールドに、サーバーが起動し、URLをリッスンしていると表示されます。また、あらゆるクライアントのリクエストとサーバーの反応が [ログ] フィールドに表示されます。

サーバーを停止して [削除] ボタンをクリックします。URLを変更するには、UrlPrefixフィールドに新しいURLを入力して [適用] をクリックします。
サーバーはMIMEタイプapplication/vnd.think-cell.ppttc+json
のHTTP POSTリクエストとしてJSONデータを受け入れ、PowerPointファイルで応答します。
サーバーを使用して起動するには、UrlPrefixフィールドからURLをコピーしてブラウザーで開きます。サンプル ページが開きます。サーバーは自己文書化しています。サンプル ページのHTMLソース コードは、その使用と詳細な例を示しています。この例には以下の要素が含まれています。
- クリックし、
XMLHttpRequest
を使用してサーバーと交信する方法を呼び出すボタンのHTMLマークアップ。 - 静的なJSONフラグメント。使用中は通常、JSONデータが動的に生成されます。
- JSONデータをサーバーに送るためのJavaScript関数。静的JSONデータを含むHTTP POSTリクエストが生成されます。サーバーの反応は、ファイルのダウンロードとしてブラウザーに表示されます。
HTTP POST リクエストを生成し、サーバーの反応を PowerPoint ファイルとして保存する他の方法も使用できます。使用中、この目的でのJavaScriptの使用は制限されていません。