「それ前にもあったやつ」をCopilotに言わせる:Copilot Studio × Power Automate(Premiumなし)で“同じ問い合わせ”を減らす

Power Automate 実践・Tips

こんにちは。今回は Copilot Studio と Power Automate をつないで、社内でよく起きる
「同じ質問が何回も来る問題」を軽くする仕組みを 最小構成で作ります。

 

完璧なAI検索じゃなくて、
「それ、前にもあったよ」を思い出させるだけで問い合わせは確実に減る。

 

この記事のゴールは、読むだけで Copilot Studio と Power Automate を実際に実装できるところまで到達することです。
スクショを撮りながら進められるように、画面ごとの手順も細かく書きます。

 


  1. 0. この記事で作るもの(完成イメージ)
  2. 1. 準備:SharePoint Lists を2つ作る(列は最小)
    1. 1-1. PastCases リストを作る(検索対象のナレッジ)
    2. 1-2. UnmatchedQuestions リストを作る(未ヒット質問ログ)
  3. 2. サンプルデータを入れる(Excel → グリッドビュー貼り付け)
    1. 2-1. PastCases にサンプルデータを入れる
    2. 2-2. UnmatchedQuestions にサンプルデータを入れる(Title列に注意)
  4. 3. Power Automate:検索フロー(FindSimilarPastCases)を作る
    1. 3-0. フローを新規作成する
    2. 3-1. 入力パラメータ(questionText)を追加
    3. 3-2. 検索用キーワードを作る(先頭30文字)
    4. 3-3. PastCases のデータを取得(Get items)
    5. 3-4. 類似っぽいものを抽出(Filter array:Summary / Keywords)
    6. 3-5. 上位3件に絞る(Top3)
    7. 3-6. 返す文字列(casesSummary)を組み立てる
    8. 3-7. ヒット有無で分岐(Condition)
    9. 3-8. ヒットしない場合:UnmatchedQuestions に保存(Create item)
    10. 3-9. Copilot Studio へ返す(戻り値)
  5. 4. Copilot Studio:トピックを作ってフローを呼び出す
    1. 4-1. トピックを作成(トリガー)
    2. 4-2. 質問文を受け取って変数に入れる
    3. 4-3. Power Automate フローを呼び出す
    4. 4-4. caseFound で分岐して返答する
    5. 4-5. Teams をチャネルとして追加し、個人でテストする
  6. 5. Teams(個人チャット)で動作確認
  7. 6. よくある詰まりポイント(最小構成版)
  8. 7. 運用のコツ(シンプルでも効く)
  9. おわりに

0. この記事で作るもの(完成イメージ)

  • Teams(個人チャット)で Copilot に質問する
  • Copilot が Power Automate を呼び出す
  • Power Automate が SharePoint の PastCases から類似ケースを探す(部分一致)
  • 見つかったら最大3件を整形して返す
  • 見つからなければ UnmatchedQuestions に質問を記録する

📸 スクショ推奨:構成図(Copilot → Power Automate → SharePoint)


1. 準備:SharePoint Lists を2つ作る(列は最小)

この記事では列名をスクショと一致させるため、リストは空で作成し、列は手動で作成します。
CSVインポートで列を作ると内部名が変わり、後で式やスクショがズレるためです。

1-1. PastCases リストを作る(検索対象のナレッジ)

  1. SharePoint サイトを開く
  2. 「新規」→「リスト」→「空のリスト」
  3. リスト名を PastCases にして作成

📸 スクショ推奨:PastCases リスト作成画面(リスト名入力)

PastCases は次の列だけ作ります(最小構成):

  • Title(既定列。削除しない)
  • Summary(複数行テキスト)
  • Resolution(複数行テキスト)
  • URL(1行テキスト)
  • Keywords(1行テキスト)

列の追加手順:

  1. PastCases を開く
  2. 「列の追加」→ 種類を選択
  3. 列名を入力(上の通り)

📸 スクショ推奨:Summary / Resolution / URL / Keywords の列が並んだ画面


1-2. UnmatchedQuestions リストを作る(未ヒット質問ログ)

  1. 同じ SharePoint サイトで「新規」→「リスト」→「空のリスト」
  2. リスト名を UnmatchedQuestions にして作成

📸 スクショ推奨:UnmatchedQuestions 作成画面

UnmatchedQuestions は次の列だけ作ります(最小構成):

  • Title(既定列。削除しない)
  • QuestionText(複数行テキスト)
  • CapturedAt(1行テキスト)
  • Notes(複数行テキスト)

ポイント:CapturedAt は最初は「1行テキスト」で作るのがおすすめです。日付列にすると貼り付けや入力形式で詰まりやすいからです(後で日付に変えてもOK)。

📸 スクショ推奨:QuestionText / CapturedAt / Notes が見える列設定画面


2. サンプルデータを入れる(Excel → グリッドビュー貼り付け)

ここはブログ読者が詰まりやすいので丁寧に書きます。
コツは「ヘッダーは貼らない」「Title列を避けて貼る」です。

2-1. PastCases にサンプルデータを入れる

  1. Excelでサンプルデータを用意(列順:Title / Summary / Resolution / URL / Keywords)
  2. ヘッダー行はコピーしない(2行目以降のデータだけコピー)
  3. SharePoint(または Microsoft Lists)で PastCases を開く
  4. 「グリッドビューで編集」をクリック
  5. Title列の最初の空セルをクリックして貼り付け(Ctrl+V)

📸 スクショ推奨:PastCases に数行入った一覧画面

2-2. UnmatchedQuestions にサンプルデータを入れる(Title列に注意)

UnmatchedQuestions は既定の Title 列があるため、貼り付け開始位置を間違えると「全部Title列に入る」事故が起きます。

  1. Excelでサンプルデータを用意(列順:QuestionText / CapturedAt / Notes)
  2. ヘッダー行はコピーしない
  3. UnmatchedQuestions を「グリッドビューで編集」
  4. Title列ではなく、QuestionText列の最初の空セルをクリック
  5. 貼り付け(Ctrl+V)

📸 スクショ推奨:QuestionText / CapturedAt / Notes に分かれて入った画面


3. Power Automate:検索フロー(FindSimilarPastCases)を作る

→ 関連記事:「【Vol.1】Copilot Studio × Power Automate × Word連携 つまずきポイント3選」

ここからが本番です。Copilot Studio から呼び出され、PastCases を検索して結果を返すフローを作ります。

3-0. フローを新規作成する

  1. Power Automate を開く
  2. 「作成」→ エージェントがフローを呼び出したとき(呼び出しトリガーのもの)を選ぶ
  3. フロー名を FindSimilarPastCases にする

📸 スクショ推奨:トリガー選択画面/フロー名が見える画面


3-1. 入力パラメータ(questionText)を追加

トリガーの「入力を追加」で次を作ります:

  • 名前:questionText
  • 種類:テキスト

📸 スクショ推奨:questionText が表示されているトリガーカード


3-2. 検索用キーワードを作る(先頭30文字)

今回は賢い自然言語処理は使わず、質問文の先頭から一定文字数を切り出して「ひっかけ」ます。

  1. アクション追加:「変数」→「変数の初期化」
  2. 名前:Compose_Keyword
  3. 式に次を入力:
substring(triggerBody()?['questionText'], 0, 30)

📸 スクショ推奨:Compose_Keyword の式が見える画面


3-3. PastCases のデータを取得(Get items)

  1. アクション追加:「SharePoint」→「複数の項目の取得(Get items)」
  2. Site Address:PastCases があるサイト
  3. List Name:PastCases

📸 スクショ推奨:Get items の Site / List が見える画面


3-4. 類似っぽいものを抽出(Filter array:Summary / Keywords)

取得した PastCases の配列から、Keyword(先頭30文字)を含むものだけ残します。
今回は最小構成なので、Summary と Keywords のどちらかに含まれていればOK(OR)にします。

  1. アクション追加:「データ操作」→「アレイ(配列)のフィルター(Filter array)」
  2. From:「複数の項目の取得」 の value
  3. 条件(ORで2つ):
  • Summary contains Compose_Keyword
  • Keywords contains Compose_Keyword

(高度な編集を使う場合は次でもOK)

@or(
  contains(item()?['Summary'], outputs('Compose_Keyword')),
  contains(item()?['Keywords'], outputs('Compose_Keyword'))
)

📸 スクショ推奨:Filter array の OR 条件が見える画面


3-5. 上位3件に絞る(Top3)

  1. アクション追加:変数の初期化 →  変数の設定
  2. 名前:Compose_Top3
  3. 式:
take(body('Filter_array'), 3)

📸 スクショ推奨:Compose_Top3 の式が見える画面


3-6. 返す文字列(casesSummary)を組み立てる

→ 関連記事:「Power Automate【変数の値を増やす】アクションの使い方を業務に役立つ具体的なフローで解説」

まず String 変数を用意します:

  1. 「変数を初期化」
  2. Name:casesText
  3. Type:String
  4. Value:空

次に繰り返し(Apply to each):

  1. 入力:Compose_Top3 の出力
  2. ループ内で「文字列変数に追加」

追加する本文(コピペ推奨):

・@{items('Apply_to_each')?['Title']}
 解決:@{items('Apply_to_each')?['Resolution']}
 手順:@{if(empty(items('Apply_to_each')?['URL']), '(手順URLなし)', items('Apply_to_each')?['URL'])}

📸 スクショ推奨:Append to string variable のフォーマットが見える画面


3-7. ヒット有無で分岐(Condition)

Filter array の件数が 0 より大きいかで分岐します:

length(body('Filter_array')) is greater than 0

Yes(ヒットあり):casesText を返す

No(ヒットなし):UnmatchedQuestions に記録する

📸 スクショ推奨:Condition の Yes/No 分岐画面


3-8. ヒットしない場合:UnmatchedQuestions に保存(Create item)

No 側に「SharePoint:項目の作成(Create item)」を追加します:

  • List:UnmatchedQuestions
  • QuestionText:questionText
  • CapturedAt:utcNow()
  • Notes:空(または固定文でもOK)

※ Title列が必須の場合は、Title に substring(triggerBody()?['questionText'], 0, 20) などを入れると運用が楽です。

📸 スクショ推奨:Create item(UnmatchedQuestions)の入力が見える画面


3-9. Copilot Studio へ返す(戻り値)

最後に「応答(Return)」で Copilot Studio に返す値を用意します。
返すのは次の2つ:

  • caseFound(true/false)
  • casesSummary(文字列)

Yes 側:

  • caseFound:true
  • casesSummary:casesText

No 側:

  • caseFound:false
  • casesSummary:空

📸 スクショ推奨:Return で caseFound / casesSummary が見える画面


4. Copilot Studio:トピックを作ってフローを呼び出す

4-1. トピックを作成(トリガー)

トリガーフレーズはガチガチにせず、拾いやすさ優先にします:

  • 前にもあった?
  • 同じエラー
  • フローが動かない
  • 承認が飛ばない

📸 スクショ推奨:トピックのトリガーフレーズ設定


4-2. 質問文を受け取って変数に入れる

ユーザーの入力をそのまま questionText に入れます(自然文まるごと)。

📸 スクショ推奨:ユーザー入力を変数に格納するブロック


4-3. Power Automate フローを呼び出す

→ 関連記事:「Power Automate:変数を使ってあいさつメッセージを送る方法。
変数の初期化と変数の設定。
」

アクションで FindSimilarPastCases を呼び出します。

  • 入力:questionText
  • 戻り値:caseFound / casesSummary

📸 スクショ推奨:フロー呼び出しブロック(入出力が見える)


4-4. caseFound で分岐して返答する

ヒットした場合(caseFound=true)

似たケースが見つかりました。

{casesSummary}

まずは上から順にお試しください。
解決しない場合は「エラー全文」「失敗したアクション名」「実行履歴リンク」を教えてください。

ヒットしなかった場合(caseFound=false)

過去ログに類似ケースが見つかりませんでした。
今回の内容は記録しておきました。

追加で、何をトリガーにしたフローか/使っているコネクタ/いつから起きたかを教えてください。

📸 スクショ推奨:分岐ブロックと返答メッセージ設定


4-5. Teams をチャネルとして追加し、個人でテストする

  1. Copilot Studio で対象 Copilot を開く
  2. 「チャネル」から Microsoft Teams を追加
  3. まずは 自分の個人チャットでテスト(公開範囲を広げない)

📸 スクショ推奨:Teams チャネル追加・テスト可能状態


5. Teams(個人チャット)で動作確認

  1. Microsoft Teams を開く
  2. 自分の Copilot チャットを開く
  3. 質問してみる

テスト例:

フローが二重に動く。トリガー条件ってどう書くの?

過去ログが返ってくればOK。
ヒットしない場合でも、UnmatchedQuestions に記録されていれば成功です(改善材料が残ります)。

📸 スクショ推奨:Teams の会話(質問→回答)

📸 スクショ推奨:UnmatchedQuestions に行が追加された画面


6. よくある詰まりポイント(最小構成版)

  • PastCases にデータがあるのにヒットしない:Compose_Keyword の文字数(30)を 20〜40 で調整
  • 返答が長すぎる:Top3 を 1〜2 にする
  • URLが空で見栄えが悪い:空なら「(手順URLなし)」と表示(本文で実装済み)
  • UnmatchedQuestions に貼り付けがズレる:Title列ではなく QuestionText 列から貼る

7. 運用のコツ(シンプルでも効く)

  • ヒットしない質問は UnmatchedQuestions に溜まる
  • それは「現場が本当に困っていること」そのもの
  • 週1回だけ見直し、よくあるものを PastCases に追加

頑張りすぎないのが続くコツです。私は「週1回、10件だけ見る」くらいがちょうどよかったです。


おわりに

今回は「賢い検索」を作る記事ではありません。
でも、現場で本当に効くのはこの感覚でした。

完璧なAI検索じゃなくて、
「それ前にもあった」を思い出させるだけで、問い合わせは確実に減る。

まずは Teams の個人チャットで試し、効果が見えたら少しずつ広げる。
それが一番、無理のない進め方だと思っています。

💌

最新のPower Automate Tipsを毎日チェック

1枚スライドで関数・概念をわかりやすく解説しています。


@isamu_Automate をフォロー

⚡

PA45 — 45分でPower Automateを一緒に学ぼう

毎週木曜夜・オンライン・無料のハンズオン講座。初心者歓迎。


次回PA45に参加する

※ 本記事は公開日時点の情報をもとに、筆者が実際に学んで試した内容を整理したものです。Copilot Studio の画面や仕様は更新されることがあるため、最新の状況は公式情報(Microsoft Learn)もあわせてご確認ください。

\ 最新情報をチェック /

💌

最新のPower Automate Tipsを毎日チェック

1枚スライドで関数・概念をわかりやすく解説しています。

𝅧 @isamu_Automate をフォロー →
⚡

PA45 — 45分でPower Automateを一緒に学ぼう

毎週木曜夜・オンライン・無料のハンズオン講座。初心者歓迎。

次回PA45に参加する →

コメント

PAGE TOP