NAV
shell

SlidePack APIドキュメント

SlidePackへようこそ!SlidePackでは、JSONとテンプレートを元にパワーポイントファイルを生成することができます。

製品紹介ページはこちら

Getting Started

SlidePackはAPI経由でご利用頂くサービスですが、まずは画面上で一通りの機能を試して頂くこともできます。

Webコンソールのダッシュボードに画面上で試して頂く手順がございますので、そちらをご参考ください。

実際にAPIの利用を開始される際には、以下のAPIリファレンスをご参考ください。

APIリファレンス

認証

例:

curl "https://slidepack.io/sessions" \
  -H "Authorization: Bearer {api_token}"

SlidePackのすべてのエンドポイントは、Webコンソールで作成したAPIトークンをリクエストヘッダに含めることで認証します。

Authorization: Bearer {api_token}

セッションの作成

curl -X "POST" "https://slidepack.io/sessions" \
     -H 'Authorization: Bearer {api_token}'

上記のコマンドは次のようなJSONを返します:

{
  "session": {
    "uuid": "f0155f9f-d3f3-4fa9-9f8d-70f8fd2f9c36",
    "is_rendered": null,
    "message": null,
    "created_at": "2020-08-13T13:14:32.000000Z",
    "updated_at": "2020-08-13T13:14:32.000000Z"
  },
  "upload": {
    "action": "https://slidepack-api.s3.ap-northeast-1.amazonaws.com",
    "method": "POST",
    "enctype": "multipart/form-data",
    "params": {
      "acl": "private",
      "key": "sessions/zip/f0155f9f-d3f3-4fa9-9f8d-70f8fd2f9c36.zip",
      "Content-Type": "application/zip",
      "X-Amz-Security-Token": "***",
      "X-Amz-Credential": "***",
      "X-Amz-Algorithm": "AWS4-HMAC-SHA256",
      "X-Amz-Date": "20200813T131432Z",
      "Policy": "***",
      "X-Amz-Signature": "***"
    }
  }
}

新しいセッションを作成し、zipファイルをアップロードするためのAWS S3 Pre-Signed POSTパラメータを取得します。

HTTPリクエスト

POST https://slidepack.io/sessions

クエリパラメータ

なし

レスポンス

201 Created

キー 説明
session セッションの情報。GET /sessions/{uuid}で得られるものと同じです。
upload zipファイルをS3に直接アップロードするときに利用するパラメータ。

zipファイルのアップロード

curl -X "POST" "https://slidepack-api.s3.ap-northeast-1.amazonaws.com/" \
     -F "acl=private" \
     -F "key=sessions/zip/{uuid}.zip" \
     -F "Content-Type=application/zip" \
     -F "X-Amz-Security-Token=***" \
     -F "X-Amz-Credential=***" \
     -F "X-Amz-Algorithm=AWS4-HMAC-SHA256" \
     -F "X-Amz-Date=***" \
     -F "Policy=***" \
     -F "X-Amz-Signature=***" \
     -F "file=@/path/to/your/data.zip"

zipファイルをAmazon S3に直接アップロードします。

HTTPリクエスト

POST {endpoint}

{endpoint}には、POST /sessionsまたはGET /sessions/{uuid}のレスポンスにあるupload.actionの値を入れてください。

フォームデータパラメータ

キー 必須 備考
acl yes POST /sessionsまたはGET /sessions/{uuid} のレスポンスに含まれています。
key yes 同上
Content-Type yes 同上
X-Amz-Security-Token yes 同上
X-Amz-Credential yes 同上
X-Amz-Algorithm yes 同上
X-Amz-Date yes 同上
Policy yes 同上
X-Amz-Signature yes 同上
file yes パラメータ群の末尾にzipファイルを追加してください。

レスポンス

204 No Content

レンダリング

アップロードしたzipファイルをレンダリングしてpptxファイルを生成し、ダウンロード用のURLを取得します。

curl -X "POST" "https://slidepack.io/sessions/{uuid}/render" \
     -H 'Authorization: Bearer {api_token}'

上記のコマンドは次のようなJSONを返します:

{
  "session": {
    "uuid": "f0155f9f-d3f3-4fa9-9f8d-70f8fd2f9c36",
    "is_rendered": true,
    "message": "Render succeeded.",
    "created_at": "2020-08-13T13:14:32.000000Z",
    "updated_at": "2020-08-13T13:17:43.000000Z"
  },
  "download_url": "https://slidepack-api.s3.ap-northeast-1.amazonaws.com/..."
}

HTTPリクエスト

POST https://slidepack.io/sessions/{uuid}/render

クエリパラメータ

なし

レスポンス

200 OK

キー 説明
session セッションの情報。GET /sessions/{uuid}で得られるものと同じです。
download_url ダウンロード用のURLです。

セッションの一覧

curl "https://slidepack.io/sessions" \
     -H 'Authorization: Bearer {api_token}'

上記のコマンドは次のようなJSONを返します:

{
  "sessions": [
    {
      "uuid": "f0155f9f-d3f3-4fa9-9f8d-70f8fd2f9c36",
      "created_at": "2020-08-13T13:14:32.000000Z",
      "is_rendered": true
    }
  ]
}

24時間以内に作成されたセッションの一覧を取得します。

HTTPリクエスト

GET https://slidepack.io/sessions

クエリパラメータ

なし

レスポンス

200 OK

セッションの詳細

curl "https://slidepack.io/sessions/{uuid}" \
     -H 'Authorization: Bearer {api_token}'

上記のコマンドは次のようなJSONを返します:

{
  "session": {
    "uuid": "f0155f9f-d3f3-4fa9-9f8d-70f8fd2f9c36",
    "is_rendered": null,
    "message": null,
    "created_at": "2020-08-13T13:14:32.000000Z",
    "updated_at": "2020-08-13T13:17:43.000000Z"
  }
}

セッションの詳細情報を取得します。

HTTPリクエスト

GET https://slidepack.io/sessions/{uuid}

クエリパラメータ

なし

レスポンス

200 OK

JSON・テンプレート

data.json

[
  {
    "template": 1,
    "some_text": "text to replace"
  },
  {
    "template": 2,
    "some_table": {
      "type": "table",
      "rows": [
        ["this", "is", "header"],
        ["this", "is", "first row"]
      ]
    }
  }
]

パワーポイントを生成するための元データは、JSONとpptx形式のテンプレートです。

JSONはテンプレートに流し込むデータで、右記のような形式になります。このファイルはdata.jsonというファイル名で保存してください。

テンプレートはHTMLのテンプレートエンジンにおけるテンプレートと同じようなものだと考えてください。形式はpptxで、以下の例のように、パワーポイント内に直接変数が書き込まれたものになります。このファイルはtemplate.pptxというファイル名で保存してください。

template

JSONとテンプレートを用意したら、SlidePackにアップロードする前に1つのzipファイルにまとめます。

テキストの置換

テキストボックス、またはテーブル内に記述されたプレースホルダを置換します。

シンプル

文字列でプレースホルダを置換します。

data.json

[
  {
    "template": 1,
    "text1": "スライド上のどの位置にあるテキストボックスも置換できます。",
    "text2": "テンプレートに設定されたフォントサイズやスタイルは維持されます。",
    "text3": "テキストボックスの自動調整などの設定も維持されます。",
    "text4": "表内の",
    "text5": "テキストも",
    "text6": "置換することが",
    "text7": "できます"
  }
]

template.pptx

text.simple.template

上記をレンダリングすると、次のような結果が得られます。

text.simple.output

オプション付き

文字列のかわりのオブジェクトを指定すると、スタイルなどのオプションを指定できます。

data.json


{
  "template": 1,
  "text1": {
    "type": "text",
    "value": "スタイルを後から指定することもできます。",
    "styles": {
      "font": {
        "size": 28,
        "color": "#000000",
        "underline": true,
        "italic": true
      },
    }
  }
}

template.pptx

text.options.template

上記をレンダリングすると、次のような結果が得られます。

text.options.output

オブジェクトのパラメータ一覧

キー 必須
type yes "text"
value yes String
styles.font.typeface String
styles.font.size Number
styles.font.color Hex
styles.font.underline Boolean
styles.font.italic Boolean
styles.font.bold Boolean
styles.font.strike Boolean
styles.shape.fill Hex
styles.shape.outline Hex

テーブルの置換

テーブルを配列で置換します。テーブルを特定するための変数はテーブルの代替テキストに設定します。

シンプル

文字列の配列でテーブルを置換します。

data.json

{
  "template": 1,
  "table1": {
    "type": "table",
    "rows": [
      ["配列を", "流し込む", "ことが", "できます", ""],
      ["a", "b", "c", "d", "e"],
      ["f", "g", "h", "i", "j"],
      ["k", "l", "m", "n", "o"],
      ["p", "q", "r", "s", "t"],
      ["u", "v", "w", "x", "y"]
    ]
  },
  "table2": {
    "type": "table",
    "rows": [
      ["テンプレート側でセルが結合されていると", "", "", "", ""],
      ["結合状態は", "", "維持されます", "", ""],
      ["", "", "", "", ""],
      ["", "", "", "", ""],
      ["", "", "", "", ""],
      ["p", "q", "r", "s", "t"],
      ["u", "v", "w", "x", "y"]
    ]
  }
}

template.pptx

table.simple.template

上記をレンダリングすると、次のような結果が得られます。

table.simple.output

オプション付き

文字列のかわりにオブジェクトで配列を作ると、セル単位でスタイルなどを指定することができます。

data.json

{
  "template": 1,
  "table1": {
    "type": "table",
    "rows": [
      [
        {
          "value": "配列の",
          "styles": {
            "font": { "color": "#ffffff" },
            "shape": { "fill": "..." }
          }
        },
        {
          "value": "流し込みでも",
          "styles": {
            "font": { "color": "#ffffff" },
            "shape": { "fill": "..." }
          }
        },
        ...
      ]
    ]
  }
}

template.pptx

table.options.template

上記をレンダリングすると、次のような結果が得られます。

table.options.output

オブジェクトのパラメータ一覧

キー 必須
type yes table
rows.[].value yes String
rows.[].styles.* テキストと同じ

チャートの置換

オブジェクトでチャートを置換します。

data.json

{
  "template": 1,
  "chart1": {
    "type": "chart",
    "labels": ["Q1", "Q2", "Q3", "Q4"],
    "axis1": {
      "bounds": {
        "minimum": 50,
        "maximum": 150
      },
      "series": {
        "ser1": {
          "name": "売上",
          "values": [100, 110, 120, 130]
        },
        "ser2": {
          "name": "経費",
          "values": [50, 55, 60, 65]
        }
      }
    },
    "axis2": {
      "series": {
        "ser3": {
          "name": "粗利率",
          "values": [0.5, 0.6, 0.7, 0.8]
        }
      }
    }
  }
}

template.pptx

chart.options.template

上記をレンダリングすると、次のような結果が得られます。

chart.options.output

オブジェクトのパラメータ一覧

キー 必須
type yes chart
labels yes [String]
axis1.series yes [Object]
axis1.series.[var].name yes String
axis1.series.[var].values yes [Number]
axis1.bounds.minimum Number
axis1.bounds.maximum Number
axis2.series
axis2.series.[var].name
axis2.series.[var].values
axis2.bounds.minimum Number
axis2.bounds.maximum Number

API制限

タイトル 制限 備考
レート制限 600/分
セッションの有効期限 24時間 レンダリングが完了していないセッションについては、この期限に関わらず常に最新のもののみを保持します。
zipファイルのサイズ 50MBまで
アップロードURL 60分 セッションの有効期限内であれば何回でも再生成できます。
ダウンロードURL 5分 同上。