Microsoft Power Automate(旧:Microsoft Flow)を仕事で使用したところ
簡単な定形処理を自動実行させるのに便利でした。
Power Automate、Teams、Excelを連携させて
Teamsに投稿されたメッセージをPower Automateを使ってExcelに記録する処理を
作成してみます。
動作のイメージ
例として残業の業務記録メッセージを個々人がTeamsに投稿し、
Teamsに格納したExcelファイルに投稿内容を自動的に残すという形の処理を作成してみます。
1.Teamsにメッセージを投稿する
2.Teamsに格納したExcelに投稿者、投稿日、残業目的、残業時間が自動的に記録される
Teamsにテスト用チームを作成
Teamsにテスト用チームを作成します。
Teamsのチームを選択すると左下に「チームに参加、またはチームを作成」が表示されるので
クリックします。
チームを作成をクリックします。
初めからチームを作成するをクリックします。
プライベートをクリックします。
チーム名をTestに変更して作成をクリックします。
Testにメンバーを追加画面が表示されたらスキップをクリックします。
Testチームが作成されました。
記録Excelファイルの用意
Excelファイルを自分のPC上で新規作成し、ホームタブを選択します。
セルのA1:D1を選択し、テーブルとして書式設定から好きなデザインのテーブルを選択します。
例として白テーブルスタイル(淡色)8を選択しています。
テーブルスタイルを選択すると「テーブルとして書式設定」が表示されるので、OKを押します。
テーブルが作成されるので、それぞれのヘッダーの名前を変更します。
A列:名前、B列:日付、C列:残業目的、D列:時間
テーブルを選択するとテーブルデザインが表示されるので、テーブル名を残業記録に変更します。
Teamsの一般チャネルのファイルを選択し、作成したExcelファイルをTeamsにアップロードします。
Power Automateの作成
トリガーの作成
Power Automateの作成画面で作成をクリックし、自動フローをクリックします。
フロー名を残業記録と入力し、フローのトリガー検索画面でteamsと入力します。
チャンネルに新しいメッセージが追加されたときを選択し、作成をクリックします。
Power Automateの編集画面が表示され、トリガーに選択した項目が表示されます。
チーム名を最初に作成したテスト用チームに変更し、チャネルをGeneralに変更します。
チーム | Test(リストから選択) |
チャネル | General(リストから選択) |
アクションの作成
新しいステップをクリックします。
検索欄にhtmlと入力し、Html to textを選択します。
Html to textのContent部分をクリックすると右下に入力画面が表示されるので
メッセージ本文コンテンツをクリックします。
新しいステップをクリックします。
検索欄に変数と入力し、変数を初期化するを選択します。
アクションが追加されるので、各項目を下記のように設定します。
名前 | 残業目的タイトル削除 | ||
種類 | 文字列 | ||
値 |
|
新しいステップを追加します。
検索欄に変数と入力し、変数を初期化するを選択します。
残業目的と残業時間がくっついてしまっていて、このままだと処理ができないので
残業目的と残業時間を「残業時間:」という文字列で分割して、新しい変数に格納します。
名前 | 残業項目配列 | ||
種類 | アレイ | ||
値 |
|
新しいステップを追加します。
検索欄に変数と入力し、変数を初期化するを選択します。
残業項目配列の1番目に格納されている要素(残業の目的)を変数に格納します。
名前 | 残業目的処理前 | ||
種類 | 文字列 | ||
値 |
|
残業目的の末尾に改行コードが入っているため、削除します。
改行コードの削除は以下を参考にさせていただきました。

新しいステップを追加し、変数を初期化するを選択して下記のように入力します。
名前 | 改行コード |
種類 | 文字列 |
値 | (Enterを押して改行) |
新しいステップを追加し、変数を初期化するを選択して下記のように入力します。
repleace関数を利用して改行コードを削除しています。
名前 | 残業目的処理前 | ||
種類 | 文字列 | ||
値 |
|
残業項目配列の2番目に格納されている残業時間を変数に格納します。
変数を初期化するを選択し、下記のように入力します。
名前 | 残業時間 | ||
種類 | 文字列 | ||
値 |
|
Teamsに投稿された日付を変数に格納します。
変数を初期化するを選択し、下記のように入力します。
名前 | 投稿日 | ||
種類 | 文字列 | ||
値 |
|
Teamsの投稿者を変数に格納します。
変数を初期化するを選択し、以下のように設定します。
値欄をクリックすると入力フォームが表示されるので、入力フォームから値を入力します。
名前 | 投稿者 |
種類 | 文字列 |
値 | メッセージ from ユーザー displayName(フォームより選択) |
新しいステップを追加し、検索欄にExcelと入力します。
Excel Online(Business)を選択し、表に行を追加をクリックします。
新しいステップが追加されるので、各項目を設定します。
場所 | Group-Test(リストから選択) |
ドキュメント | ドキュメント(リストから選択) |
ファイル | /General/残業.xlsx(リストから選択) |
テーブル | 残業記録(リストから選択) |
名前 | 投稿者(フォームから入力) |
日付 | 投稿日(フォームから入力) |
残業目的 | 残業目的(フォームから入力) |
時間 | 残業時間(フォームから入力) |
Power Automate画面右上の保存をクリックします。
作成したフローのテスト
Power Automate画面右上のテストをクリックします。
フローのテスト画面が表示されます。
トリガーアクションを実行するを選択し、保存&テストをクリックします。
Teamsにメッセージを投稿します。
Power Automateの画面上部に、ご利用のフローが正常に実行されましたと表示されます。
Teamsに保存したExcelファイルを確認すると、Teamsに投稿したメッセージが
Excelに反映されています。
再度テストを行いたい場合は、フローのテスト画面を表示します。
以前の実行からのデータを使用するを選択し、いずれかの以前の実行結果を選択します。
(例だと10分前に成功したテストデータを使用)
保存&テストをクリックすると、以前に投稿された内容を利用してフローを実行します。
わざわざTeamsに再投稿しなくても、以前のテストデータを利用してフローの動作確認ができるので便利です。
Power Automateの注意点
フローの1日あたりの実行回数制限
プランによって1日あたりに実行できるフロー回数に制限があります。

私が利用しているOffice ライセンスに付属するPower Automateは1日あたり2000回まで
フローを動作させることができます。
1日あたりにフローを2000回動作させることは、それほどないと思いますが
プランごとに実行回数に制限があることは知っておいたほうが良いと思います。
無限ループするフローに気をつける
トリガーにTeamsの「チャンネルに新しいメッセージが追加されたとき」を設定し
アクションで「メッセージを投稿する」フローを作成すると、無限ループするフローができます。
誤って上記のようなフローを作成して、フローをオン状態で放置すると
メッセージの投稿を延々と繰り返すフローができます。
1度、誤って無限ループするフローをテストで作成して放置してしまい
1日あたりのフロー実行回数が900回を超えてしまったことがあったので
フローの作業内容について、無限ループしていないか注意する必要があります。
参考サイト


コメント
コメント失礼いたします。
投稿の返信内容の取得方法をご教授頂けますか。
ありがとうございます。
コメントありがとうございます。
私も以前、Teamsの返信を取得できるか試したのですが
Power Automateで返信の取得は出来なかったと思います。
フローのトリガーも確認してみましたが、Teamsの返信に対するトリガーは見当たらなかったので取得は難しそうです。