背景
社内で初めて Power Automate を使う方に、Mail to Teams のテンプレートを紹介したところ、
「添付ファイルも転送できないです?」
という相談があったので、参考フローを用意
元のテンプレート
Post message to Microsoft Teams when an email arrives in Office 365 Outlook
概要
添付ファイルを展開先の Teams にアップロードして、そのリンク文字列を生成して、展開時に付加する
フロー全体像
動作例
詳細
メール受信のトリガー設定
転送したいメールに合わせて設定
気にする箇所は以下ぐらいかな
添付ファイル処理
添付ファイル(Attachments) をループ処理
展開する Team 内でファイル生成
- ファイルコンテンツ(File Content) には、contentBytes を base64ToBinary() 変換したものを設定
@{base64ToBinary(items('Apply_to_each')?['contentBytes'])}
今回は、初心者でも使いやすい Post Message 用に HTML の A Tag で生成
- href に生成したファイルへのリンク
- 今回は生成時に取得可能な パス(path) を利用する。パスは、サイト内の相対アドレスなので、サイトまでの絶対アドレスとして、ファイル生成(Create File) アクションの入力で渡した サイトアドレス(dataset) を利用。二つを合成すれば完成
- ファイル生成の入力値であるサイトアドレス:
actions('Create_file').inputs.parameters.dataset
- ファイル生成の出力にあるパス(Path):
outputs('Create_file')?['body/Path']
- ファイル生成の入力値であるサイトアドレス:
- 今回は生成時に取得可能な パス(path) を利用する。パスは、サイト内の相対アドレスなので、サイトまでの絶対アドレスとして、ファイル生成(Create File) アクションの入力で渡した サイトアドレス(dataset) を利用。二つを合成すれば完成
- 表示は、元の添付ファイル名
<a href="@{actions('Create_file').inputs.parameters.dataset}@{outputs('Create_file')?['body/Path']}">@{items('Apply_to_each')?['name']}</a><p/>
ファイルのプロパティを取得アクションを追加すれば、たぶん Web Link が直接取れたと思います。
Teams 用メッセージ作成と投稿
投稿は、Reply message: チャネル内のメッセージで応答します で、HTML 形式を利用する。
この際、直接書くと壊れることがよくあるので、Compose で生成して、その出力を Teams のアクション内のメッセージで使います
投稿形式はこんな感じ
- {件名} from {送信者表示}
- {引用で、メール内容を表示}
- {添付ファイル一覧:添付ファイル処理 で生成したやつ}
送信者表示は、外部からのメール受信も考えて mailto: にしているが、社内とか限定なら以下などにしても
- msteams: を使ってチャット送信へ誘導
- Delveのユーザー表示へ
@{triggerOutputs()?['body/subject']} from <a href="mailto:@{triggerOutputs()?['body/from']}">@{triggerOutputs()?['body/from']}</a>
<p><blockquote>@{triggerOutputs()?['body/body']}</blockquote></p>
<p><br></p>
<p>@{variables('Attachments')}</p>
あとがき
社内の場合、ファイル添付ではなくリンク展開にしようって話なので、本来は外部受信だけのはず
で、そうなると、無条件に適用するとやばいファイルもある可能性があるのでご利用は計画的に
keyword
how to transfer attachments from mail to teams