脱・複雑フロー！Excel Online Scriptsで実現する柔軟なTeamsタスク管理（１）

# 前回記事の訂正
https://qiita.com/EasyCording/items/08d3ed74269431b2ddee

![b1gh9vhv.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/212914/3d9f65bc-02d1-44d1-80b9-82589253da3a.png)




# **はじめに**

こんにちは！日々の業務効率化に情熱を燃やす皆さん、Microsoft Teamsをさらに便利にする方法を模索されていることと思います。

さて、以前の記事「[Microsoft TeamsとOutlookタスク連携：3つのアプローチ比較検討](https://qiita.com/EasyCording/items/08d3ed74269431b2ddee)」では、OutlookタスクとTeamsを連携させるためのPowerShell、Power Automate、VBA + PowerShellハイブリッドという3つのアプローチについて比較検討しました。それぞれに利点はあるものの、特にアダプティブカードの動的な生成・管理や、複雑な条件分岐の実装、そしてメンテナンス性に課題を感じることがありました。

そこで今回は、試行錯誤の末に見出した　**「Excel Online Scripts」を中心とした新しいアプローチ** について、その可能性と具体的な実装方法、そして今後の展望について詳しくご紹介したいと思います。

# **1. なぜExcel Online Scriptsなのか？前回アプローチの課題と新アプローチの優位性**

前回検討したアプローチでは、以下のような課題が浮き彫りになりました。

**前回の課題:**

*   **Power Automateでの複雑なカードJSON生成の難しさ:** 条件によって表示内容を変えたり、多くのデータを埋め込んだりする場合、JSONを動的に組み立てるロジックが非常に複雑になりがちでした。
*   **条件分岐やデータ処理ロジックの肥大化:** Power Automateのフローが長大になり、可読性やメンテナンス性が低下する懸念がありました。
*   **アダプティブカードのトライ＆エラーに伴う開発コスト:** カードのデザインや挙動を調整するたびに、Power Automateフローの修正とテストが必要となり、手間がかかりました。
*   **ステートフルな対話処理の実装複雑性:** ユーザーのアクションに応じて状態を保持し、次の応答を変化させるような処理の実装が煩雑でした。
*   **PowerShellの課題:** 認証情報の管理や、スクリプトを定期実行するための環境設定（タスクスケジューラなど）が別途必要となり、運用負荷が高まる可能性がありました。

これらの課題を解決する糸口として注目したのが、**Excel Online Scripts**です。一見すると「なぜExcel？」と思われるかもしれませんが、このアプローチには以下のような大きな優位点があります。

# **Excel Online Scriptsアプローチの優位点:**

*   **データとロジックの統合管理:** タスクデータ、応答パターン、カードテンプレート、そしてそれらを処理するロジック（スクリプト）をすべて**単一のExcelファイル内に集約**できます。データソースと処理ロジックが一体化しているため、管理が非常にシンプルになります。
*   **TypeScript/JavaScriptの柔軟性:** Excel Online ScriptsはTypeScript（実質JavaScript）で記述できます。これにより、複雑なJSONの動的生成、高度なデータ処理、条件分岐などを**プログラミング言語の柔軟性を活かして効率的に実装**できます。Power AutomateのGUIベースの操作よりも複雑なロジックを記述しやすい場面が多くあります。
*   **シンプルなPower Automateフロー:** 複雑な処理の大部分をExcel Scriptsに委譲するため、Power Automateのフローは**Teamsからのトリガーを受け取り、Excel Scriptsを実行し、結果をTeamsに返す**という、非常にシンプルなコネクタとしての役割に徹することができます。
*   **メンテナンス性の向上:** データ構造の変更や処理ロジックの修正が必要な場合も、基本的にはExcelファイルとその中のスクリプトを編集するだけで済みます。変更箇所が限定されるため、**メンテナンスが容易**になります。
*   **非開発者による拡張可能性:** Excelは多くのビジネスユーザーにとって馴染み深いツールです。基本的なデータ（タスクリストや応答メッセージなど）の更新であれば、**プログラミング知識がない担当者でも容易に対応できる可能性**があります。

# **2. Excel Online Scriptsを活用したアーキテクチャ**

この新しいアプローチのシステム構成は以下のようになります。

*   **データ層: Excel Online スプレッドシート**
    *   タスクリスト（タスク名、担当者、期日、ステータスなど）の管理
    *   ユーザーからのメッセージに対する応答パターンの定義
    *   アダプティブカードのテンプレート（基本構造）の管理
    *   タスク操作（開始、完了など）の作業ログ記録

*   **ロジック層: Excel Online Scripts (TypeScript)**
    *   Teamsから受け取ったユーザーメッセージ（コマンドやボタン操作）の解析
    *   Excel上のタスクデータに対するCRUD（作成、読み取り、更新、削除）操作
    *   状況に応じたアダプティブカードのJSONデータの動的な生成

*   **連携層: Power Automate**
    *   Teamsチャネルやチャットへの投稿をトリガーとしてフローを開始
    *   ユーザーメッセージや操作内容をExcel Scriptsにパラメータとして渡す
    *   Excel Scriptsを呼び出し、実行
    *   Excel Scriptsから返却されたアダプティブカードのJSONデータをTeamsに投稿

*   **UI層: Microsoft Teams + アダプティブカード**
    *   ユーザーがタスクを確認したり、操作したりするためのインターフェース
    *   ボタンクリックなどのアクションイベントをPower Automateに送信

この構成により、Power Automateはあくまで「橋渡し役」に徹し、**実質的な頭脳（ロジック）と心臓部（データ）はExcel Onlineとそのスクリプトが担う**ことになります。

# **3. 開発の現状と課題**

現在、このアーキテクチャに基づいてプロトタイプ開発を進めており、以下のような機能は実現できています。

**現状の成果:**

*   Teams上で特定のコマンド（例: `/tasks show`) を入力すると、Excel上の自分のタスク一覧がアダプティブカードで表示される。
*   カード上のボタン（開始、一時停止、完了など）をクリックすると、Excel上のタスクステータスが更新され、作業ログが記録される。
*   タスク完了時には、作業時間（開始から完了までの時間）が自動で記録・集計される。
*   簡単な応答（例: 「タスクを更新しました」）を返すシンプルな会話型インターフェース。

基本的なタスク管理機能は動作しており、Excel Scriptsによる動的なカード生成の有効性を確認できています。

しかし、実用化に向けてはまだいくつかの課題が残っています。

# **残る課題:**

*   **生成AIエージェント機能の実装場所:** これが最大の課題です。Excel Online Scriptsの環境はセキュリティ上の理由から、**外部API（例: Azure OpenAI Service）を直接呼び出すことができません**。ユーザーの曖昧な指示（例: 「今日の優先タスクを要約して」）を解釈したり、タスクの提案をしたりする生成AI機能をどのように組み込むかが大きな検討事項です。
*   **リアルタイム通知の実装:** タスクの期限が近づいた際のリマインダーなど、**システム側から能動的にユーザーへ通知する機能（プッシュ通知）**をどう実現するか。Power Automateのスケジュール実行と組み合わせる必要がありそうです。
*   **Teams認証/API利用の最適化:** 特に多数のユーザーが利用する場合や、プライベートチャットでの利用を想定した場合、Teams APIの呼び出し制限や認証情報の管理について、より効率的でセキュアな方法を検討する必要があります。

# **4. 今後の展望**

Excel Online Scriptsを中心としたTeamsタスク管理アプローチは、特に**データとロジックが密接に関連する業務アプリケーション**において、そのシンプルさと柔軟性から大きな可能性を秘めていると感じています。

今後は、以下の点を中心に開発と検証を進めていく予定です。

*   **生成AI連携の具体化:** 上記の選択肢を比較検討し、最適な実装パターンを確立する。まずはPower Automate経由での実装を試みる。
*   **Excel Scriptsの制約回避策:** スクリプトの実行時間制限や呼び出し回数制限などを考慮し、大量データや複雑な処理に対応できるアーキテクチャへと洗練させる。
*   **UI/UXの改善:** アダプティブカードのデザイン最適化、モバイルデバイスでの表示対応などを進める。
*   **データ分析・可視化機能:** Excelに蓄積されたタスクデータや作業ログを活用し、個人の生産性分析やチームのタスク進捗状況を可視化する機能を追加する。

# **まとめ**

Microsoft Teams上でアダプティブカードを活用したインタラクティブなタスク管理を実現する方法として、今回は「Excel Online Scripts」を中心としたアプローチをご紹介しました。

Power Automateだけでは複雑になりがちな処理を、使い慣れたExcelと柔軟なTypeScript/JavaScriptで記述できるこの方法は、**開発効率、メンテナンス性、そして非開発者によるアクセス性のバランス**に優れています。

まだ課題はありますが、特に生成AIとの連携が実現できれば、単なるタスク管理ツールを超え、日々の業務をサポートする**インテリジェントな業務アシスタント**へと進化させられる可能性を秘めています。

次回は、生成AI機能の統合について、より具体的な実装方法や、このシステムを実際にチームで導入してみた際の効果測定などについてご報告できればと考えています。

この記事が、皆さんのTeams活用や業務改善のヒントになれば幸いです。



**参考情報:**

*   [Microsoft Teams documentation](https://learn.microsoft.com/ja-jp/MicrosoftTeams/)
*   [Office Scripts in Excel documentation](https://learn.microsoft.com/ja-jp/office/dev/scripts/develop/scripting-fundamentals)
*   [Adaptive Cards documentation](https://learn.microsoft.com/ja-jp/adaptive-cards/)