REST APIを使用してOracle AnalyticsキャンバスをPDFまたはPNGにエクスポートする方法 (2025/08/30)
REST APIを使用してOracle AnalyticsキャンバスをPDFまたはPNGにエクスポートする方法 (2025/08/30)
投稿者:Mike Durran

はじめに
以前のブログでは、Oracle Analytics REST APIと、それらを使ってカタログを検索する方法について紹介しました。このブログでは、REST APIを使用してワークブックからキャンバスをPDFまたはPNGファイルにエクスポートする方法について説明します。
APIを使用するにはアクセストークンが必要です。Oracle Analyticsで使用するためのアクセストークンを取得する様々な方法については、以前ブログ記事で解説しました。また、 Postmanで認可コードフローを使用してアクセストークンを取得する方法については、こちらのブログ記事も併せてご覧ください。
ワークブックIDの取得
エクスポートするワークブックとキャンバスのIDを取得する必要があります。ワークブックIDを取得する最も簡単な方法は、カタログREST APIを使用して、対象のワークブックを検索することです。私の場合は、「sales by city」というワークブックを検索します。
/api/20210901/catalog/workbooks?search='sales by city'API 応答は次のとおりです。
[
{
"owner": "<owners userid>",
"path": "/@Catalog/shared/Embed/Sales By City",
"name": "Sales By City",
"description": "",
"id": "L3NoYXJlZC9FbWJlZC9TYWxlcyBCeSBDaXR5",
"lastModified": "2022-07-12T16:56:44Z",
"type": "workbooks",
"parentId": "L3NoYXJlZC9FbWJlZA"
}
]「id」(L3NoYXJlZC9FbWJlZC9TYWxlcyBCeSBDaXR5)は、次のステップで使用するこの応答の重要な部分です。
注: 必要に応じて ID を手動で導出できますが、完全なカタログ パスからbase64url の安全な IDに ID をエンコードするメカニズムを使用していることを確認してください。
ワークブックIDを使用してキャンバスIDを取得する
次の段階では、/actions/getCanvases API を使用して、ワークブック内のキャンバス参照を検索します。これは POST であることに注意してください。
/api/20210901/catalog/workbooks/L3NoYXJlZC9FbWJlZC9TYWxlcyBCeSBDaXR5/actions/getCanvases
(scroll right to view)応答には、'presentCanvases' からのエクスポート API に必要なキャンバス ID が表示されます。
{
"visualizeCanvases": [
{
"canvasId": 1,
"canvasName": "Canvas 1"
}
],
"presentCanvases": [
{
"canvasId": "d902b6c6-6693-4721-bf3e-23e0e4a53cf0",
"canvasName": "Canvas 1",
"visualizeCanvasId": 1,
"isEnabled": true
}
]
}エクスポートAPIを呼び出す
キャンバス ID は、エクスポートAPI 呼び出し (POST)のペイロード内で使用されます。
/api/20210901/catalog/workbooks/L3NoYXJlZC9FbWJlZC9TYWxlcyBCeSBDaXR5/exportsこの API 呼び出しには、上記のドキュメント リンクで完全に説明されているペイロードが必要です。例:
{
"name": "Sales By City",
"type": "file",
"canvasIds": ["d902b6c6-6693-4721-bf3e-23e0e4a53cf0"],
"format": "pdf",
"screenwidth": 1440,
"screenheight": 900
}この例ではPDFファイルをエクスポートしていますが、PNG画像もオプションとして利用可能です。Oracle Analyticsの最新バージョンでは、キャンバスIDの形式が、この例で示されているGUIDからsnapshot!canvas!1のような形式に変更されています。
ペイロード内で次のように複数のキャンバスを参照することもできます。
"canvasIds": ["snapshot!canvas!1", "snapshot!canvas!2"]これは非同期操作であるため、応答にはエクスポート ジョブを追跡するために使用できる作業要求 ID が含まれます。
{
"resourceUri": "/api/20210901/catalog/workbooks/L3NoYXJlZC9FbWJlZC9TYWxlcyBCeSBDaXR5/exports/biwj-J2M3OjYwMScuJ2NpOjE4MTI1OTYn"
}
(scroll right to view)この場合、作業依頼IDは末尾にあります:
biwj-J2M3OjYwMScuJ2NpOjE4MTI1OTYn
エクスポートジョブの監視
作業リクエスト ID は次のエンドポイントで監視されます。
/api/20210901/workRequests/biwj-J2M3OjYwMScuJ2NpOjE4MTI1OTYn応答にはジョブのステータスが含まれます。たとえば、ここではジョブが進行中です。
{
"id" : "biwj-J2M3OjYwMScuJ2NpOjE4MTI1OTYn" 、
"operationType" : "CREATE_WORKBOOK_EXPORT" 、
"resourceType" : "WORKBOOK_EXPORT" 、
"status" : "IN_PROGRESS" 、
"resources" : [
{
"actionResult" : "CREATED" 、
"resourceUri" : null、
"resourceType" : "WORKBOOK_EXPORT" 、
"id" : "biwj-J2M3OjYwMScuJ2NpOjE4MTI1OTYn" 、
"metadata" : { }
}
] 、
"Errors" : null、
"percentComplete" : 0.0 、
"timeAccepted" : "2025-08-29T12:57:56.983Z" 、
"開始時刻" : "2025-08-29T12:58:01.457Z" 、
"終了時刻" : null
}完了すると、応答は次のようになります。
{
"id": "biwj-J2M3OjYwMScuJ2NpOjE4MTI1OTYn",
"operationType": "CREATE_WORKBOOK_EXPORT",
"resourceType": "WORKBOOK_EXPORT",
"status": "SUCCEEDED",
"resources": [
{
"actionResult": "CREATED",
"resourceUri": "/api/20210901/catalog/workbooks/L0BDYXRhbG9nL3NoYXJlZC9FbWJlZC9TYWxlcyBCeSBDaXR5/exports/biwj-J2M3OjYwMScuJ2NpOjE4MTI1OTYn",
"resourceType": "WORKBOOK_EXPORT",
"id": "biwj-J2M3OjYwMScuJ2NpOjE4MTI1OTYn",
"metadata": {}
}
],
"Errors": null,
"percentComplete": 100.0,
"timeAccepted": "2025-08-29T12:57:56.983Z",
"timeStarted": "2025-08-29T12:58:01.457Z",
"timeFinished": "2025-08-29T12:59:35.336Z"
}実際の PDF ファイルを取得するための resourceUri がこの応答で重複していることに気付くでしょう。これは、エクスポート ジョブを呼び出すための元の API 呼び出しへの応答でも見られます。
エクスポートされたファイルの取得
キャンバスの PDF は、この API 呼び出しで取得されます。これは、先ほど確認した resourceUri です。
/api/20210901/catalog/workbooks/L0BDYXRhbG9nL3NoYXJlZC9FbWJlZC9TYWxlcyBCeSBDaXR5/exports/biwj-J2M3OjYwMScuJ2NpOjE4MTI1OTYn
(scroll right to view)エクスポートされたキャンバスは、Postman の次のスクリーン キャプチャで確認できます。

まとめ
このプロセスは、ワークブックのキャンバスをPDFまたはPNG形式でエクスポートする際に、さまざまな用途に使用できます。プロセスを要約すると、次のようになります。
- エクスポートするキャンバスを含むワークブックのIDを取得します
- ワークブックIDを使用してキャンバスID参照を取得します
- これらのキャンバスID参照を使用してエクスポートAPIを呼び出します
- 作業リクエストIDを使用して非同期エクスポートジョブを監視する
- ジョブステータスが成功したらファイルをエクスポートします
コメント
コメントを投稿