
Image generated by geepai.org
今日のビジネスの世界では、ドキュメント生成の自動化により、貴重な時間が節約され、エラーのリスクが軽減されています。開発者がテンプレートからカスタマイズされたドキュメントを自動的に作成できるBox Doc Gen APIは、賃貸契約書、請求書、契約書などに最適なソリューションです。この記事では、Doc Genの基本的な概念と、その強力な機能を使用してドキュメントワークフローを効率化する方法をご紹介します。
Box Doc Genとは
Box Doc Genは、テンプレートとデータセットを使用して、データに基づいた動的なドキュメントを生成できるサービスです。差し込み印刷と似ており、Doc Genでは、テンプレート内のプレースホルダに実際のデータを入力して、カスタマイズされたドキュメントを作成できます。この処理は非同期であるため、大量のドキュメントを効率的に一括生成できます。
Box Doc Genを使用するには、ドキュメントテンプレートを作成するために、Microsoft Wordへのアクセス権限が必要です。Box Doc Genは、ビジネスドキュメントの動的な生成を容易にするように設計されていますが、Boxでは、ユーザーのMicrosoft Wordへのアクセス権限は制御していません。ユーザーは、ドキュメントテンプレートを効果的に作成するために必要なMicrosoft Wordに対する権限やアクセス権限があることを確認する必要があります。
Box Doc Genを使用する理由
Box Doc Genを使用する主な利点には、以下のようなものがあります。
- 効率の向上: 動的なデータセットに基づいてカスタマイズされたドキュメントの作成を自動化できます。
- 精度: 自動化処理を使用することで、手動によるデータ入力エラーのリスクが軽減されます。
- カスタマイズ: 条件付き書式、表、計算などの高度な機能をテンプレート内で使用できます。
- シームレスな統合: 既存のBoxワークフローと簡単に統合して、安全で拡張性に優れたドキュメント生成を実現できます。
前提条件
お客様のBoxインスタンスには、Box Doc Genを含むサブスクリプションプランが必要です。DeveloperアカウントにはBox Doc Genが含まれていないため、これらの機能を試したい場合は、Boxの営業担当者までお問い合わせください。
コードの詳細を見る前に、以下のことを確認してください。
- Box Doc Gen APIにアクセスでき、Box Doc Gen APIが有効になっていること
- 使用しているBox Platformアプリで [Doc Genを管理] スコープが有効になっていること
アカウントのサブスクリプションとAPIのアプリ構成を確認するには、Box管理コンソールとBox開発者コンソールにアクセスしてください。

管理コンソール

開発者コンソール
Doc Gen APIの使用
Box Doc Genは、差し込み印刷と同じような働きをします。テンプレートドキュメントには、データセットのデータが入力されるフィールドのプレースホルダの役割を果たすタグが含まれており、レコードごとにカスタマイズされたドキュメントが作成されます。
ドキュメント生成処理は非同期です。バッチでは、データセットをテンプレートに関連付け、生成するドキュメントごとにジョブを開始します。
テンプレートの作成
テンプレートの作成は、MS Wordドキュメントにプレースホルダを追加するのと同じように簡単です (例: )。必要に応じて、Boxでは、このプロセスを簡略化するためのMS Wordアドインを提供しています。
タグには、より高度な要件がある場合に役立つタグスクリプト機能が含まれています。
たとえば、以下のようなことが可能です。
- JSONの複雑なオブジェクト:
- 書式設定:
- 表またはマスター/詳細構造:
- リストタグ
- リストの書式設定
- 条件
- 計算
タグスクリプトでできることの詳細については、こちらのドキュメントをご覧ください。
Doc Genでのテンプレートの設定

テンプレートの例
このチュートリアルは、製品の使用方法のみを説明するものであり、賃貸契約書の作成に関する法的な助言やガイダンスとして解釈しないでください。記載されているプロセスはすべて、説明のための例です。
テンプレートをアップロードしたら、次のコードを使用してDoc Genテンプレートとして設定できます。
"""Mark a file as a DocGen template"""
# check if file exists and it is accessible
file = client.files.get_file_by_id(file_id)
template_base = client.docgen_template.create_docgen_template_v2025_r0(
file=CreateDocgenTemplateV2025R0File(id=file.id)
)
return client.docgen_template.get_docgen_template_by_id_v2025_r0(template_base.file.id)
def main():
...
# Set the MS Word file as a doc gen template
template = set_file_as_template(client, LEASE_TEMPLATE_ID)
print(f"Template created: {template.to_dict()}")
この関数により、MS Wordドキュメントは、動的ドキュメントの生成に使用できるテンプレートとして設定されます。
テンプレートからのドキュメントの生成
テンプレートが準備できたら、データセットを使用してドキュメントを生成できます。新しいデータ (例: 賃貸物件情報) を生成するメソッドの例を次に示します。
# gen random property id
property = f"HAB-2-{random.randint(1000, 9999):04}"
# todays date
lease_date = date.today()
# end date in 3 years
end_date = start_date + relativedelta(years=3)
return DocgenDocumentGenerationData(
generated_file_name=f"{property}.pdf",
user_input={
"LeaseDate": lease_date.isoformat(),
"Tenant": name,
"Email": email,
"PropertyType": "Dual Residential Pod",
"Property": property,
"Description": "Two private and spacious bedrooms, each equipped with a temperature-regulating system, offering breathtaking views of the lunar landscape through reinforced transparent panels. Bedrooms are fitted with built-in storage for personal items and lunar suits.",
"StartDate": start_date.isoformat(),
"EndDate": end_date.isoformat(),
"Rent": f"${5535:,.2f}",
},
)
次に、Doc Gen APIを呼び出して新しいドキュメントを作成するメソッドを示します。
client: BoxClient, template_id: str, destination_folder_id: str, data: List[DocGenDocumentGenerationDataV2025R0]
) -> DocGenBatchBaseV2025R0:
"""Generate a new document from a template"""
template_file = CreateDocgenBatchV2025R0File(id=template_id)
destination_folder = CreateDocgenBatchV2025R0DestinationFolder(id=destination_folder_id)
return client.docgen.create_docgen_batch_v2025_r0(
file=template_file,
input_source="api",
destination_folder=destination_folder,
output_type="pdf",
document_generation_data=data,
)
まとめると、次のようになります。
...
# Create 5 random person names
persons = ["John Doe", "Jane Doe", "Alice Smith", "Bob Johnson", "Eve Brown"]
for person in persons:
lease_data = generate_new_data(
name=person,
email=f"{person.replace(' ', '.').lower()}@example.com",
start_date=start_date,
)
docs_data.append(lease_data)
batch = generate_new_document(client, template.file.id, LEASES_FOLDER_ID, docs_data)
print(f"\nNew batch created: {batch.to_dict()}")
# Get jobs in batch
print("\nJobs in batch:")
jobs = client.docgen.get_docgen_batch_job_by_id_v2025_r0(batch.id)
for job in jobs.entries:
print(f" - Job {job.id} - {job.status.name}")
結果は次のとおりです。
{'id': '64528422-fbf4-4f8d-b6a0-b099c6572cf2', 'type': 'docgen_batch'}
Jobs in batch:
- Job 22234947 - PENDING
- Job 22237347 - PENDING
- Job 22239747 - PENDING
- Job 22242147 - PENDING
- Job 22245001 - PENDING
バッチ処理とジョブ管理
Box Doc Genでは、リクエストのバッチ処理により、大量のドキュメント生成を処理できます。各バッチおよびジョブの進捗状況は、APIをポーリングすることで管理および追跡できます。以下に例を示します。
print("\nJob details:")
for job in jobs.entries:
job_details = client.docgen.get_docgen_job_by_id_v2025_r0(job.id)
print(f" - {job_details.to_dict()}\n")
この結果は以下のとおりです。
- {'id': '22234947', 'type': 'docgen_job', 'status': 'pending', 'output_type': 'pdf'}
- {'id': '22237347', 'type': 'docgen_job', 'status': 'submitted', 'output_type': 'pdf'}
- {'id': '22239747', 'type': 'docgen_job', 'status': 'submitted', 'output_type': 'pdf'}
- {'id': '22242147', 'type': 'docgen_job', 'status': 'submitted', 'output_type': 'pdf'}
- {'id': '22245001', 'type': 'docgen_job', 'status': 'completed', 'output_type': 'pdf',
'output_file': {'type': 'file', 'id': '1744864876727'}, 'output_file_version': {'type': 'file_version', 'id': '1921647669527'}}
上記の例では状態が異なることに注目してください。
まとめ
Box Doc Genは、カスタマイズされたドキュメントの生成の自動化を検討している開発者にとって強力なツールです。賃貸契約書、請求書、契約書のいずれを扱う場合でも、このAPIには、ワークフローの効率化に必要な柔軟性と機能がすべて備わっています。条件付き書式、バッチ処理、Boxとのシームレスな統合により、大量のドキュメントを生成する一方で時間を節約し、エラーを減らすことができます。
ドキュメントワークフローの自動化を開始する準備ができたら、今すぐBox Doc Genの使用を開始しましょう。
お試しください
次のプロジェクトでBox Doc Gen APIをお試しいただき、ドキュメント生成プロセスがどのように改善されたかをお聞かせください。詳細については、公式ドキュメントをご覧ください。
こちらのワークショップのGitHubプロジェクトでは、一連のプロセスに焦点を当てて、主な機能を説明しているため、開発者がBox Doc Gen APIの可能性を十分に理解するのに役立ちます。
- トピックス:
- 開発者