
Microsoft社が提供するローコード開発ツール「Power Platform」のフロー機能(Power Automate)を使用した、Outlookで受信した添付ファイル付きメールをTeamsのチームチャネルに投稿し、チーム内で共有する設定例を紹介します。
取引先からメール送付された請求書、外部からの問合せ受付メールの管理、会員メールの他メンバーへの共有等、様々な用途で活用できます。
- 操作環境:
- OS:Windows 11
- Webブラウザー:Edge
- 使用プラン:Microsoft 365 Business Premium(試用版)
Power Automateによるフロー実装
分岐内処理:true(添付ファイルあり)
ここからtrueの分岐内処理を設定していきます。
まず、メールの添付ファイルをSharePointに格納するアクションを追加します。
検索欄に[share]と入力し、ランタイムで[標準]を選択し、[SharePoint]が見つかったら、[さらに表示]を選択します。
[ファイルの作成]を選択します。

[パラメーター]タブの項目を以下の通り設定します。
- サイトのアドレス:payments(前の記事の工程3で作成したTeamsのチーム)
- フォルダーのパス:/Shared Documents/General/[Converted time](項目)_[replaced-subject](項目)
- ファイル名(項目):添付ファイル 名前
- ファイルコンテンツ(項目):添付ファイル コンテンツ

なお、メールに複数のファイルが添付されている場合がありますが、図表5-2のSharePointのファイル格納ステップを追加した時点で、自動的に繰り返し処理も追加されるようになっています。

前の記事のfalseの処理と同様、Teams投稿にあたり、投稿内容を格納する一時領域を追加します(前の記事の実装上の注意点の項番5による)(画面割愛)。
- ランタイム:組み込み
- アクション:Data Operation>作成
[パラメーター]タブの項目を画面イメージの通り設定します。falseと処理との違いは添付ファイル格納先のリンクがあることです。
https://xxxxxx.sharepoint.com/sites/payments/Shared Documents/General/[タイムゾーンの変換](項目)_[replaced-subject](項目)
また、本文は前の記事の実装上の注意点の項番3の通り、改行コードの置き換えを行います。
- 本文(関数): uriComponentToString(replace(uriComponent(triggerBody()?['Body']), '%0D%0A', '<br>'))

前の記事のfalseの処理と同様、 Teamsチャネルの投稿用アクションを追加します(画面割愛)。
- ランタイム:標準
- アクション:Microfost Teams >チャットまたはチャネルでメッセージを投稿する
[パラメーター]タブの項目を以下の通り設定します。
- 投稿者:ユーザー
- 投稿先:Channel
- Team:payments
- Channel:General
- Message(項目):前のステップで作成した一時領域
- Subject(項目):件名

前の記事の実装上の注意点の項番4の通り、投稿サイズ上限を考慮した失敗時の処理を追加します(画面割愛)。
- ランタイム:組み込み
- アクション:Control>スコープ
[設定]タブを選択し、前のステップ名(この例では[チャットまたはチャネルでメッセージを投稿する-true])を展開し、[失敗しました]のみチェックをつけます。
これにより、スコープ内に追加したアクションは、前のステップが失敗したときのみ実行されるようになります。

分岐内処理:true:失敗時(添付ファイルあり・投稿失敗)
図表5-4と同じ要領で、Teams投稿内容を格納する一時領域を追加します(画面割愛)。
- ランタイム:組み込み
- アクション:Data Operation>作成
[パラメーター]タブの項目を画面イメージの通り設定します。本文に関しては、今回は本文のプレビューを選択します。

図表5-5と同じ要領で、Teamsチャネルの投稿用アクションを追加します(画面割愛)。
- ランタイム:標準
- アクション:Microsoft Teams >チャットまたはチャネルでメッセージを投稿する
[パラメーター]タブの項目を以下の通り設定します。
- 投稿者:ユーザー
- 投稿先:Channel
- Team:payments
- Channel:General
- Message(項目):前のステップで作成した一時領域
- Subject(項目):件名

trueの分岐内処理が完成し、フロー作成が一通り完了しました。

右上の[保存]を選択し、フローを保存します。
エラーメッセージが表示される場合は、エラー内容を確認して修正してから保存します。

動作確認
外部のメールアドレスから、paymentsメール宛に添付ファイルあり(単数/複数)/なしのメールを送ってみます。

まずは添付あり(単数)メールの受信状況を確認します。
Teamsの投稿内容は問題なさそうです。添付ファイル格納先のリンクを選択します。

Webブラウザーが起動し、SharePointの格納先フォルダーにアクセスできました。受信メールの添付ファイルも格納されており、このファイルも開けました。

次は添付あり(複数)メールの受信状況を確認します。
Teamsの投稿内容は問題なさそうです。添付ファイル格納先のリンクを選択します。

Webブラウザーが起動し、SharePointの格納先フォルダーにアクセスできました。受信メールの添付ファイルもすべて格納されており、これらのファイルも開けました。

最後は添付なしメールの受信状況を確認します。
Teamsの投稿内容は問題なさそうです。

SharePointのドキュメントルートフォルダーにアクセスすると、添付ファイルありのメールの分だけ、フォルダーが作成されていることが分かります(添付ファイルがないメールのフォルダーは作成されません)。

チャネルID確認(参考)
この例では、Teamsのチームチャネルは一般(General)のみを使用しました。
送信元のメールアドレスや件名のキーワード等に応じてメールを複数のTeamsチャネルに振り分けたい場合、振り分けの条件分岐内でチャネルIDの値を変数に格納し、Teams投稿アクションのチャネルIDとしてこの変数を渡すような処理が必要となります。
参考までチャネルIDの確認方法を紹介します。
なお、以前はWebブラウザーでTeamsの対象チャネルにアクセスし、そのURLからチャネルIDを取得する方法が可能でした。最近仕様が変わったのか、2024年9月時点でその方法では取得できませんでした。
システム管理者であれば、Teams管理センターで対象チャネルのリンクを取得することで確認できます。

別の方法として、Teamsのデスクトップアプリからチャネルのリンクを取得することで確認できます。この方法なら管理センターのアクセス権がないユーザーでも確認できます。

おわりに
Power Automateを使用すると、プログラムを組まなくてもちょっとした効率化機能を簡単に作成できます。
ただし、精度を上げようとすると、前の記事で紹介したような実装上の注意点が色々と出てきます(HTMLソースを記述すると画面表示がおかしくなる等、不具合ではないかと思う仕様もありますが)。
処理に失敗しても機能の所有者に通知メールが届くようになっているので、運用しながら改良していけると良いでしょう。
当ブログ内の連載記事