Power Automate でメール送信する際、複数ファイルを添付する方法です。
説明の前提
当記事で説明するフローの内容は「SharePoint Online(以降、SPO)のリストへ既に登録されている添付ファイル」を取得して [メールの送信]アクションで複数ファイルをまとめて1通のメールへファイル添付してメール送信する、という流れになっています。
上イメージのアイテムが、末尾の動作結果で登場します。
フローの全体像
皆さんが実現したいコトにあわせて適宜変更してくださいね。
実際に試してみるとスグにわかると思いますので SPO リストから”SPO アイテム上の添付ファイルを Apply to each でコンテンツ取得している箇所”の説明は割愛します。
添付ファイルを配列に退避
複数ファイルが添付されたメール送信をしたい場合のポイントは配列です。変数で配列(Array)を用意して、ファイルコンテンツを取得した結果を格納していきます。
[配列変数に追加]アクションの値は下記のように設定してください。
JSON 形式です。"name" に拡張子込みのファイル名、"contentBytes" には取得したファイルコンテンツを指定します。
{
"name": "[ファイル名(※拡張子込み)]",
"contentBytes": "[ファイルコンテンツ]"
}
このように JSON 形式でファイル名・ファイルコンテンツを配列に詰めています。メールの添付ファイルについて、参考までに Graph API の Docs を参照して JSON を確認してみましょう。
https://docs.microsoft.com/ja-jp/graph/api/message-post-attachments?view=graph-rest-1.0&tabs=http&WT.mc_id=BA-MVP-5004053#request
先ほどフローで指定した内容と、ほぼ同じですよね。
ちなみに、記事投稿時点(2022/03/15)で、Docs では記載されている "type" は無しで問題なく動作します。フローの実行結果をみると Graph API の Docs と若干異なるカタチになっていますが、"contentBytes"の中にコンテンツタイプが設定されているのが確認できます。なので、大丈夫なのだろうと個人的には考えています。
[メールの送信]アクションのポイント
ここまでの処理で、メールに添付したいファイルが格納された配列が準備できました。その配列を[メールの送信]アクションに渡してあげる必要があります。アクションが初期状態のままだと、添付ファイルを1つずつ追加していく状態になっています。
その添付ファイル要素の右端にある四角に T が書かれているアイコンをクリックしてください。
そうすると、添付ファイルを指定する場所が 1 つに変わります。
ここに、準備した配列を指定してあげれば OK です!
メール送信結果
下イメージはフローからメール送信された側(=受信者)のスクリーンショットです。メールへ複数添付ファイルがある状態で届いてますね。
配列に送信したいファイルを突っ込んで、メール送信する際に配列を渡してヨシ!です。
まとめ
当方の過去経験談なんですが、C# 等の開発言語で EWS で添付ファイル付きメールを送信する 際は、
- Message オブジェクトを作る
- 件名(Title) や 本文(Body) 、宛先(To)などを詰める
- 添付ファイルを配列ぽく追加する(Array へ Add)
- 送信する
といった手順だったと記憶しておりまして。(随分前の記憶なので少々間違っているかも)
Power Automate でも同じような仕組みで配列にまとめてドーン!だろう、と予想して試してみたらビンゴだった、という感じです。加えて JSON 書かないとダメな予感もしていたのですが、そちらも調べて試したら正解でした。もちろん、実際に意図した動作をするまで試行錯誤してますが、話すと長くなるので割愛。裏の処理で動いているのは API ですから「自分がやりたいコト・実現したいコト」に関連する Graph API も確認すると幸せになれる可能性があるな、と思いました。
当記事の説明は SPO リストに登録済みの添付ファイルを利用しましたが、他の手段であってもファイル名とファイルのコンテンツ(中身)が把握できていれば問題無く動作すると思います。
それでは皆さま、素晴らしい Power Platform Life を!!