<img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=139163818022217&amp;ev=PageView&amp;noscript=1"> <img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=271598307802760&amp;ev=PageView&amp;noscript=1">

Box Doc Gen APIによるドキュメント生成自動化の効率化に関するワークショップ

 公開日:2025.02.03  更新日:2026.06.10

0_67obCMcKwdUWQHNk

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開発者コンソールにアクセスしてください。

0_cNR2-l4GWTBKQLb_

管理コンソール

0_R1Fq8uKZYX05ssjR

開発者コンソール

Doc Gen APIの使用

Box Doc Genは、差し込み印刷と同じような働きをします。テンプレートドキュメントには、データセットのデータが入力されるフィールドのプレースホルダの役割を果たすタグが含まれており、レコードごとにカスタマイズされたドキュメントが作成されます。

ドキュメント生成処理は非同期です。バッチでは、データセットをテンプレートに関連付け、生成するドキュメントごとにジョブを開始します。

テンプレートの作成

テンプレートの作成は、MS Wordドキュメントにプレースホルダを追加するのと同じように簡単です (例: )。必要に応じて、Boxでは、このプロセスを簡略化するためのMS Wordアドインを提供しています。

タグには、より高度な要件がある場合に役立つタグスクリプト機能が含まれています。

たとえば、以下のようなことが可能です。

  • JSONの複雑なオブジェクト:
  • 書式設定:
  • 表またはマスター/詳細構造:
  • リストタグ
  • リストの書式設定
  • 条件
  • 計算

タグスクリプトでできることの詳細については、こちらのドキュメントをご覧ください。

Doc Genでのテンプレートの設定

0_1cC48lPh9JDbFyGS

テンプレートの例

このチュートリアルは、製品の使用方法のみを説明するものであり、賃貸契約書の作成に関する法的な助言やガイダンスとして解釈しないでください。記載されているプロセスはすべて、説明のための例です。

テンプレートをアップロードしたら、次のコードを使用してDoc Genテンプレートとして設定できます。

def set_file_as_template(client: BoxClient, file_id: str) -> DocGenTemplateV2025R0:
    """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ドキュメントは、動的ドキュメントの生成に使用できるテンプレートとして設定されます。

Template created: {'file': {'id': '1744637428174', 'type': 'file'}, 'file_name': 'Lease_Template.docx'}

テンプレートからのドキュメントの生成

テンプレートが準備できたら、データセットを使用してドキュメントを生成できます。新しいデータ (例: 賃貸物件情報) を生成するメソッドの例を次に示します。

def generate_new_data(name: str, email: str, start_date: date) -> DocgenDocumentGenerationData:
    # 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を呼び出して新しいドキュメントを作成するメソッドを示します。

def generate_new_document(
    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,
    )

まとめると、次のようになります。

def main():
    ...
    # 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}")

結果は次のとおりです。

New batch created: 
{'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をポーリングすることで管理および追跡できます。以下に例を示します。

# List jobs in batch
    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")

この結果は以下のとおりです。

Job details:
  - {'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の可能性を十分に理解するのに役立ちます。


RECENT POST「開発者」の最新記事


開発者

Box、MCPアプリのサポート対象をChatGPT、Microsoft 365 Copilot、Gleanに拡大

開発者

AIエージェントにコンテンツの活用方法を教える: OpenAI Codex向けBox Skillの構築

開発者

Box AIとOpenAI Agents SDKで自律的なドキュメントワークフローを実行

開発者

Box CLI: 開発者とAIエージェントのためのコンテンツCLI