> ## Documentation Index
> Fetch the complete documentation index at: https://developer.box.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Box Doc Gen Toolkit

export const MultiRelatedLinks = ({sections = []}) => {
  if (!sections || sections.length === 0) {
    return null;
  }
  return <div className="space-y-8">
      {sections.map((section, index) => <RelatedLinks key={index} title={section.title} items={section.items} />)}
    </div>;
};

export const RelatedLinks = ({title, items = []}) => {
  const getBadgeClass = badge => {
    if (!badge) return "badge-default";
    const badgeType = badge.toLowerCase().replace(/\s+/g, "-");
    return `badge-${badge === "ガイド" ? "guide" : badgeType}`;
  };
  if (!items || items.length === 0) {
    return null;
  }
  return <div className="my-8">
      {}
      <h3 className="text-sm font-bold uppercase tracking-wider mb-4">{title}</h3>

      {}
      <div className="flex flex-col gap-3">
        {items.map((item, index) => <a key={index} href={item.href} className="py-2 px-3 rounded related_link hover:bg-[#f2f2f2] dark:hover:bg-[#111827] flex items-center gap-3 group no-underline hover:no-underline border-b-0">
            {}
            <span className={`px-2 py-1 rounded-full text-xs font-semibold uppercase tracking-wide flex-shrink-0 ${getBadgeClass(item.badge)}`}>
              {item.badge}
            </span>

            {}
            <span className="text-base">{item.label}</span>
          </a>)}
      </div>
    </div>;
};

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

## クラス署名

```
Global with sharing class DocGenToolkit
```

## コンストラクタ

### `DocGenToolkit()`

`DocGenToolkit`の新しいインスタンスを作成するためのデフォルトコンストラクタ。

```
DocGenToolkit toolkit = new DocGenToolkit();
```

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

### `submitDocGenBatch`

Boxに対してドキュメント生成のバッチリクエストを送信します。

| パラメータ           | 型               | 説明                                   |
| --------------- | --------------- | ------------------------------------ |
| `docGenRequest` | `DocGenRequest` | ドキュメント生成に必要なすべてのパラメータを含むリクエストオブジェクト。 |

戻り値:

* `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とテンプレートコードに基づき、テンプレートを使用して複数のレコードのドキュメントを生成します。

| パラメータ          | 型              | 説明                                  |
| -------------- | -------------- | ----------------------------------- |
| `recordIds`    | `List<String>` | ドキュメントの生成対象となるSalesforceレコードIDのリスト。 |
| `templateId`   | `String`       | `DocGen_Template__c`レコードのID。        |
| `templateCode` | `String`       | テンプレートのコード識別子。                      |

戻り値:

* `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のみに基づき、テンプレートを使用して複数のレコードのドキュメントを生成します。

| パラメータ        | 型              | 説明                                  |
| ------------ | -------------- | ----------------------------------- |
| `recordIds`  | `List<String>` | ドキュメントの生成対象となるSalesforceレコードIDのリスト。 |
| `templateId` | `String`       | `DocGen_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` (フォルダの上書きを使用)

オプションのフォルダの上書きを使用して、複数のレコードのドキュメントを生成します。

| パラメータ              | 型              | 説明                                                                 |
| ------------------ | -------------- | ------------------------------------------------------------------ |
| `recordIds`        | `List<String>` | ドキュメントの生成対象となるSalesforceレコードIDのリスト。                                |
| `templateId`       | `String`       | `DocGen_Template__c`レコードのID。`templateCode`が指定されている場合は、`null`にできます。 |
| `templateCode`     | `String`       | テンプレートのコード識別子。`templateId`が指定されている場合は、`null`にできます。                 |
| `folderIdOverride` | `String`       | デフォルトの宛先フォルダを上書きするためのフォルダ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`

テンプレートの変数を実際のデータ値に置き換えて、ファイル名を生成します。

| パラメータ      | 型                     | 説明                                       |
| ---------- | --------------------- | ---------------------------------------- |
| `fileName` | `String`              | `{{field.subfield}}`形式の変数を含むテンプレートファイル名。 |
| `data`     | `Map<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を指定することで取得します。

| パラメータ     | 型        | 説明             |
| --------- | -------- | -------------- |
| `batchId` | `String` | 情報を取得するバッチの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エンドポイントを指定することで取得します。

| パラメータ      | 型        | 説明                      |
| ---------- | -------- | ----------------------- |
| `endpoint` | `String` | バッチ情報の取得元となる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ファイルからテンプレートを作成します。

| パラメータ    | 型        | 説明                       |
| -------- | -------- | ------------------------ |
| `fileId` | `String` | テンプレートとしてマークする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ファイルからテンプレートを作成します。

| パラメータ             | 型                       | 説明                       |
| ----------------- | ----------------------- | ------------------------ |
| `templateRequest` | `DocGenTemplateRequest` | テンプレートの構成を含むリクエストオブジェクト。 |

戻り値:

* `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からそのテンプレートを削除します。

| パラメータ    | 型        | 説明                    |
| -------- | -------- | --------------------- |
| `fileId` | `String` | 削除するテンプレートのBoxファイルID。 |

戻り値:

* `DocGenTemplateResponse` - 削除を確認するレスポンス。

例:

```
DocGenToolkit toolkit = new DocGenToolkit();
String fileId = '123456789';
DocGenTemplateResponse response = toolkit.deleteTemplate(fileId);
System.debug('Template deleted successfully');
```

### `getJobsForTemplate`

テンプレートのレコードに関連付けられているすべてのジョブを取得します。

| パラメータ              | 型    | 説明                                      |
| ------------------ | ---- | --------------------------------------- |
| `templateRecordId` | `Id` | `DocGen_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を指定して、そのテンプレートに使用可能なタグを取得します。

| パラメータ        | 型        | 説明                   |
| ------------ | -------- | -------------------- |
| `templateId` | `String` | タグを取得するBoxテンプレートのID。 |

戻り値:

* `DocGenTagsResponse` - 使用可能なタグを含むレスポンス。

例:

```
DocGenToolkit toolkit = new DocGenToolkit();
String templateId = 'template_123456789';
DocGenTagsResponse tagsResponse = toolkit.getTags(templateId);
System.debug('Available tags: ' + tagsResponse.tags);
```

### `getTagsByURL`

URLエンドポイントを指定して、テンプレートに使用可能なタグを取得します。

| パラメータ      | 型        | 説明                   |
| ---------- | -------- | -------------------- |
| `endpoint` | `String` | タグの取得元となる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` - テンプレートのメタデータを保存するためのカスタムオブジェクト。
