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 インストール ディレクトリのサブフォルダー sample.ppttc のファイル ppttc にあります。JSON では、テンプレートの連結から作成されるプレゼンテーションが特定されています。ppttc/ppttc-schema.jsonでのスキーマに準拠しています。

think-cell オートメーション用のJSON のサンプルファイル.

ルート レベルには配列されたアイテムがあります。どのアイテムにも、そのグラフ用の特定されたテンプレート ファイルとデータがあります。多種多様なテンプレートは連結することができ、単一のテンプレートは複数回使用できます。簡単にできる例として、単一のテンプレートでも1回の使用でデータ付きテンプレートに含まれるグラフ全体に適用されます。

連結されたテンプレートの配列内の各項目には、2 つのキーが含まれています: image.  template および image.  data。値は、 image.  template 名前が識別子として設定されている think-cell チャートを含む PowerPoint ファイルへのパスです (「24. オートメーション機能のご紹介」を参照)。テンプレート ファイルは、JSON データのリモート送信にあるように遠隔地からでも取得することができます。

キーの値は、 image.  data テンプレートに含まれるグラフの JSON 形式のデータ テーブルのリストです。リスト内の各項目には、次の 2 つのプロパティがあります: image.  name および image.  table. image.  name 名前を使用してグラフを指定し、 image.  table データ テーブルを保持します。

値の構造は、 image.  table 行が系列を表し、列がカテゴリを表す転置されていないデータシートに直接対応します。既定のグラフで行の順序は以下のとおりです:

  1. まず、空白セルのある行 (null)、次にカテゴリ名称のあるセル。
  2. 100% の行の値。100% 値が使用されていない場合、空の行は image.  [].
  3. シリーズ名称を含む最初のセル、および数値のある次のセルを有する複数の行。

名称が付けられるグラフはすべて、JSON で参照することができます。データシートが特定のレイアウトの場合は、個別のチャプターを確認するか、参照用のグラフ内部データシートを開きます。

注記: think-cell データシート範囲内のセルはすべて、あらゆる種類のテキストに対応しています。必要な場合、最初の行の最初のセルはフィルすることもできます。

tableキーの値を構成するデータは、スキーマの特定ルールに準拠する必要があります。table キーそれ自体の値はアレイとなっています。サブアレイは、データシートの行を表します。空白のセルは、空白のアレイ[]を使って特定することができます。セルのコンテンツは、サブアレイに列挙された要素によって示されます。要素の順序は、データシートの列の順序に対応しています。空白のセルは、null 要素を使って明記する必要があります。コンテンツのあるセルは、他のキー/値のペアを使って明記する必要があります。この場合、キーはデータタイプを表し、値はプレゼンテーションで表示される実際のデータを含みます。3種類のデータタイプに対応しています:

image.  string あらゆる種類のテキストに適しています。印刷可能のユニコード (UTF-8) の文字すべてに対応しています。例:{"string":"Echo"}

image.  number あらゆる種類の数字に適しています。小数点は点になります。例:{"number":"5"}

image.  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のファイル タイプが必要です。このファイルを開く場合:

  1. think-cell はファイルを読み込み、その構造上の整合性をチェックします。
  2. 新しいプレゼンテーションが作成されます。JSON ファイルのトップ レベルの各アイテムのために、新しいプレゼンテーションには指定されたテンプレートのコピーが含まれています。
  3. テンプレートのコピーでは、name 値で特定されたグラフのデータシートがtable値のデータと交換されます。すべてのラベル、ラベル配置、差分矢印の値、その他のグラフ デコレーションは更新されます。

その後、新しいプレゼンテーションが表示されます。そのコンテンツをさらに編集、保存したり、他の方法で使用したりすることができます。

コマンド ラインで JSON データからプレゼンテーションを作成することもできます。

ppttc input.ppttc -o output.pptx

実行可能ファイル ppttc.exe が think-cell のインストール フォルダーにあります。ppttc.exe の呼び出しは、自動ワークフローに簡単に組み込むことができます。

26.3 JSON データのリモート送信

.ppttc ファイルの JSON データは、ウェブサービスで遠隔から生成でき、ブラウザーでダウンロードできます。下のサンプル、およびthink-cell インストール ディレクトリのサブフォルダーsample.htmlppttcにあるサンプルを参照してください。

<!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を実行します。以下のダイアログが開きます。

think-cellサーバーのセットアップ ダイアログ.

サーバーを起動するには:

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

ウィンドウの最下部にある [ログ] フィールドに、サーバーが起動し、URLをリッスンしていると表示されます。また、あらゆるクライアントのリクエストとサーバーの反応が [ログ] フィールドに表示されます。

ログ メッセージを含むthink-cellのサーバー ダイアログ.

サーバーを停止して [削除] ボタンをクリックします。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の使用は制限されていません。

共有する