TeamsとPower Automate特定のチャットメッセージからのタスク作成を自動化したい!作り方を分かりやすく説明

Power AutomateとTeamsでチャットメッセージからタスクを自動作成する!

「チャットで依頼された作業、後からタスク管理ツールに転記するのを忘れてしまう」「会話の流れの中で決まったタスクを、効率よくToDoリストに追加したい」「あのチャットの依頼って、誰が担当だっけ?」。リアルタイムなチャットは便利ですが、そこで発生したタスクを効率的に管理するのは意外と手間がかかりますよね。

Power AutomateとTeams、そしてタスク管理ツール(ここではMicrosoft PlannerやMicrosoft To Doを想定)を組み合わせることで、特定のTeamsチャットメッセージから、自動でタスクを作成する仕組みを構築できます。


なぜチャットメッセージからのタスク作成が大切なの?

チャットで決まった内容をタスク化することは、チームの生産性と透明性を高める上で非常に重要です。この自動化がもたらす具体的なメリットについて、一緒に見ていきましょう。

 

タスクの登録漏れや転記ミスを防げるから

チャットでの依頼は手軽な反面、後からタスク管理ツールへの登録を忘れたり、手動での転記で誤字脱字が発生したりするリスクがあります。自動作成システムは、Teamsチャットのメッセージを直接トリガーとしてタスクを生成するため、これらのヒューマンエラーを徹底的に排除し、タスクの登録漏れを防げます。

タスク管理の効率が格段に上がるから

チャットで依頼された内容を、別のアプリを開いてコピー&ペーストし、担当者や期限を設定する作業は、一つ一つは些細でも、積み重なるとかなりの時間を消費します。自動作成システムを導入することで、これらのルーティンワークから解放され、従業員は本来の業務やタスクの実行そのものに集中できるようになります。

チーム内のタスク状況が「見える化」されるから

チャットで依頼されたタスクが、タスク管理ツールに自動で登録されることで、チームリーダーや関係者はリアルタイムでタスクの発生を把握できます。誰が、どんなタスクを、いつまでに担当するのかが明確になり、チーム全体のタスク状況が「見える化」されます。これにより、進捗の停滞やボトルネックを早期に発見し、適切なサポートを提供できるようになるでしょう。

コミュニケーションからアクションへの移行がスムーズになるから

「このチャット、誰かタスクに登録しておいて」といった依頼は、その後の対応が不明確になりがちです。自動作成システムは、チャットでの会話から直接タスクが生まれるため、コミュニケーションから具体的なアクションへの移行が非常にスムーズになります。これにより、チーム内の連携が強化され、プロジェクトの進行を加速させられますよ。


構築システムの準備を始めよう

チャットメッセージからのタスク自動作成システムを作る前に、いくつか確認し、準備しておくべきことがあります。これらを事前に整理しておくことで、スムーズに自動化を進められます。

 

タスクを管理する「ツール」を決めよう

作成されたタスクをどこで管理したいのかを決めます。Power Automateのコネクタが提供されているツールを選びましょう。

  • Microsoft Planner:
    • チームやプロジェクトのタスク管理に最適です。Teamsのタブとして埋め込むことで、チーム全員でタスク状況を共有できます。
    • プランIDとバケットID(タスクを分類するグループ)を控えておきましょう。
  • Microsoft To Do:
    • 個人のタスク管理に最適です。チームの共有タスクとしても利用できます。
    • タスクリストIDを控えておきましょう。
  • Azure DevOps:
    • 開発タスクなど、より専門的な管理が必要な場合に利用します(コネクタあり)。
  • Jira, Trello, Asanaなど:
    • それぞれPower Automateコネクタが提供されている場合が多いです。

 

タスク作成の「トリガー」となるメッセージを特定しよう

どのようなTeamsチャットメッセージからタスクを作成したいのか、その条件を具体的に特定します。

  • 特定のチャットメッセージの「詳細」オプションから手動で起動:
    • メッセージの右側にある「…(その他のオプション)」メニューからPower Automateフローを選択して起動する方法です。ユーザーが意図的にタスク化したい場合に利用します。
  • 特定のキーワードを含むメッセージ:
    • 「#タスク [タスク内容]」や「@Planner [タスク内容]」のように、特定のキーワードやメンションが含まれるメッセージを自動で検知してタスクを作成します。
  • 特定のチャネルへの投稿:
    • 「タスク依頼専用チャネル」などに投稿されたメッセージを全てタスク化する。

 

作成する「タスク情報」を決めよう

作成するタスクにどのような情報を含めたいのかを具体的にリストアップしましょう。

  • タスク名: チャットメッセージの本文や、そこから抽出した内容。
  • 担当者: タスクの担当者。メッセージの送信者、またはメッセージでメンションされたユーザー、あるいは特定のデフォルト担当者。
  • 期限: 報告者に入力させる、あるいはデフォルトで設定、またはメッセージから日付を抽出。
  • 詳細/説明: メッセージの本文全体、またはリンク。
  • 関連チャットへのリンク: タスクの元となったTeamsチャットメッセージへの直接リンク。

 

タスク作成完了の「通知先」を決めよう

タスクが作成されたことを、どこに、誰に対して通知したいのかを決定します。

  • タスクの登録依頼者へ個人チャット: タスクが登録されたことを確認できます。
  • タスクの担当者へ個人チャット: 新しいタスクが割り当てられたことを通知します。
  • 関連チャネルへ投稿: チーム全体でタスク作成を把握できるように、元のチャネルやタスク管理チャネルに通知します。

 

必要な「権限」を確認しよう

Power Automateでフローを作成し、Teamsのメッセージを読み取り、タスク管理ツールにタスクを作成するためには、フローを実行するアカウントが適切な権限を持っている必要があります。

  • Teamsチャネルへのアクセス権: 監視対象のTeamsチャネルに対する「読み取り」権限が必要です。
  • タスク管理ツールへのアクセス権: PlannerやTo Doなど、タスクを作成するための権限が必要です。

 

Power Automateで自動化を設定しよう(基本編)

Power Automateを使ってTeamsチャットメッセージからのタスク作成フローを作成していきます。Teamsチャットメッセージの「…(その他のオプション)」メニューから手動でフローを起動し、そのメッセージからタスクを作成する基本的なフローから見ていきましょう。

フローを作成する場所を決めよう

Power Automateのウェブサイトにアクセスし、左側のメニューから「作成」を選択します。今回は、ユーザーがTeamsメッセージから手動で起動するフローなので、「インスタント クラウド フロー」を選択します。

トリガーを設定しよう

フローのトリガーとは、「いつ」このフローを実行するかを決定するものです。ここでは、Teamsチャットメッセージから手動でフローを起動したいので、トリガーには「メッセージにキーワードが含められたときにフローをトリガーする (Microsoft Teams)」を選択します。

  • 補足: このトリガーはキーワードで検知するように見えますが、「空のまま」にすることで、「メッセージに対するその他のアクション(…)メニュー」から選択して起動するフローとして機能します。

作成例1:TeamsチャットメッセージからMicrosoft Plannerタスクを自動作成

このフローは、Teamsのチャットメッセージの「…(その他のオプション)」メニューから手動で起動すると、そのメッセージの内容をPlannerタスクとして自動作成します。

  1. Power Automateにサインインします。お使いのMicrosoft 365アカウントでPower Automateのウェブサイト(https://make.powerautomate.com/)にアクセスし、サインインします。
  2. 「作成」から「インスタント クラウド フロー」を選択します。左側のナビゲーションペインにある「作成」をクリックし、表示されるオプションの中から「インスタント クラウド フロー」を選択します。
  3. フロー名を指定し、トリガーを選択します。フロー名には「チャットからPlannerタスク作成」など、分かりやすい名前を付けます。「フローをトリガーする方法を選択してください」の検索ボックスに「Teams」と入力し、「メッセージにキーワードが含められたときにフローをトリガーする (Microsoft Teams)」を選択して「作成」をクリックします。
  4. トリガーの詳細を設定します。
    • キーワード: ここは空欄のままにします。これにより、チャットメッセージの「…」メニューにフローが表示されるようになります。
  5. 新しいステップを追加し、タスクの情報を入力させる(オプション)。Plannerタスクの担当者や期限を、フロー起動時にユーザーに入力させたい場合は、以下の入力項目を追加します。
    • 手動でフローをトリガーします (V2)」アクションを追加します。(これはトリガーを「手動でフローをトリガーします」にして、TeamsのPower Automateアプリから起動する場合の例ですが、Teamsメッセージを直接トリガーとする場合、メッセージ内容をそのままタスク名に、メッセージ送信者を担当者にできます。)
    • 補足: メッセージにキーワードが含められたときにフローをトリガーするアクションの場合、ユーザーからの追加入力は受け付けられません。そのため、タスク名や担当者はメッセージ本文から抽出するか、デフォルト設定とします。ここでは、シンプルに「メッセージの本文をタスク名にする」例で進めます。
  6. 新しいステップを追加し、Microsoft Plannerにタスクを作成します。「+ 新しいステップ」をクリックします。検索ボックスに「Planner」と入力し、「タスクを作成する (Microsoft Planner)」を選択します。
    • グループ ID: タスクを作成したいPlannerプランが属するMicrosoft 365グループを選択します(例: 〇〇プロジェクトチーム)。
    • プラン ID: タスクを作成したいPlannerプランを選択します(例: プロジェクトXタスク)。
    • タイトル: @{triggerOutputs()?['body/originalMessage/body/content']} (Teamsメッセージの本文)
    • 割り当て先ユーザー ID (オプション): タスクの担当者を設定します。
      • メッセージの送信者を担当者にする場合: @{triggerOutputs()?['body/from/user/id']}
      • 特定のデフォルト担当者にする場合: 担当者のユーザーIDまたはメールアドレス。
    • バケット ID (オプション): タスクを割り当てるバケット(グループ)を選択します(例: ToDoBacklog)。
    • 説明 (オプション): @{triggerOutputs()?['body/originalMessage/webUrl']} (元のTeamsメッセージへのリンク)
    • 開始日/期日 (オプション): 空欄にするか、デフォルトの日付を設定します。
  7. 新しいステップを追加し、Teamsにタタスク作成完了通知を投稿します。「+ 新しいステップ」をクリックします。検索ボックスに「Teams」と入力し、「チャットまたはチャネルにメッセージを投稿する (Teams)」を選択します。
    • 投稿者:Flow bot」を選択します。
    • 投稿先:チャット」を選択します(タスク作成を依頼したユーザーに通知するため)。
    • 受信者: @{triggerOutputs()?['body/from/user/email']} (メッセージの送信者のメールアドレス)
    • メッセージ:
      @{triggerOutputs()?['body/from/user/displayName']}様
      
      タスクを作成しました!
      
      タスク名: @{triggerOutputs()?['body/originalMessage/body/content']}
      担当者: @{outputs('タスクを作成する')?['assignedToUserIds'][0]?['displayName']} (Plannerで設定した担当者)
      期限: @{formatDateTime(outputs('タスクを作成する')?['dueDateTime'], 'yyyy/MM/dd')}
      
      ▼タスクの詳細はこちら
      [Plannerで確認]@{outputs('タスクを作成する')?['detailsWebUrl']}
      
      • 補足:detailsWebUrlはPlannerタスクへの直接リンクです。
    • 重要度:標準」を選択します。
  8. フローを保存してテストします。画面右上の「保存」をクリックします。保存後、Teamsアプリを開き、任意のチャットメッセージの右側にある「…(その他のオプション)」をクリックします。「その他のアクション」または「Power Automate」を選択し、作成したフロー「チャットからPlannerタスク作成」を探してクリックします。フローを実行すると、Teamsチャットに通知が届き、Plannerにタスクが作成されていることを確認します。

アクションを設定しましょう

トリガーが発動したら、次に「何を」するのかを設定します。これがアクションです。

  • Teamsアクション:
    • メッセージにキーワードが含められたときにフローをトリガーする」: Teamsチャットメッセージの「…」メニューから手動でフローを起動するためのトリガー。キーワードを空にすると、この機能が使えます。
    • チャットまたはチャネルにメッセージを投稿する」: タスク作成完了通知を、依頼者や担当者へ送信します。
  • Planner/To Doアクション:
    • タスクを作成する (Microsoft Planner)」または「タスクを追加する (Microsoft To Do)」: 連携先のタスク管理ツールに新しいタスクを作成します。タスク名、担当者、期限、説明などを設定します。

通知メッセージのカスタマイズをしましょう

タスク作成完了通知のメッセージは、簡潔ながらも必要な情報を伝えるようにカスタマイズしましょう。

  • タスク名: 元のTeamsメッセージの本文 (originalMessage/body/content)
  • 担当者: Planner/To Doで設定された担当者 (assignedToUserIdsなど)
  • 期限: Planner/To Doで設定された期限 (dueDateTimeなど)
  • タスクへのリンク: 作成されたタスクの詳細ページへの直接リンク (detailsWebUrlなど)

これらの情報を適切に配置することで、タスクが正しく作成されたことを明確に伝え、担当者がすぐにアクションを開始できるようにします。


Power Automateで自動化を設定しましょう(応用編)

基本編で作成したフローをさらに便利にするための応用テクニックを見ていきましょう。

メッセージ内のキーワードやメンションからタスク情報を自動抽出する

チャットメッセージの本文から、タスク名、担当者、期限などの情報を自動で抽出し、Plannerタスクに設定します。


作成例2:メッセージ内のキーワードやメンションからPlannerタスク情報を自動抽出

Teamsメッセージの本文を解析してタスク情報を抽出するロジックを追加します。

  1. 基本編のフロー(チャットからPlannerタスク作成)を開きます。
  2. Plannerタスクを作成するステップの前に、新しいステップを追加します。ユーザーが「#タスク [タスク名] @[担当者] 期限:[YYYY/MM/DD]」のように投稿すると仮定します。
    • 「作成」アクション(タスク名を抽出):
      • TaskTitle = substring(triggerOutputs()?['body/originalMessage/body/content'], indexOf(triggerOutputs()?['body/originalMessage/body/content'], '#タスク ') + 6, if(greater(indexOf(triggerOutputs()?['body/originalMessage/body/content'], '@'), 0), indexOf(triggerOutputs()?['body/originalMessage/body/content'], '@') - (indexOf(triggerOutputs()?['body/originalMessage/body/content'], '#タスク ') + 6), length(triggerOutputs()?['body/originalMessage/body/content']) - (indexOf(triggerOutputs()?['body/originalMessage/body/content'], '#タスク ') + 6)))
      • 補足: これは非常に複雑な式であり、メッセージの形式が厳密でないと機能しません。より堅牢にするには正規表現やAzure Functions (Python/JavaScript) の利用が推奨されます。
    • 「ユーザープロファイルの取得 (V2) (Azure AD)」アクション(メンションされた担当者を取得):
      • トリガーのmentionedUsersを使って、メンションされたユーザーのメールアドレスを取得します。メンションがない場合はメッセージ送信者をデフォルトの担当者とします。
      • first(triggerOutputs()?['body/originalMessage/mentions'])?['mentioned']?['email'] (メンションされた最初のユーザーのメールアドレス)
    • 「作成」アクション(期限を抽出):
      • メッセージ本文から期限:の後の日付を抽出する複雑な式(正規表現など)を使用します。
  3. 「タスクを作成する」アクションの各項目を、上記で抽出した動的なコンテンツにマッピングします。
    • タイトル: outputs('TaskTitle')
    • 割り当て先ユーザー ID: メンションされたユーザーのメールアドレス、またはメッセージ送信者のメールアドレス。
    • 期日: 抽出した期限。
  4. フローを保存してテストします。指定したキーワードやメンション、期限形式を含むメッセージをTeamsに投稿し、Plannerタスクが正しく自動作成され、情報が埋め込まれていることを確認します。

タスク作成完了時に、元のチャットにアダプティブカードで通知する(高度)

タスクが作成されたことを、元のチャットのスレッドにアダプティブカードで通知します。カードにはタスク名、担当者、期限、そして「タスクを開く」「完了としてマークする」などのボタンを埋め込むことで、チャットを離れずにタスクを操作できるようにします。


作成例3:タスク作成完了時に、元のチャットにアダプティブカードで通知

この機能は、アダプティブカードのJSON構築と、Teamsの「応答を待機する」アクションの利用が必要です。

  1. 基本編のフロー(チャットからPlannerタスク作成)を開きます。
  2. Teamsへのメッセージ投稿アクションを「チャットまたはチャネルにアダプティブ カードを投稿して応答を待機する (Teams)」に変更します。
    • 投稿先:チャネル
    • チーム: トリガーで指定したTeamsのチーム
    • チャネル: トリガーで指定したチャネル
    • 返信のメッセージ ID: @{triggerOutputs()?['body/originalMessage/id']} (元のメッセージのスレッドに返信)
    • メッセージ: アダプティブカードのJSONをここに貼り付けます。
    • アダプティブカードのJSON例:

      JSON

      {
          "type": "AdaptiveCard",
          "body": [
              {
                  "type": "TextBlock",
                  "text": "✅ タスクを作成しました!",
                  "wrap": true,
                  "size": "Medium",
                  "weight": "Bolder"
              },
              {
                  "type": "FactSet",
                  "facts": [
                      {
                          "title": "タスク名:",
                          "value": "@{triggerOutputs()?['body/originalMessage/body/content']}"
                      },
                      {
                          "title": "担当者:",
                          "value": "@{outputs('タスクを作成する')?['assignedToUserIds'][0]?['displayName']}"
                      },
                      {
                          "title": "期限:",
                          "value": "@{formatDateTime(outputs('タスクを作成する')?['dueDateTime'], 'yyyy/MM/dd')}"
                      }
                  ]
              }
          ],
          "actions": [
              {
                  "type": "Action.OpenUrl",
                  "title": "タスクを開く",
                  "url": "@{outputs('タスクを作成する')?['detailsWebUrl']}"
              },
              {
                  "type": "Action.Submit",
                  "title": "完了としてマーク",
                  "data": {
                      "action": "mark_complete",
                      "taskId": "@{outputs('タスクを作成する')?['id']}"
                  }
              }
          ],
          "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
          "version": "1.4"
      }
      
    • 補足: アダプティブカードのデザインは https://adaptivecards.io/designer/ で作成・テストできます。
  3. 新しいステップを追加し、アダプティブカードからの応答を処理します。
    • アダプティブ カードへの応答の待機」アクションが自動で追加されます。
    • 「条件」アクション: ユーザーが「完了としてマーク」ボタンを押したかどうかをチェックします(triggerBody()['data']['action']mark_completeと等しいか)。
  4. 「はい」のパス(「完了としてマーク」ボタンを押された場合)に、Plannerタスクを更新するアクションを追加します。
    • 「タスクを更新する (Microsoft Planner)」アクション:
      • タスク ID: アダプティブカードから送られたtaskIdtriggerBody()['data']['taskId']
      • ステータス:完了済み」に設定。
    • Teamsにメッセージを投稿する: 元のチャットに「タスクが完了しました!」と通知。

メリット: ユーザーはチャットを離れることなく、タスク作成の確認と、その後のタスク操作(完了マーク)ができるため、UXが大幅に向上し、タスク管理がよりスムーズになります。


エラー対策とトラブルシューティングを確認しよう

Power Automateフローは、確実に動作することが求められます。特にタスク作成は、作業の登録漏れを防ぐため、信頼性が非常に重要です。よくあるエラーとその対策、そしてトラブルシューティングのポイントをご紹介します。

権限不足のエラーが出た場合

「アクセスが拒否されました」といったエラーメッセージが表示される場合、Power AutomateがTeamsのメッセージを読み取ったり、Plannerにタスクを作成したりするための権限が不足している可能性があります。

対策: フローを実行するアカウントが、監視対象のTeamsチャネルに対する「読み取り」権限、Plannerプランへの「書き込み」権限、Teamsチャットへのメッセージ投稿権限を持っていることを確認してください。

タスク管理ツールとの連携エラーが出た場合

PlannerやTo Doへのタスク作成が失敗することがあります。

対策

  • グループID/プランIDの確認: Plannerの場合、指定したグループIDやプランIDが正しいか確認しましょう。
  • 担当者の存在確認: 割り当て先ユーザーIDに指定したユーザーが、Plannerプランのメンバーであるか、または存在するか確認しましょう。
  • API制限: 短時間に大量のタスクを作成しようとすると、API制限に引っかかる場合があります。

意図しないメッセージに反応してしまう場合

トリガーのキーワード設定が広すぎると、関係ないメッセージにもフローが反応してしまうことがあります。

対策

  • キーワードの厳密化: 「#タスク」のようにユニークなキーワードを設定し、メッセージの冒頭に配置するなど、入力ルールを明確にしましょう。
  • 特定のチャネルに限定: タスク依頼専用のTeamsチャネルを作成し、そのチャネルのみを監視対象にすることで、誤作動を防げます。
  • 条件分岐で絞り込み: トリガーの直後に「条件」アクションを追加し、メッセージの本文をより詳細にチェックするロジックを組み込みましょう。

フローの履歴を確認しよう

エラーが発生した場合や、フローが意図通りに動作しない場合は、Power Automateのフロー実行履歴を確認することが最も重要です。

手順

  1. Power Automateの「マイ フロー」から、該当のフローを選択します。
  2. 実行履歴」タブをクリックします。
  3. 失敗した実行、または成功したものの動作が怪しい実行を選択すると、フローの各ステップがどのように実行されたか、どこでエラーが発生したか、そして入力/出力データやエラーメッセージの詳細を確認できます。

ポイント: 各アクションの「入力」と「出力」を確認することで、どのデータがどのように処理され、どこで問題が発生したのかを詳細に把握できます。特に「タスクを作成する」アクションの入力(タスク名、担当者、期限など)が正しく構成されているかを確認しましょう。


セキュリティとアクセス管理を確認しましょう

タスク作成の自動化は、チームの作業に関わる重要な情報です。適切なセキュリティとアクセス管理を行いましょう。

Teamsチャネルの権限設定を適切にしましょう

タスク作成のトリガーとなるTeamsチャネルのメンバーシップも適切に管理しましょう。

  • プライベートチャネルの利用: 機密性の高いタスク依頼を行う場合は、プライベートチャネルとし、必要なメンバーのみがアクセスできるようにしましょう。
  • タスク依頼専用チャネル: タスク依頼専用のチャネルを設けることで、そのチャネルの権限設定をタスク管理のニーズに合わせやすくなります。

タスク管理ツール(Plannerなど)の権限設定を適切にしましょう

作成されたタスクが保存されるPlannerやTo Doの権限も厳密に管理しましょう。

  • Plannerの場合: PlannerはMicrosoft 365グループに紐づくため、グループのメンバーシップがPlannerプランへのアクセス権を決定します。適切なメンバーのみをグループに追加するようにしましょう。
  • To Doの場合: 個人タスクはプライベートですが、共有リストの場合は共有範囲を適切に設定しましょう。

フローの作成と実行権限を管理しましょう

この自動化フローは、チームのタスク管理に直接影響を与えるため、不用意に作成・変更・実行できないように、適切な権限管理が必要です。

  • フロー作成者の制限: 重要なフローの作成権限は、チームリーダーやプロジェクトマネージャー、特定のシステム管理者にのみ付与することを検討しましょう。
  • 共有の最小化: フローを他のユーザーと共有する際は、実行のみの権限に限定し、共同所有者としての共有は慎重に検討しましょう。共同所有者はフローを編集できるため、意図しない変更のリスクがあります。
  • サービスアカウントの利用: フローの実行アカウントが個人アカウントではなく、専用のサービスアカウントであれば、個人の人事異動や退職の影響を受けにくく、権限管理も一元化しやすいでしょう。

まとめ

Power AutomateとTeams、そしてタスク管理ツールを組み合わせることで、特定のチャットメッセージからのタスク作成を自動化する方法について、基本的な設定から応用、エラー対策、そしてセキュリティとアクセス管理まで、詳細に解説してきました。

この自動作成システムは、タスクの登録漏れを防ぎ、管理の手間を削減し、チーム内のタスク状況を「見える化」するための強力なツールとなるでしょう。結果として、コミュニケーションからアクションへの移行がスムーズになり、チームの生産性向上に大きく貢献できます。