申請ボットの作り方:Copilot Studio×Power Automate全解説

申請ボットの作り方:Copilot Studio×Power Automate全解説
「経費申請のたびに担当者に声をかけて、メールを送って、承認を追いかけて……」そんな定型業務に何時間も費やしていませんか?Copilot StudioとPower Automateを組み合わせれば、Teams上の会話から承認・データ登録まですべてが自動でつながる申請ボットを、ノーコード・ローコードで実現できます。
この記事では「経費申請ボット」を具体的な題材として取り上げ、会話設計・入力検証・承認フロー・SharePoint登録・完了通知という一連の流れを、どのコンポーネントがどこで何を担うかを示しながら解体します。「作れそう」で終わらせず、自社への置き換えイメージが持てるレベルまで踏み込みます。
コアトピックの概要から把握したい方は、まずこちらをご覧ください。
まず整理:M365のどこで何が動くのか
申請ボットを構築する前に、各コンポーネントの役割分担を明確にしておくことが設計の肝です。
| コンポーネント | 役割 |
|---|---|
| Microsoft Teams | ユーザーとの会話インターフェース/承認カード表示 |
| Copilot Studio | 会話トピック設計・入力検証・Power Automate呼び出し |
| Power Automate | 承認者判定・Teamsカード送信・業務処理の実行 |
| SharePoint リスト | 申請データの永続保存 |
| Microsoft Entra ID(旧 Azure AD) | 申請者情報・組織階層の自動取得 |
表1:申請ボットにおける各コンポーネントの役割分担
Copilot Studioは「対話と判断」を担い、Power Platformは「実行と制御」を担うという関係性を押さえておくと、設計時の迷いが大幅に減ります。
全体フロー:会話から完了通知まで

STEP 1|Copilot Studio:会話トピックの設計

トリガーフレーズの登録
まずCopilot Studioのトピック編集画面で、ボットを起動する「きっかけの言葉」を登録します。
登録例:
- 「経費申請したい」
- 「領収書を精算したい」
- 「立替費用を申請」
トリガーフレーズは自然な口語で複数登録しておくほど、ユーザーがどんな言い回しをしても会話が始まります。
会話シナリオ(ヒアリング順序)
トピック内では「質問ノード」を使い、以下の順序でユーザーから情報を収集します。
- 用途カテゴリ:「何の経費ですか?(交通費/接待費/備品/その他)」 → 選択肢カード形式で提示
- 金額:「金額を教えてください(円単位)」 → 数値型変数として格納
- 領収書:「領収書をアップロードしてください」 → ファイル添付ノードで受付
- 確認メッセージ:「以下の内容で申請します。よろしいですか?」 → はい/いいえの分岐
入力検証:金額上限・必須項目チェック
「はい」が選択された後、Power Automateへ渡す前にCopilot Studio側で入力値を検証します。
⚠️ 注意点
金額が定めた上限(例:10万円)を超えた場合は、「10万円を超える申請は稟議書が必要です」とメッセージを返し、フローへの進行を止める条件分岐を設けておくと、不正フローの防止になります。
変数に格納した値(申請金額、用途カテゴリ、領収書ファイル)は、次のステップでPower Automateフローへパラメーターとして引き渡されます。
STEP 2|Power Automate:承認フローの組み立て

フローのトリガー設定
Copilot Studioで構築したエージェントからPower Automateフローを呼び出す際には、「エージェントがフローを呼び出す」トリガーを使用します。
このトリガー設定の中で、Copilot Studio側から受け取る入力パラメーターを定義します。
入力パラメーター(Copilot Studio → Power Automate):
| パラメーター名 | 型 | 内容 |
|---|---|---|
| applicantAmount | 数値 | 申請金額 |
| expenseCategory | テキスト | 用途カテゴリ |
| receiptFile | ファイル | 領収書 |
| applicantUPN | テキスト | 申請者のメールアドレス |
申請者情報の自動取得
フロー内でMicrosoft 365ユーザーコネクターを使い、申請者のUPN(メールアドレス)からプロフィール・部署・上司情報をEntra IDから自動取得します。これにより、ユーザーが上司のメールアドレスを手入力する手間を省き、組織変更があっても自動追従します。
承認者の金額分岐
Power Automateフロー内では、抽出したパラメーターの値を業務プロセスの分岐条件として利用できます。
経費申請ボットでは金額をキーに承認ルートを分けるのが一般的です。

TeamsへのAdaptive Card送信
人間の判断が必要なステップ(承認リクエストや情報提供など)は「Human in the loop」アクションとして設計します。
Power AutomateのTeamsコネクターを使い、承認者のTeamsチャットに以下の情報を含むAdaptive Card(インタラクティブカード)を送信します。
承認カードに表示する項目例:
- 申請者名・部署
- 申請金額・用途カテゴリ
- 申請日時
- 領収書ファイルへのリンク
- 「承認」「却下」ボタン
承認者はTeams上でボタンをタップするだけで対応でき、メールへの返信や専用システムへのログインが不要になります。
結果に応じた後続処理
承認・却下のレスポンスを受け取った後、Power Automate内で条件分岐を設けます。
承認の場合:
- SharePointリストに申請データを新規アイテムとして登録
- 申請者のTeamsに「申請が承認されました」と完了通知を送信
却下の場合:
- 申請者のTeamsに「申請が却下されました(理由:○○)」と通知を送信
- 必要に応じてSharePointに却下記録を残す
💡 ポイント
Power Automateのエージェントフローには、LLMを活用してテキスト生成・ドキュメント処理・自然言語での返答生成を行うAI機能も組み込めます。
例えば、却下通知に承認者のコメントをAIで要約して添えることで、申請者の次アクションが明確になります。
STEP 3|SharePoint:データ設計のポイント
SharePointリストを申請データの保管先とする場合、以下のような列構成が実装しやすい基本形です。
| 列名 | 型 | 内容 |
|---|---|---|
| 申請者名 | 1行テキスト | Entra IDから取得 |
| 申請金額 | 数値 | ボットで入力した金額 |
| 用途カテゴリ | 選択肢 | 交通費/接待費/備品/その他 |
| 承認者 | 1行テキスト | フロー内で決定した承認者名 |
| ステータス | 選択肢 | 申請中/承認済/却下 |
| 申請日時 | 日付と時刻 | フロー実行時刻を自動入力 |
| 領収書リンク | ハイパーリンク | 添付ファイルへのURL |
表2:経費申請ボット用SharePointリストの基本列構成
Power AutomateのSharePointコネクターには「アイテムの作成」アクションがあり、上記の列に対して各パラメーターを直接マッピングするだけで登録処理を完成させられます。
実装時の注意点と落とし穴

1. エラーハンドリングを必ず入れる
Power Automateフロー内でAPIタイムアウトや接続エラーが発生した場合、エラーハンドリングがないとフローが途中で止まりながら申請者に「申請完了しました」と誤通知するリスクがあります。各アクションに「失敗時の実行」ブランチを追加し、エラー時は担当者へ通知するフォールバックを設けましょう。
2. ライセンス設計を事前に確認する
Copilot Studio内のエージェントフローは、Power Automateライセンスとは独立して、使用量に基づいてCopilot Studio経由で課金されます。
一方、既存のPower Automateクラウドフローをそのまま流用することも可能です。どちらの方式が自社のライセンス構成に合うか、事前に確認してください。
エージェントフローのデザイナー内やエージェントのテストチャットからのテスト実行は、Copilot Studioのキャパシティを消費しません。
本番公開前に十分テストを実施しておきましょう。
4. 段階的な会話設計から始める
最初から全項目を一度にヒアリングしようとすると、ユーザーが途中で離脱するリスクが高まります。まず「金額と用途カテゴリ」だけを収集する最小構成でリリースし、フィードバックを得ながら領収書添付や詳細項目を追加していくアジャイルなアプローチが現実的です。
まとめ
Copilot Studio × Power Automateによる経費申請ボットの構成を整理すると、次のようになります。
- Teams:会話UI・承認カードの表示・通知受け取り
- Copilot Studio:ヒアリングトピック・入力検証・Power Automate呼び出し
- Power Automate:承認者判定・Teamsカード送信・SharePoint登録・完了通知
- SharePoint:申請データの永続保存と管理画面
それぞれが明確な役割を持つため、既存のM365環境に追加コンポーネントを導入することなく完結できる点が大きなメリットです。申請業務という「判断ルールが明確で繰り返しが多い業務」は、まさにCopilot Studio連携の最良の出発点です。
よくある質問(FAQ)
Q1. Copilot StudioとPower Automateはどうやって連携させるのですか?
Copilot Studioのトピック内に「アクションを呼び出す」ノードを追加し、Power Automateフローをアクションとして紐づけることで連携します。フロー側では「エージェントがフローを呼び出す」トリガーを設定し、Copilot Studio側から渡したいパラメーター(金額・用途等)を入力として定義します。処理結果はフロー末尾の「エージェントに応答」アクションでボットへ返却でき、会話の中でユーザーに結果を表示できます。
Q2. Teams上で申請ボットを動かすにはどんな設定が必要ですか?
Copilot StudioでボットをTeamsチャネルに公開する設定を行うだけで動作します。Copilot Studio管理画面の「チャネル」メニューからMicrosoft Teamsを選択し、公開手順を完了させると、Teamsのアプリストアまたはチャットからボットへアクセスできるようになります。組織全体に展開する場合はMicrosoft 365管理センターでアプリの展開設定を行い、対象ユーザーまたはグループを指定します。
Q3. 経費申請ボットで承認フローを組み込む場合、追加ライセンスは必要ですか?
Copilot Studio内のエージェントフローを使う場合、Power Automateの個別ライセンスは不要で、Copilot Studioの使用量ベース課金(Copilot Credits)で処理されます。ただし、既存のPower Automateクラウドフローを流用する場合はPower Automateのライセンスが別途必要なケースがあります。テスト実行(デザイナー内のテストチャット)はキャパシティを消費しないため、本番公開前に無料で検証できます。
Q4. SharePointリストを申請データの保管先にするメリットは何ですか?
SharePointリストはMicrosoft 365に標準で含まれ、追加コストなしで利用できる点が最大のメリットです。Power Automateのコネクターとネイティブに統合されているため、「アイテムの作成」アクションで申請データを自動登録できます。また、リストのビュー機能を活用すれば、担当者が承認済み・却下・申請中をフィルタリングして一覧管理でき、専用の申請管理システムが不要になります。
Q5. Copilot Studioの申請ボットは、経費申請以外の業務にも応用できますか?
はい、会話→検証→承認→データ登録という構造を変えずに申請内容だけを置き換えることで、有給休暇申請・備品購入申請・交通費精算・名刺発注など多くの定型申請業務に転用できます。Copilot Studioでは複数のトピックを一つのボットに設定できるため、「経費申請」「備品申請」「有給申請」をまとめて一つのボットで対応させることも可能です。











