記事公開日
【誰でもできる】Power AutomateでTeamsにタスクリマインド自動化してみた

こんにちは!DXソリューション営業本部の大和矢です。
「〇〇さん、あのタスクの期限っていつでしたっけ?」
「今日の期限のタスク、みんな大丈夫かな…?」
チームで仕事をしていると、こちらのようにタスクの期限を確認したり、リマインドしたりする場面、よくありますよね。
筆者のチームでは、共有のExcelでタスク管理をしています。
そして、筆者はたまに、期限が近いタスクの存在に気が付くと、Teamsで「〇〇の件、本日までですよー!」と呼びかけていました。
「このタスクリマインド、自動化したらいいじゃん!!」
そんな思いつきから、今回はMicrosoft Power Automateを使って、SharePoint上のExcelから情報を取得し、期限当日のタスクをTeamsに自動で通知する仕組みを作ってみました。
この記事を読めば、プログラミング不要で、面倒なリマインド業務から解放されます。
ぜひ、あなたのチームでも試してみてください!
Power AutomateのTeams投稿アクションについては、以下のブログで紹介しておりますので、是非ご覧ください。
また、今回のテーマに似た記事もあったので、興味がございましたら、こちらもご覧ください。
自動化の心臓部!タスク管理用のExcelを準備しよう
Power Automateで自動化の仕組み(フロー)を作る前に、まずは元データとなるタスク管理用のExcelファイルを準備します。
「ただのExcelリストでしょ?」と思うかもしれませんが、Power Automateが正しくデータを読み取れるようにするための、3つの重要なポイントがあります。
順番に見ていきましょう。
STEP1:SharePoint (Teams) にExcelファイルを配置する
まず、リマインドを通知したいTeamsのチャネルを開き、「ファイル」タブに移動します。
そこに、タスク管理用として新しいExcelファイルを作成・配置してください。
なぜここに置くの?
Power Automateはクラウド上で動くサービスです。
そのため、自分のPCの中(ローカル)にあるファイルは直接読み書きできません。
いつでもアクセスできるよう、同じクラウド上であるSharePoint(Teamsのファイルタブの実体)にファイルを置くのが基本となります。
クラウド上に無いと、チームでもファイルを共有できませんしね。
STEP2:タスクリストを作成し、「テーブル」に変換する
次に、配置したExcelファイルを開き、タスクリストを作成します。
まず、タスク名、期限日 といったヘッダー(見出し行)を作り、その下に実際のタスクをいくつか入力します。
入力したデータ全体(ヘッダー行を含む)をマウスでドラッグして範囲選択します。
そのまま「挿入」タブから「テーブル」をクリックします。
ポップアップが表示されたら、「先頭行をテーブルの見出しとして使用する」にチェックが入っていることを確認し、「OK」をクリックします。
これで、ただの表がPower Automateで扱える「テーブル」に変換されました。
なぜ「テーブル化」?
「テーブル化」とは、単なるセルの集まりに「これは一つの意味あるデータのかたまりですよ」と名前を付けてあげるような機能です。
これを行うことで、Power Automateは「この表の中から、一行ずつデータを取り出す」といった操作が可能になります。
この後のフロー作成で必須となる、非常に重要な作業です。
STEP3:Power Automateが読みやすいように書式を整える
最後に、Power Automateがデータを誤解しないように、テーブルの書式を整えておきましょう。
1.日付の形式を設定する
期限日 の列全体を選択し、「ホーム」タブの書式メニューから「短い日付形式」または「長い日付形式」を選びます。
これで、この列のデータが「日付」として正しく認識されるようになります。
2.テーブルに名前を付ける
テーブルの中のどこか一つのセルを選択した状態で、「テーブルデザイン」タブを開きます。
左上にある「テーブル名」を、分かりやすい名前に変更しましょう(例: タスクテーブル)。
Point!
ここで設定した「テーブル名」は、後のPower Automateのフロー設定画面で選択することになります。
自分が分かりやすい名前を付けておきましょう。
お疲れ様でした!
以上で、タスクテーブルの準備は完了です。
次の章から、いよいよPower Automateのフローを作成していきます。
Power Automateで自動リマインドフローを実装する
Excelの準備が整いましたので、いよいよPower Automateでリマインドを自動化する「フロー」を作成していきます。
一つ一つのステップを丁寧に解説しますので、一緒に進めていきましょう。
STEP1:フローのトリガーの設定
まずはPower Automateのホーム画面から「作成」>「スケジュール済みクラウドフロー」を選択します。
今回は「毎日決まった時間に自動で実行したい」ので、このスケジュール済みフローを使います。
フローの作成画面が表示されたら、まずはトリガー(フローが起動するきっかけ)を設定しましょう。
1.フロー名:
「Task_Reminder」など、分かりやすい名前を付けます。
2.開始:
- 間隔・頻度:1 日
- タイムゾーン:(UTC+09:00) 大阪、札幌、東京
- これらの時間に:任意の時間(毎日何時にリマインドするか)
これで、「毎日〇〇時に自動で処理を開始する」という設定ができました。
STEP2:Excelからタスク情報を取得する
次に、先ほど準備したExcelファイルからタスクの一覧をすべて取得するアクションを追加します。
「表内に存在する行を一覧表示」アクションを追加し、各項目を以下のように設定します。
設定項目 | 入力値 |
---|---|
Location | リマインドしたいTeamsチームおよびチャネルを選択 |
Document Library | ドキュメント |
File | 準備したExcelファイルのパス |
Table | 準備したタスクテーブルのテーブル名 |
これで、フローが実行されるたびに、Excelのタスクリストをすべて読み込む準備ができました。
STEP3:タスクを格納する配列を作成する
期限日が今日のタスクを格納しておく配列、分かりやすく言うと「箱」のようなものを用意します。
名前は「タスクリスト」とし、タイプは「配列」としておきます。
STEP4:取得したタスクを1件ずつチェックする
Excelから取得したタスクリスト(行の集まり)を、1行ずつ取り出して「期限日が今日かどうか?」をチェックする処理を追加します。
コントロール「それぞれに適用する (Apply to each)」を追加し、動的なコンテンツから「value」(「表内に存在する行を一覧表示」で取得した行のリスト)を選択します。
「それぞれに適用する」の枠内で、コントロール「条件」を追加します。
ここで、「期限日が今日と等しいか」を判定します。左辺と右辺に、それぞれ以下の「式」を入力します。
設定項目 | 入力値 |
---|---|
左辺(期限日) | formatDateTime(addDays('1899-12-30', int(items('それぞれに適用する')?['期限日'])), 'yyyy-MM-dd') |
真ん中 | 次の値に等しい |
右辺(今日の日付) | formatDateTime(convertTimeZone(utcNow(), 'UTC', 'Tokyo Standard Time'), 'yyyy-MM-dd') |
式の解説
少し難しく見えますが、やっていることはシンプルです。
- 左辺の式:
Excelから日付を取得すると、まれに「45937」のような数字(シリアル値)で読み込まれることがあります。
このままだと日付として比較できないため、この数字を日付の形式に変換するのが左辺の式の役割です。
addDays('1899-12-30', ...) の部分は、その変換を行うためのお決まりの書き方(定型文)だと思ってください。 - 右辺の式:
フローが実行された瞬間(utcNow())の日付を、日本時間に直し、同じく yyyy-MM-dd 形式に整えています。
このように形式を揃えることで、日付を正しく比較できます。
STEP5:期限が今日のタスクだけをリストにまとめる
条件分岐で「はい (True)」になった場合(=期限が今日だった場合)の処理を作っていきます。
見つかったタスクを、後でまとめて通知するために、STEP3で作成したタスクリストに入れる処理です。
「配列変数に追加」を追加し、以下のように設定します。
設定項目 | 入力値 |
---|---|
Name | タスクリスト(先ほど初期化した配列) |
Value | 動的なコンテンツから「タスク名」を選択し、 『・@{items('それぞれに適用する')?['タスク名']}』 のように入力します。(先頭「・」は見やすくするため) |
これで、ループ処理が終わる頃には、TaskList という変数の中に、今日が期限のタスク名だけがリストアップされている状態になります。
STEP6:今日のタスクがあればTeamsに通知する
最後の仕上げです。今日のタスクが1件でも存在する場合にのみ、Teamsに通知を投稿します。
「それぞれに適用する」の外(一番下)に、コントロール「条件」を追加し、以下のように「今日のタスクリスト(変数)が空っぽではない」という条件を設定します。
設定項目 | 入力値 |
---|---|
左辺(式) | length(variables('タスクリスト')) |
真ん中 | 次の値より大きい |
右辺 | 0 |
なぜもう一度条件分岐?
もし今日が期限のタスクが0件だった場合、何も通知したくありませんよね。
この条件分岐を入れることで、「タスクリストの中身が1件以上ある場合だけ通知する」という賢いフローになります。
「はい」の枠内に、Teamsへ投稿するアクションを追加していきます。
まずは、「結合 (Join)」アクションを追加します。
この処理は、複数のタスクがある際に、一つにまとめて、Teamsの返信で使えるようにするという処理です。
以下のように設定します。
設定項目 | 入力値 |
---|---|
元 | タスクリスト(先ほど作成したタスク配列) |
次と結合する | 改行など |
上記処理により、今日のタスクリストを見やすいように改行で連結します。
(筆者は「次と結合する」を設定し忘れたので、投稿の際にタスクリストが少々見にくくなっております。)
次に、「チャネル内のメッセージで応答します」を追加し、以下のように設定していきます。
設定項目 | 入力値 |
---|---|
Post as | Flow bot |
Post in | チャネル |
Message ID (※1) | 表の下で別途説明 |
Team | リマインドを投稿するチーム |
Channel | リマインドを投稿するチャネル |
Message | 本日が期限のタスクは以下の通りです。 body('結合')(→1つ前の処理で作成したタスクリストを結合したもの) |
(※)MessageIDについて
TeamsのMessage IDは、特定の投稿(メッセージ)に割り当てられた、世界で一つだけのユニークな識別番号です。
住所のように、膨大な数の投稿の中から「この投稿です!」と一つを正確に指し示すために使われます。
Message IDの取得方法
Message IDは、投稿のリンク(URL)から簡単に取得できます。
今回は、タスクリマインドを追加していきたい投稿のリンクをコピーしていきます。
返信先にしたいTeamsの投稿の右上にある「...」(その他のオプション)をクリックし、「リンクをコピー」を選択します。
コピーしたリンクをメモ帳などに貼り付けます。リンクは以下のような構成になっています。
https://teams.microsoft.com/l/message/19%3A...%40thread.tacv2/1701111222333?tenantId=...
この中で、末尾の数字の羅列 ?tenantId= の直前にある「1701111222333」のような長い数字の文字列がMessage IDです。
取得したこのMessage IDを、Power Automateのアクションの「Message ID」の欄に貼り付ければ設定完了です。
以上で、すべてのフローが完成です!お疲れ様でした。
最後にフローを保存し、テスト実行して意図通りにTeamsに通知が届けば成功です。
実行結果を確認!通知は無事に届くか?
フローが完成しましたので、いよいよ動作確認です。
今回は、フローのトリガー(スケジュール)をフロー作成時に近い2025/10/7(15:30) に設定しました。
そして、ドキドキしながらその時刻を待っていると…
Teamsから通知音が!
設定したチャネルを確認してみると、ご覧の通り、リマインドメッセージが無事に投稿されていました。
【Tips】すぐに動作確認したい場合は?
今回は実際にスケジュール時刻まで待ちましたが、「すぐに動作を確認したい!」という場合も多いと思います。
そんな時は、フロー編集画面の右上にある「テスト」機能が便利です。
「手動」でテストを実行すれば、スケジュール時刻に関係なく、いつでも即座にフローを動かして結果を確認することができますよ。
これで、タスクリマインドフローは完成です!
明日からは、このフローがあなたに代わってタスクを確認し、チームに知らせてくれます。
まとめ
今回は、Power Automateを使い、SharePoint上のExcelリストを元に、期限当日のタスクをTeamsへ自動でリマインドする仕組みを作成しました。
このフローを一度作成すれば、以下のメリットが生まれます。
- 面倒なリマインド作業の手間がゼロになる
- ヒューマンエラーによるタスクの抜け漏れを防げる
- チーム全員がタスクを意識しやすくなる
何より、プログラミングの知識がなくても、画面操作だけでこれだけの自動化が実現できるのがPower Automateの大きな魅力です。
本記事が、皆さんの日々の業務を少しでも楽にするきっかけになれば幸いです。
最後までお読みいただき、ありがとうございました。
筆者は普段、QESの技術ブログにて、AI関連の記事を公開しているので、興味がございましたら、ぜひご覧ください。
QESのPower Platform サポート&アプリカタログサービス では、キャンバスアプリやクラウドフローの実装に対する技術サポートから、ガバナンス管理・ガイドライン策定のご支援までを含めた、幅広いメニューをご提供しています。
また、「AIチャットボット構築サービス」をはじめとして、各AIサービスを利用したシステム導入のお手伝いをしております。それ以外でも QESでは様々なアプリケーションの開発・導入を行っております。提供するサービス・ソリューションにつきましては こちら に掲載しております。
まずはお気軽にお問い合わせください。
※このブログで参照されている、Microsoft、その他のマイクロソフト製品およびサービスは、米国およびその他の国におけるマイクロソフトの商標または登録商標です。