#PowerAutomate 複数添付ファイル付きメールを送信する


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 で添付ファイル付きメールを送信する 際は、

  1. Message オブジェクトを作る
  2. 件名(Title) や 本文(Body) 、宛先(To)などを詰める
  3. 添付ファイルを配列ぽく追加する(Array へ Add)
  4. 送信する

といった手順だったと記憶しておりまして。(随分前の記憶なので少々間違っているかも)
Power Automate でも同じような仕組みで配列にまとめてドーン!だろう、と予想して試してみたらビンゴだった、という感じです。加えて JSON 書かないとダメな予感もしていたのですが、そちらも調べて試したら正解でした。もちろん、実際に意図した動作をするまで試行錯誤してますが、話すと長くなるので割愛。裏の処理で動いているのは API ですから「自分がやりたいコト・実現したいコト」に関連する Graph API も確認すると幸せになれる可能性があるな、と思いました。

当記事の説明は SPO リストに登録済みの添付ファイルを利用しましたが、他の手段であってもファイル名とファイルのコンテンツ(中身)が把握できていれば問題無く動作すると思います。

それでは皆さま、素晴らしい Power Platform Life を!!