JSON データによる自動化
- ホーム
- リソース
- ユーザー マニュアル
- thinkcell Charts:データの視覚化
- 高度なレポート自動化
- JSON データによる自動化
JSON データによる自動化は、thinkcell Suite で利用できます。
JavaScript Object Notation(JSON)を使用して、thinkcell プレゼンテーションを自動的に作成できます。thinkcell の JSON 自動化では、次のことができます:
- PowerPoint テンプレートにデータ(スライド タイトルやチャートなど)を入力する
- テンプレートを再利用し、並べ替えて新しいプレゼンテーションを作成する
- ローカルまたはリモート ソースの JSON データと PowerPoint テンプレートを使用する
- Web サービスを使用してリアルタイム データを新しいプレゼンテーションに変換する
JSON ファイル構造
このセクションでは、JSON ファイルの構造について説明します。説明には、サンプル ファイル sample.ppttc からのスニペットを添えています。完全な例は、このセクションの最後を参照してください(完全な JSON の例)。
JSON スキーマとサンプル ファイル
thinkcell のインストール フォルダー内の ppttc フォルダーには、次のファイルが含まれています:
- JSON スキーマ
ppttc-schema.json - PowerPoint テンプレート
template.pptx - JSON データ ファイル
sample.ppttc
ppttc-schema.json ファイルには、thinkcell で PowerPoint プレゼンテーションを作成するために .ppttc ファイルが従う必要のあるルールが記述されています。
template.pptx ファイルには、名前付き要素が含まれています(高度なレポート自動化 を参照)。テンプレートには任意の数のスライドを含めることができます。
sample.ppttc ファイルでは、次の内容を指定します:
- thinkcell が新しいプレゼンテーションの作成に使用するテンプレート
- テンプレートが表示される順序
- テンプレートに入力される JSON データ
テンプレート、要素、およびそれらのデータを指定する
例のsample.ppttcは、PowerPoint プレゼンテーションを表す配列を示しています(完全な JSON の例を参照)。
テンプレート
この配列には一連のオブジェクトが含まれており、それぞれが PowerPoint テンプレートのコピーを表します。新しいプレゼンテーションでは、テンプレートは配列で指定した順序で表示されます。テンプレートに複数のスライドがある場合、スライドの順序を変更するには PowerPoint でテンプレートを編集する必要があります。
配列内の各テンプレートオブジェクトには、templateとdataの 2 つのプロパティが必要です。
template
templateプロパティは、使用する PowerPoint テンプレートを指定する文字列です。この文字列には、次のいずれかを指定できます。
- テンプレートをローカルに保存している場合は、ローカルファイルシステム内のテンプレートの相対パスまたは絶対パスを指定します。ディレクトリ区切り文字は、Windows ではバックスラッシュ(\)(JSON では二重バックスラッシュ(\\)にエスケープ)、macOS ではスラッシュ(/)である必要があります。
- テンプレートをリモートに保存している場合は、テンプレートが保存されている URL を指定します(テンプレートをリモートで提供するを参照)。
最も単純なケースでは、完全な JSON の例に示すように、PowerPoint テンプレートが .ppttc ファイルと同じフォルダーにある場合、template文字列は PowerPoint テンプレートのファイル名だけです。
"template": "template.pptx",
data
dataプロパティは、以下を指定するオブジェクトの配列です。
- AddRangeData 名を持つグラフやその他の要素(高度なレポート自動化を参照)
- これらの要素に入力するデータ
オブジェクトは、PowerPoint テンプレート内の対応する要素の位置に関係なく、data配列内に任意の順序で配置できます。
"data": [ ... ]
要素
data配列内の各オブジェクトには、2 つのプロパティがあります。
nameは、AddRangeData Nameで割り当てる要素の名前を指定します(高度なレポート自動化を参照)。tableは、その要素に入力するデータを指定します。
2 つの要素が同じ名前を持つ場合、thinkcell はそれらに同じデータを入力します。
tableの値は配列です。配列の構造は要素の種類によって異なります。
- 自動化テキストフィールド、Harvey ball、またはチェックボックスの場合、
table配列には、1 つのオブジェクトを含む 1 つのサブ配列が含まれます。テキスト文字列や数値などのオブジェクトがテキストフィールドに入力されます。 - グラフまたは表の場合、
table配列には、その要素のデータシートを表すサブ配列が含まれます。
{
"name": "RightChartTitle",
"table": [[{"string": "Our orders (10K)"}]]
},
{
"name": "LeftChart",
"table": [
[null, {"date": "2020-01-01"}, {"date": "2021-01-01"}, {"date": "2022-01-01"}, {"date": "2023-01-01"}, {"date": "2024-01-01"}, {"date": "2025-01-01"}],
[{"string": "Market headroom"}, {"percentage": 46.5}, {"percentage": 47}, {"percentage": 45}, {"percentage": 45}, {"percentage": 41}, {"percentage": 40.5}],
[],
[{"string": "Competitor 1"}, {"percentage": 0.5}, {"percentage": 1}, {"percentage": 5}, {"percentage": 2}, {"percentage": 4}, {"percentage": 4.5}],
[{"string": "Our brand"}, {"percentage": 53}, {"percentage": 52}, {"percentage": 50}, {"percentage": 53}, {"percentage": 55}, {"percentage": 55}]
]
},
グラフのデータシート構造
グラフの場合、table配列内の各サブ配列は、グラフのデータシートの 1 行を表します。グラフ固有のデータシートレイアウトについては、ユーザーマニュアルの該当章を参照するか、グラフのデータシートを開いて確認してください(チャート データの入力を参照)。以下では、JSON スキーマで指定されているデフォルトのグラフの行構造について説明します。
最初の行
最初の行は、カテゴリラベルを含むサブ配列です。カテゴリラベルの前には、空の最初のセル(null)が置かれます。最初のセルのデータはグラフに表示されないため、実際には任意のデータを含めることができます。
[null, {"date": "2020-01-01"}, {"date": "2021-01-01"}, {"date": "2022-01-01"}, {"date": "2023-01-01"}, {"date": "2024-01-01"}, {"date": "2025-01-01"}],
後続の行
後続の行は、系列ラベルとグラフのデータポイントを含むサブ配列です。サブ配列内の要素の順序は、データシートの行内のセルの順序に対応します。行の最初のセルには系列ラベルが含まれ、通常は文字列です。行内の後続のセルには数値を含める必要があります。ガントチャートの場合は日付を含めます。
[{"string": "Market headroom"}, {"percentage": 46.5}, {"percentage": 47}, {"percentage": 45}, {"percentage": 45}, {"percentage": 41}, {"percentage": 40.5}],
[],
[{"string": "Competitor 1"}, {"percentage": 0.5}, {"percentage": 1}, {"percentage": 5}, {"percentage": 2}, {"percentage": 4}, {"percentage": 4.5}],
[{"string": "Our brand"}, {"percentage": 53}, {"percentage": 52}, {"percentage": 50}, {"percentage": 53}, {"percentage": 55}, {"percentage": 55}]
空の行
空の行を指定するには、空の配列([])を使用します。
前述のスニペットでは、空の配列によって、thinkcell がPowerPoint Theme 配色をグラフの系列に適用する方法が変わります(グラフの塗りつぶしスキームを参照)。配色では、3 行目の系列に濃い緑が割り当てられます。3 行目を空白にすることで、系列Competitor 1とOur brandは 4 行目と 5 行目になり、配色によりそれぞれ水色と濃い青が割り当てられます。
任意の行と列
PowerPoint テンプレートのグラフデータシートでは、任意の行や列を追加または削除できます(データシート レイアウトを編集するを参照)。これにより、thinkcell が対応する行や列の JSON データを解釈する方法に影響します。
たとえば、グラフのデータシートに100%=行を追加すると、thinkcell は JSON データの 2 行目を、パーセンテージの計算元となる合計として解釈します。この例のように100%=行を省略すると、thinkcell は 2 行目の JSON データを通常のデータポイントとして解釈します。
次の表は、一般的な任意の行と列、そのデータシート上の位置、およびデフォルト設定をまとめたものです。特定のグラフのデータレイアウトを確認するには、グラフをダブルクリックしてデータシートを開きます。
|
オプション |
内容 |
データシート上の位置 |
デフォルト設定 |
|---|---|---|---|
|
Series |
系列ラベル |
列 1 |
選択済み |
|
Category |
カテゴリラベル |
行 1 |
選択済み |
|
100%= |
パーセンテージ計算用の合計 |
行 2(Categoryが選択されている場合) |
未選択 |
自動化テキストフィールド、Harvey ball、チェックボックス
自動化テキストフィールド、単一の Harvey ball、単一のチェックボックスに JSON データを入力する場合、thinkcell は 1 つのセルを持つtable配列を想定します。table配列内では、そのセルは 1 つのオブジェクトを含む 1 つのサブ配列として表されます。
{
"name": "SlideTitle",
"table": [[{"string": "Competition: Germany"}]]
},
Harvey ball またはチェックボックスが表の一部である場合は、対応する表のセルにその要素の内容を指定するだけです。
セルのデータ型
.ppttc ファイルでは、セルに次のデータ型を含めることができます。
|
データ型 |
キー |
例 |
注記 |
|---|---|---|---|
|
テキスト |
|
|
印刷可能なすべての Unicode(UTF-8)文字に対応しています。 |
|
数値 |
|
|
小数点記号はピリオド(.)である必要があります。 |
|
カレンダー日付 |
|
|
必須形式: |
|
パーセンテージ |
|
|
小数点記号はピリオド(.)である必要があります。パーセント記号(%)は含めないでください。 |
|
データシートセルの塗りつぶし色 |
|
Hex: RGB: |
データシートの塗りつぶし色をグラフの機能に適用するには、PowerPoint テンプレートでUse Datasheet Fillを選択します(グラフの塗りつぶしスキームを参照)。 |
|
空のセル |
該当なし |
|
|
完全な JSON の例
以下に、sample.ppttcの完全な JSON の例を示します。
[
{
"template": "template.pptx",
"data": [
{
"name": "SlideTitle",
"table": [[{"string": "Competition: Germany"}]]
},
{
"name": "LeftChartTitle",
"table": [[{"string": "Market share (2020–2025)"}]]
},
{
"name": "RightChartTitle",
"table": [[{"string": "Our orders (10K)"}]]
},
{
"name": "LeftChart",
"table": [
[null, {"date": "2020-01-01"}, {"date": "2021-01-01"}, {"date": "2022-01-01"}, {"date": "2023-01-01"}, {"date": "2024-01-01"}, {"date": "2025-01-01"}],
[{"string": "Market headroom"}, {"percentage": 46.5}, {"percentage": 47}, {"percentage": 45}, {"percentage": 45}, {"percentage": 41}, {"percentage": 40.5}],
[],
[{"string": "Competitor 1"}, {"percentage": 0.5}, {"percentage": 1}, {"percentage": 5}, {"percentage": 2}, {"percentage": 4}, {"percentage": 4.5}],
[{"string": "Our brand"}, {"percentage": 53}, {"percentage": 52}, {"percentage": 50}, {"percentage": 53}, {"percentage": 55}, {"percentage": 55}]
]
},
{
"name": "RightChart",
"table": [
[null, {"date": "2020-01-01"}, {"date": "2021-01-01"}, {"date": "2022-01-01"}, {"date": "2023-01-01"}, {"date": "2024-01-01"}, {"date": "2025-01-01"}],
[{"string": "Pending"}, {"number": 0, "fill": "#ff0000"}, {"number": 0, "fill": "#ff0000"}, {"number": 0, "fill": "#ff0000"}, {"number": 0, "fill": "#ff0000"}, {"number": 0, "fill": "#ff0000"}, {"number": 14, "fill": "#ff0000"}],
[null, {"number": 709}, {"number": 712}, {"number": 710}, {"number": 700}, {"number": 760}, {"number": 747}]
]
}
]
},
{
"template": "template.pptx",
"data": [
{
"name": "SlideTitle",
"table": [[{"string": "Competition: Canada"}]]
},
{
"name": "LeftChartTitle",
"table": [[{"string": "Market share (2022–2025)"}]]
},
{
"name": "RightChartTitle",
"table": [[{"string": "Our orders (1K)"}]]
},
{
"name": "LeftChart",
"table": [
[null, {"date": "2022-01-01"}, {"date": "2023-01-01"}, {"date": "2024-01-01"}, {"date": "2025-01-01"}],
[{"string": "Market headroom"}, {"percentage": 34}, {"percentage": 38}, {"percentage": 41}, {"percentage": 42}],
[{"string": "Competitor 2"}, {"percentage": 31}, {"percentage": 17}, {"percentage": 15}, {"percentage": 14}],
[{"string": "Competitor 1"}, {"percentage": 20}, {"percentage": 10}, {"percentage": 9}, {"percentage": 7}],
[{"string": "Our brand"}, {"percentage": 15}, {"percentage": 35}, {"percentage": 35}, {"percentage": 37}]
]
},
{
"name": "RightChart",
"table": [
[null, {"date": "2022-01-01"}, {"date": "2023-01-01"}, {"date": "2024-01-01"}, {"date": "2025-01-01"}],
[{"string": "Pending"}, {"number": 0, "fill": "#ff0000"}, {"number": 0, "fill": "#ff0000"}, {"number": 0, "fill": "#ff0000"}, {"number": 15, "fill": "#ff0000"}],
[null, {"number": 250}, {"number": 401}, {"number": 481}, {"number": 476}]
]
}
]
}
]
JSON データでプレゼンテーションを作成する
thinkcell がインストールされている場合、オペレーティングシステムには .ppttc ファイルを thinkcell で開くように設定されます。ファイルエクスプローラー(Windows)または Finder(macOS)で JSON ファイルを thinkcell で開くには(たとえば、ダブルクリックで開く場合)、.ppttc 拡張子を使用します。
JSON ファイルを開くと、thinkcell は次の処理を行います。
- thinkcell がファイルを読み取り、エラーをチェックします。
- thinkcell が新しいプレゼンテーションを作成します。このプレゼンテーションは、JSON ファイルの最上位配列で指定されたスライドテンプレートのコピーで構成されます。
- テンプレートのコピー内で、thinkcell は要素(
nameで識別)に対応するデータ(tableで指定)を入力します。要素はそれに応じて更新されます。 - 新しいプレゼンテーションが PowerPoint で開きます。プレゼンテーションを保存したり、さらに編集したりできます。
コマンドラインからプレゼンテーションを作成する
コマンドラインで次のように入力して、JSON データからプレゼンテーションを作成します。
<var>PPTTC_PATH</var> <var>PPTTC_INPUT</var> -o <var>PPTX_OUTPUT</var>
次を置き換えます。
PPTTC_PATH:ppttc.exeのパスPPTTC_INPUT:.ppttc ファイルのパスPPTX_OUTPUT:作成する .pptx ファイルの名前。その前に保存先のパスを付けます
実行可能ファイルppttc.exeは、thinkcell のインストールフォルダー内のppttcにあります。自動化スクリプトでppttc.exeを呼び出して、新しい PowerPoint プレゼンテーションを作成します。
JSON データをリモートで提供する
サーバー上で .ppttc ファイル用の JSON データをリモート生成します。新しいプレゼンテーションを作成するには、ユーザーが Web ブラウザーから .ppttc ファイルをダウンロードし、thinkcell で開きます。
サーバーを使用して JSON データを生成しダウンロードする方法の例については、thinkcell のインストールフォルダー内の /ppttc/sample.html を参照してください。sample.html ファイルには、次の要素が含まれています。
- クリックすると JSON データをその場でコンパイルするボタンの HTML マークアップ
- 静的な JSON データ。一般的なユースケースでは、JSON データは他のソースから取得されます。
- .ppttc ファイルをユーザーのコンピューターにダウンロードする JavaScript 関数
ユーザーが .ppttc ファイルをダウンロードした後、そのファイルを保存または開くことができます。ユーザーがファイルを開くと、thinkcell は JSON データを使用して新しいプレゼンテーションを作成します(JSON データでプレゼンテーションを作成する を参照)。
テンプレートをリモートで提供する
サーバー経由で PowerPoint テンプレートを提供するには、次の手順を実行します。
- JSON ファイルで、
templateキーにローカルパスではなく URL を指定します。URL プロトコルには HTTP または HTTPS を使用できます。 - .ppttc ファイルを開くユーザーがリモートテンプレートにアクセスできることを確認します。
ユーザーのマシンに標準の thinkcell インストールがあれば、リモートの JSON データとテンプレートを使用して thinkcell プレゼンテーションを生成するのに十分です。
プレゼンテーションをリモートで作成する
ユーザーがカスタムデータを含む thinkcell プレゼンテーションをダウンロードできる自動ワークフローを設定します。プレゼンテーションをダウンロードするために、ユーザーに必要なのは Web ブラウザーだけです。コンピューターに thinkcell がインストールされている必要はありません。
これらのワークフローを設定するには、Windows でのみ動作する thinkcell サーバーが必要です。thinkcell サーバーは JSON データを入力として受け取り、PowerPoint プレゼンテーションを出力として提供します。
thinkcell サーバーを実行する
thinkcell サーバーを起動するには、次の手順に従います。
- thinkcell のインストールフォルダーで
tcserver.exeを実行します。 - サーバーが待ち受ける IP アドレスとポートを指定する URL を入力します。サーバープロトコルは HTTP または HTTPS です。
- Register URL を選択します。
- プロンプトが表示されたら、thinkcell サーバーがデバイスに変更を加えることを許可します。
thinkcell サーバーを停止するには、次の手順に従います。
- Unregister URL を選択します。
- プロンプトが表示されたら、thinkcell サーバーがデバイスに変更を加えることを許可します。
Log フィールドには、次の内容が表示されます。
- サーバーが URL の待ち受けを開始または停止したことの確認
- すべてのクライアント要求とサーバー応答
サーバーは、メディアタイプ(別名 MIME タイプ)application/vnd.think-cell.ppttc+json の HTTP POST 要求として JSON データを受け付け、PowerPoint ファイルで応答します。
自動起動サービスとして実行する
コンピューターの起動時に thinkcell サーバーを自動的に起動するには、次の手順に従います。
- thinkcell server ダイアログで、Run as auto-start service オプションを選択します。
- Password に、Run as auto-start service オプションに表示されているアカウントのパスワードを入力します。
ぜひお試しください。
用意されたサンプルを使用して、ボタンをクリックするだけで PowerPoint プレゼンテーションを作成できます。
- URL
http://127.0.0.1:8080で thinkcell サーバーを起動します。 - ブラウザーで
http://127.0.0.1:8080を開きます。 - Web ページ "ppttc test" が開きます。Send .ppttc to server and get .pptx を選択します。
thinkcell サーバーは JSON データから PowerPoint プレゼンテーションを作成します。ブラウザーがそのプレゼンテーションをコンピューターにダウンロードします。
"ppttc test" ページの HTML ソースコードは、thinkcell JSON 自動化の利用例を示しています。このソースコードは、お客様独自の自動ワークフローの出発点として利用できます。コードには、次の要素が含まれています。
- クリックすると、
XMLHttpRequestを使用して thinkcell サーバーと通信するメソッドを呼び出すボタンの HTML マークアップ。 - 静的な JSON データ。一般的なユースケースでは、JSON データは他のソースから取得されます。
- JSON データを thinkcell サーバーに送信する JavaScript 関数。サーバーは静的な JSON データを含む HTTP POST 要求を生成します。サーバー応答はファイルのダウンロードです。
"ppttc test" ページは、JavaScript を使用して HTTP POST 要求を送信し、thinkcell サーバーの応答を PowerPoint ファイルとして保存します。もちろん、他の言語でも動作します。
トラブルシューティングが必要ですか?
ナレッジベースをご確認ください