メインコンテンツへスキップ
DocGenToolkitクラスは、Salesforce管理パッケージ内におけるBox Document Generation操作のための包括的インターフェースを提供します。このクラスは、ドキュメント生成リクエストの処理、テンプレートの管理、およびテンプレートからドキュメントを作成するためのバッチ処理を担います。

クラス署名

Global with sharing class DocGenToolkit

コンストラクタ

DocGenToolkit()

DocGenToolkitの新しいインスタンスを作成するためのデフォルトコンストラクタ。
DocGenToolkit toolkit = new DocGenToolkit();

ドキュメント生成メソッド

submitDocGenBatch

Boxに対してドキュメント生成のバッチリクエストを送信します。
パラメータ説明
docGenRequestDocGenRequestドキュメント生成に必要なすべてのパラメータを含むリクエストオブジェクト。
戻り値:
  • DocGenResponse - バッチ情報とステータスを含むレスポンス。
例:
DocGenToolkit toolkit = new DocGenToolkit();
DocGenRequest request = new DocGenRequest();
request.file.Id = '123456789';
request.destination_Folder.Id = '987654321';
request.output_type = 'pdf';
DocGenResponse response = toolkit.submitDocGenBatch(request);
System.debug('Batch ID: ' + response.id);

GenerateDocGenForRecords (テンプレートコードを使用)

IDとテンプレートコードに基づき、テンプレートを使用して複数のレコードのドキュメントを生成します。
パラメータ説明
recordIdsList<String>ドキュメントの生成対象となるSalesforceレコードIDのリスト。
templateIdStringDocGen_Template__cレコードのID。
templateCodeStringテンプレートのコード識別子。
戻り値:
  • List<DocGenResponse> - 各ドキュメント生成リクエストに対するレスポンスのリスト。
例:
DocGenToolkit toolkit = new DocGenToolkit();
List<String> recordIds = new List<String>{'001XXXXXXXXXXXXXXX', '001YYYYYYYYYYYYYYY'};
String templateId = 'a0XXXXXXXXXXXXXXX';
String templateCode = 'INVOICE_TEMPLATE';
List<DocGenResponse> responses = toolkit.GenerateDocGenForRecords(recordIds, templateId, templateCode);
for (DocGenResponse response : responses) {
    System.debug('Generated document: ' + response.id);
}

GenerateDocGenForRecords

IDのみに基づき、テンプレートを使用して複数のレコードのドキュメントを生成します。
パラメータ説明
recordIdsList<String>ドキュメントの生成対象となるSalesforceレコードIDのリスト。
templateIdStringDocGen_Template__cレコードのID。
戻り値:
  • List<DocGenResponse> - 各ドキュメント生成リクエストに対するレスポンスのリスト。
例:
DocGenToolkit toolkit = new DocGenToolkit();
List<String> recordIds = new List<String>{'001XXXXXXXXXXXXXXX'};
String templateId = 'a0XXXXXXXXXXXXXXX';
List<DocGenResponse> responses = toolkit.GenerateDocGenForRecords(recordIds, templateId);
System.debug('Generated ' + responses.size() + ' documents');

GenerateDocGenForRecords (フォルダの上書きを使用)

オプションのフォルダの上書きを使用して、複数のレコードのドキュメントを生成します。
パラメータ説明
recordIdsList<String>ドキュメントの生成対象となるSalesforceレコードIDのリスト。
templateIdStringDocGen_Template__cレコードのID。templateCodeが指定されている場合は、nullにできます。
templateCodeStringテンプレートのコード識別子。templateIdが指定されている場合は、nullにできます。
folderIdOverrideStringデフォルトの宛先フォルダを上書きするためのフォルダID (省略可)。
戻り値:
  • List<DocGenResponse> - 各ドキュメント生成リクエストに対するレスポンスのリスト。
例:
DocGenToolkit toolkit = new DocGenToolkit();
List<String> recordIds = new List<String>{'001XXXXXXXXXXXXXXX', '001YYYYYYYYYYYYYYY'};
String templateId = 'a0XXXXXXXXXXXXXXX';
String folderOverride = '123456789';
List<DocGenResponse> responses = toolkit.GenerateDocGenForRecords(recordIds, templateId, null, folderOverride);
for (DocGenResponse response : responses) {
    System.debug('Document generated in folder: ' + response.id);
}

ユーティリティメソッド

generateFileName

テンプレートの変数を実際のデータ値に置き換えて、ファイル名を生成します。
パラメータ説明
fileNameString{{field.subfield}}形式の変数を含むテンプレートファイル名。
dataMap<String, Object>ファイル名に代入するデータを含むマップ。
戻り値:
  • String - 変数が置き換えられた、生成済みのファイル名。
テンプレートの変数の形式:
  • Salesforceオブジェクトのフィールドを参照するには、{{Object.Field}}構文を使用します。
  • {{Account.Name}}のような、ネストされたオブジェクト参照をサポートします。
例:
String templateFileName = 'Invoice_{{Account.Name}}_{{Opportunity.StageName}}.pdf';
Map<String, Object> data = new Map<String, Object>{
    'Account' => new Map<String, Object>{'Name' => 'Acme Corp'},
    'Opportunity' => new Map<String, Object>{'StageName' => 'Closed Won'}
};
String generatedFileName = DocGenToolkit.generateFileName(templateFileName, data);
// Result: 'Invoice_Acme Corp_Closed Won.pdf'

バッチ管理メソッド

getDocGenBatch

ドキュメント生成バッチに関する情報を、そのバッチのIDを指定することで取得します。
パラメータ説明
batchIdString情報を取得するバッチのID。
戻り値:
  • DocGenResponse - バッチのステータスと詳細情報を含むレスポンス。
例:
DocGenToolkit toolkit = new DocGenToolkit();
String batchId = 'batch_123456789';
DocGenResponse batchInfo = toolkit.getDocGenBatch(batchId);
System.debug('Batch status: ' + batchInfo.status);
System.debug('Total documents: ' + batchInfo.total_count);

getDocGenBatchByURL

ドキュメント生成バッチの情報を、URLエンドポイントを指定することで取得します。
パラメータ説明
endpointStringバッチ情報の取得元となるURLエンドポイント。
戻り値:
  • DocGenResponse - バッチ情報を含むレスポンス。
例:
DocGenToolkit toolkit = new DocGenToolkit();
String endpoint = 'https://api.box.com/2.0/document_generation_batches/batch_123456789';
DocGenResponse batchInfo = toolkit.getDocGenBatchByURL(endpoint);
System.debug('Batch status: ' + batchInfo.status);

テンプレート管理メソッド

createTemplate (ファイルIDから)

IDに基づいて、Boxファイルからテンプレートを作成します。
パラメータ説明
fileIdStringテンプレートとしてマークするBoxファイルID。
戻り値:
  • DocGenTemplateResponse - テンプレート情報を含むレスポンス。
例:
DocGenToolkit toolkit = new DocGenToolkit();
String fileId = '123456789';
DocGenTemplateResponse templateResponse = toolkit.createTemplate(fileId);
System.debug('Template created with ID: ' + templateResponse.id);

createTemplate (リクエストオブジェクトから)

カスタムテンプレートリクエストを使用して、Boxファイルからテンプレートを作成します。
パラメータ説明
templateRequestDocGenTemplateRequestテンプレートの構成を含むリクエストオブジェクト。
戻り値:
  • DocGenTemplateResponse - テンプレート情報を含むレスポンス。
例:
DocGenToolkit toolkit = new DocGenToolkit();
DocGenTemplateRequest request = new DocGenTemplateRequest('123456789');
request.name = 'Invoice Template';
request.description = 'Template for generating invoices';
DocGenTemplateResponse response = toolkit.createTemplate(request);
System.debug('Template created: ' + response.id);

deleteTemplate

テンプレートのファイルIDを指定して、Boxからそのテンプレートを削除します。
パラメータ説明
fileIdString削除するテンプレートのBoxファイルID。
戻り値:
  • DocGenTemplateResponse - 削除を確認するレスポンス。
例:
DocGenToolkit toolkit = new DocGenToolkit();
String fileId = '123456789';
DocGenTemplateResponse response = toolkit.deleteTemplate(fileId);
System.debug('Template deleted successfully');

getJobsForTemplate

テンプレートのレコードに関連付けられているすべてのジョブを取得します。
パラメータ説明
templateRecordIdIdDocGen_Template__cレコードのSalesforce ID。
戻り値:
  • DocGenResponse - テンプレートのジョブ情報を含むレスポンス。
例:
DocGenToolkit toolkit = new DocGenToolkit();
Id templateRecordId = 'a0XXXXXXXXXXXXXXX';
DocGenResponse jobsResponse = toolkit.getJobsForTemplate(templateRecordId);
System.debug('Found ' + jobsResponse.total_count + ' jobs for template');

タグ管理メソッド

getTags

テンプレートのIDを指定して、そのテンプレートに使用可能なタグを取得します。
パラメータ説明
templateIdStringタグを取得するBoxテンプレートのID。
戻り値:
  • DocGenTagsResponse - 使用可能なタグを含むレスポンス。
例:
DocGenToolkit toolkit = new DocGenToolkit();
String templateId = 'template_123456789';
DocGenTagsResponse tagsResponse = toolkit.getTags(templateId);
System.debug('Available tags: ' + tagsResponse.tags);

getTagsByURL

URLエンドポイントを指定して、テンプレートに使用可能なタグを取得します。
パラメータ説明
endpointStringタグの取得元となるURLエンドポイント。
戻り値:
  • DocGenTagsResponse - 使用可能なタグを含むレスポンス。
例:
DocGenToolkit toolkit = new DocGenToolkit();
String endpoint = 'https://api.box.com/2.0/document_generation_templates/template_123456789/tags';
DocGenTagsResponse tagsResponse = toolkit.getTagsByURL(endpoint);
System.debug('Available tags: ' + tagsResponse.tags);

一般的な利用パターン

基本的なドキュメント生成

// Initialize the toolkit
DocGenToolkit toolkit = new DocGenToolkit();

// Generate documents for multiple records
List<String> recordIds = new List<String>{'001XXXXXXXXXXXXXXX', '001YYYYYYYYYYYYYYY'};
String templateId = 'a0XXXXXXXXXXXXXXX';
List<DocGenResponse> responses = toolkit.GenerateDocGenForRecords(recordIds, templateId);

// Process the responses
for (DocGenResponse response : responses) {
    if (response.status == 'success') {
        System.debug('Document generated successfully: ' + response.id);
    } else {
        System.debug('Document generation failed: ' + response.error);
    }
}

テンプレートの作成と管理

DocGenToolkit toolkit = new DocGenToolkit();

// Create a template
String fileId = '123456789';
DocGenTemplateResponse templateResponse = toolkit.createTemplate(fileId);

// Get jobs for the template
Id templateRecordId = 'a0XXXXXXXXXXXXXXX';
DocGenResponse jobsResponse = toolkit.getJobsForTemplate(templateRecordId);

// Delete the template when no longer needed
DocGenTemplateResponse deleteResponse = toolkit.deleteTemplate(fileId);

バッチの監視

DocGenToolkit toolkit = new DocGenToolkit();

// Submit a batch
DocGenRequest request = new DocGenRequest();
// ... configure request ...
DocGenResponse response = toolkit.submitDocGenBatch(request);

// Monitor the batch
String batchId = response.id;
DocGenResponse batchInfo = toolkit.getDocGenBatch(batchId);

// Check status
if (batchInfo.status == 'completed') {
    System.debug('Batch completed successfully');
} else if (batchInfo.status == 'failed') {
    System.debug('Batch failed: ' + batchInfo.error);
}

エラー処理

DocGenToolkitを使用する際は、以下に示すように潜在的なエラーを処理してください。
try {
    DocGenToolkit toolkit = new DocGenToolkit();
    List<DocGenResponse> responses = toolkit.GenerateDocGenForRecords(recordIds, templateId);
    for (DocGenResponse response : responses) {
        if (response.error != null) {
            System.debug('Error: ' + response.error);
        }
    }
} catch (Exception e) {
    System.debug('Exception occurred: ' + e.getMessage());
}

関連するクラス

  • DocGenRequest - ドキュメント生成のためのリクエストオブジェクト。
  • DocGenResponse - バッチ情報を含むレスポンスオブジェクト。
  • DocGenTemplateRequest - テンプレート作成のためのリクエストオブジェクト。
  • DocGenTemplateResponse - テンプレート操作のためのレスポンスオブジェクト。
  • DocGenTagsResponse - タグ操作のためのレスポンスオブジェクト。
  • DocGen_Template__c - テンプレートのメタデータを保存するためのカスタムオブジェクト。
最終更新日 2026年6月9日