【Copilot Studio】テンプレートに数値を差し込んでWordレポートを自動生成してみた:Document output

【Copilot Studio】テンプレートに数値を差し込んでWordレポートを自動生成してみた:Document output

Copilot Studio の Document output 機能を使い、Word テンプレートに KPI データを自動差し込みしてレポートを生成する方法を検証しました。固定フォーマットの定例報告書や顧客資料の作成を、エージェントに任せられる仕組みをご紹介します。
2026.06.23

はじめに

こんにちは、けーまです。

社内向けの定例レポートや顧客への報告資料を作るとき、「フォーマットは毎回同じで、中の数値だけ入れ替える」という作業がよくあります。
この「固定テンプレートに数値を流し込む」部分を Copilot Studio のエージェントに任せられないか、というのが本記事のテーマです。

そこで本記事では、Copilot Studio の Document output(プレビュー) を取り上げ、2026年6月時点の検証結果をまとめました。
Word テンプレートのプレースホルダーに値を差し込んでレポートを生成する、資料化の基礎を中心に整理しています。
資料作成を自動化するエージェントを検討している方の参考にしていただければと思います。

本記事は、Copilot Studio でエージェントを作るシリーズの第9回です。
シリーズ全体では「収集 → 集計 → グラフ → 示唆 → 資料化」を一気通貫で行うエージェントを目指しており、本記事はその「資料化(Word)」を扱います。

対象読者:Copilot Studio でテンプレートに数値を差し込んで資料(Word)を自動生成したい方

シリーズ記事一覧

テーマ 記事
第1回 最初のエージェント 初めてのエージェントを作ってみた
第2回 ナレッジ ナレッジでファイルに基づく回答を試してみた
第3回 トピック・ツール・フロー トピック・ツール・エージェントフローで「動き」を作り込む
第4回 テンプレート・自律トリガー・マルチエージェント テンプレート・自律トリガー・マルチエージェントで構成を広げてみた
第5回 収集(データの渡し方) 集計用のKPIデータをエージェントに持たせる方法を比べてみた
第6回 集計 KPIの集計をLLMに任せず決定論的にやってみた
第7回 グラフ KPIをチャット内でグラフ表示してみた
第8回 示唆 集計した数値から示唆を生成してみた
第9回 資料化(Word) (本記事)

1. この記事で検証すること

エージェントに「3社の KPI をまとめたレポートを作って」と頼んだら、決まったフォーマットの Word 文書が出てくる、という状態を目指します。
本記事では、まず固定のKPIデータを使った最小構成で、テンプレートに値が差し込まれることを確認します。ユーザー入力や変数に応じて値が変わる動的な差し込みは、収集・集計の回で扱った入力の受け渡しと組み合わせる発展形です。

具体的には、次の流れを実機で確認します。

  • Word テンプレートに {{フィールド}} 形式のプレースホルダーを用意する
  • Copilot Studio のプロンプトツールで、指示に書いたKPIデータから各プレースホルダーの値を差し込む
  • エージェントのテストチャットから自然言語で呼び出し、Word を生成できることを確認する

検証には、架空の SaaS 企業3社(CloudNova / StreamForge / Datapeak)の KPI データ(架空)を使います。

2. 出力手段の整理(Word は Document output、PPT/Excel は Code interpreter)

Copilot Studio でドキュメントを生成する手段はいくつかあります。
本記事で使う Document output と、もう一つの選択肢である Code interpreter を整理します。

Document output はプレビュー機能で、プロンプトの出力を Word 文書にします。

The output of the Document (preview) feature lets you generate a Microsoft Word document for your prompt response instead of text. The generated document follows a layout that needs to be provided in the document output settings.

引用元: Document output (preview) | Microsoft Learn

テンプレートのプレースホルダーに AI が値を生成して差し込む方式です。出力できるのは Word のみです。

Generating only a Word document is supported.

引用元: Document output (preview) | Microsoft Learn

PowerPoint や Excel を生成したい場合は コードインタープリター を使います。
Python を実行して Word / Excel / PowerPoint / PDF を処理できます。

Execute Python code for data analysis, processing Word, Excel, PowerPoint, and PDF files, and visualizations

引用元: Use code interpreter in a prompt to generate and execute Python code | Microsoft Learn

ただしコードインタープリターはプレミアム機能で、Copilot Credits を消費します。

Code generation and execution count as text and generative AI tools (premium) features.

引用元: Use code interpreter in a prompt to generate and execute Python code | Microsoft Learn

手段 対応フォーマット 差し込み方法 課金
Document output Word のみ テンプレの {{フィールド}} に AI が値を生成 プロンプト実行として Copilot Credits を消費(コードインタープリターとは別メーター)
Code interpreter Word / Excel / PowerPoint / PDF Python 実行 プレミアム(Copilot Credits)

後のテスト画面(手順5)でも、プロンプトの実行に Copilot Credits(0.3)が表示されます。
コードインタープリターとは別の、通常のプロンプト実行としての消費です。

本記事では、まず Word(Document output)でテンプレ差し込みの仕組みを確認します。

3. Word テンプレートを用意する

差し込み先の Word テンプレートを作ります。
Document output では、差し替えたい箇所を {{フィールド名}} の形式で書きます。

ルールは次のとおりです。

  • 差し替えるフィールドは、二重の波かっこ {{ }} で囲む(例: {{FirstName}}
  • 表の中のフィールドは、テーブル名と列名をピリオドで区切って書く(例: {{items.quantity}}
  • フィールド名にスペースを含めない
  • Fields to replace should be identified using double curly brackets. Example: {{FirstName}}
  • Fields to replace in a table should identify the table name and the column name, separated with a period. Example: {{items.quantity}}
  • Fields to replace shouldn't contain space in the name.

引用元: Document output (preview) | Microsoft Learn

今回は3社固定なので、表の各セルに個別のフィールドを置く構成にしました({{CN_ARR}} など)。
テンプレートは python-docx で生成します。

テンプレート生成スクリプト(クリックすると展開します)
#!/usr/bin/env python3
"""KPI比較レポートのWordテンプレート(Document output 用)を生成する。"""
from docx import Document

OUT = "kpi-report-template.docx"

# 比較表の行: (企業名固定, ARRフィールド, NRRフィールド, 営業利益率フィールド)
TABLE_ROWS = [
    ("CloudNova", "{{CN_ARR}}", "{{CN_NRR}}", "{{CN_OPM}}"),
    ("StreamForge", "{{SF_ARR}}", "{{SF_NRR}}", "{{SF_OPM}}"),
    ("Datapeak", "{{DP_ARR}}", "{{DP_NRR}}", "{{DP_OPM}}"),
]
HEADERS = ["企業", "ARR(百万円)", "NRR(%)", "営業利益率(%)"]


def main() -> None:
    doc = Document()
    doc.add_heading("SaaS企業 KPI比較レポート", level=0)
    doc.add_paragraph("対象期間: {{ReportPeriod}}")

    doc.add_heading("主要KPI比較", level=1)
    table = doc.add_table(rows=len(TABLE_ROWS) + 1, cols=len(HEADERS))
    table.style = "Light Grid Accent 1"
    for i, h in enumerate(HEADERS):
        table.rows[0].cells[i].text = h
    for r, row in enumerate(TABLE_ROWS, start=1):
        for c, val in enumerate(row):
            table.rows[r].cells[c].text = val

    doc.add_heading("比較から読み取れる示唆", level=1)
    doc.add_paragraph("{{Insights}}")
    doc.save(OUT)


if __name__ == "__main__":
    main()

上記を make_docx_template.py として保存します。
そのうえで、次のコマンドを実行します。

pip install python-docx
python make_docx_template.py

表紙・3社の比較表・示唆欄を持つ、プレースホルダー入りのテンプレートができます。

プレースホルダー入りのWordテンプレート
差し替え箇所を {{フィールド}} で書いた Word テンプレート

4. プロンプトツールを Document output で作る

エージェントの 「ツール」 から、新しいプロンプトツールを作ります。

「ツールを追加する」→「プロンプト」 を選びます。

プロンプトエディターが開いたら、右側の出力を 「テキスト」から「ドキュメント」 に変更します。
この「ドキュメント」が Document output です。

出力をドキュメントに変更
出力形式を「ドキュメント」に変更する

「ドキュメントの設定」 を開き、手順3で作ったテンプレートをアップロードします。
アップロードすると、テンプレート内のプレースホルダーが自動で認識されます。

テンプレートをアップロードしてフィールドが認識された状態
11個のフィールドが「識別済みフィールド」として認識された

次に、左側の指示に「各フィールドに何を入れるか」を書きます。
フィールド名が意味を持つ場合、AI は少ない指示でも正しく埋められますが、CN SF DP のような略称は対応関係を明示しておくと確実です。

以下のSaaS企業3社のKPIデータをもとに、ドキュメントの各フィールドを埋めてください。

KPIデータ(対象期間: 2025年度 第2四半期、2025年7〜9月):
- CloudNova: ARR 1,800百万円, NRR 118%, 営業利益率 12.5%
- StreamForge: ARR 1,150百万円, NRR 104%, 営業利益率 -3.0%
- Datapeak: ARR 2,600百万円, NRR 126%, 営業利益率 18.4%

フィールド対応:
- ReportPeriod: 2025年度 第2四半期(2025年7〜9月)
- CN_ARR / CN_NRR / CN_OPM: CloudNova の ARR / NRR / 営業利益率の数値のみ
- SF_ARR / SF_NRR / SF_OPM: StreamForge の ARR / NRR / 営業利益率の数値のみ
- DP_ARR / DP_NRR / DP_OPM: Datapeak の ARR / NRR / 営業利益率の数値のみ
- Insights: 3社比較から読み取れる示唆を3〜4文(各社の強み・弱みと首位企業)

数値は上記データのとおりに入れ、創作しないこと。

5. テストでフィールド差し込みを確認する

指示を入れると 「テスト」 ボタンが有効になります。
テストを実行すると、各フィールドに差し込まれた値と、生成された Word のダウンロードリンクが表示されます。

テスト結果。各フィールドに値が差し込まれた
11フィールドすべてに正しい値が差し込まれ、「出力.docx」のダウンロードリンクが出た

私の環境では、ARR・NRR・営業利益率の数値はすべて入力データのとおりに差し込まれ、Insights も入力から生成されました。
ダウンロードした Word は、テンプレートの表に数値が入った、編集可能なネイティブの Word 表になっています。

差し込み後のWord(実物)
テンプレートに数値が差し込まれた Word。表はネイティブの Word 表で編集可能

確認できたら、プロンプトツールを保存します。
保存時に名前と説明を求められます。
説明はエージェントのオーケストレーターがツールを選ぶ判断に使われるため、「いつ使うツールか」が分かる内容にします。

6. エージェントから自然言語で呼び出す

作ったプロンプトツールは、エージェントのツールとして登録されます。
テストチャットから自然言語で依頼してみます。

「3社のKPIをWordのレポートにまとめて出力してください」と送ると、エージェントが自動でこのツールを選んで実行し、Word を生成したとの文言が出ました。
しかし、Word のダウンロードリンクが出ませんでした。

公式にも、トピックでは生成ドキュメントのバイト列をノード出力として直接扱えないため、フロー経由で共有リンクを返す方法が案内されています。

Unlike cloud flows and agent flows, the Document Output Content Bytes output isn't directly available as a node output in a topic. To allow a user to download the generated document in a topic, use a cloud flow as an intermediary to save the document and return a download link.

引用元: Document output (preview) | Microsoft Learn

ユーザーが実ファイルを受け取れるようにするには、フローを経由します。

公式ドキュメントの手順は次のとおりです。

  1. 「プロンプトを実行する(Run a prompt)」 アクションを追加し、Document output で作ったプロンプトを選ぶ
  2. OneDrive または SharePoint の 「ファイルの作成(Create file)」 アクションを追加する
  3. その 「ファイルコンテンツ(File content)」 に、プロンプトの出力 「Document Output Content Bytes」 を指定する
  4. 作成したファイルに対して 「共有リンクの作成(Create sharing link)」 アクションを追加し、ダウンロード用の共有 URL を生成する
  5. 「Power Virtual Agents に値を返す(Return value(s) to Power Virtual Agents)」 アクションで、共有リンクの URL を出力変数として返す
  1. Add a Run a prompt action and select the prompt created in Create a prompt with document output.
  2. Add the action Create file from OneDrive or SharePoint.
  3. From the prompt action in the File content field, select Document Output Content Bytes.
  4. Add a Create sharing link action for the file to generate a shareable download URL.
  5. Add a Return value(s) to Power Virtual Agents action and return the sharing link URL as an output variable.

引用元: Document output (preview) | Microsoft Learn

このフローをツールとして呼べば、チャットに共有リンクを返せます。
本記事ではフローによる配布までは検証していないため、別の記事で扱います。

テストチャットでツールが自動起動し、Wordが生成された
自然言語の依頼からツールが自動選択・実行され、KPI比較レポートが生成された

7. まとめ

定型の Word レポートなら、サードパーティのコネクタを使わず、標準機能の Document output だけで「テンプレートに数値を差し込んで生成する」最小構成が組めます。
今回の検証では、固定データを使って、自然言語の依頼からツール選択・差し込み・Word 生成?までの流れを確認することはできました。

一方で、ユーザーへのファイル配布(共有リンク)や、PowerPoint / Excel への展開は本記事の範囲外です。
配布はフロー、PowerPoint / Excel は Code interpreter と、別の手段が要ります。これらは後の回で扱います。

参考

この記事をシェアする

関連記事