フォルダ内のファイルを添付してメール送信するフロー
はじめに
前の記事で,メールの添付ファイルをOneDriveに保存する方法をお伝えしました。
これとは逆に,添付ファイルをメールで自動送信したい場面もよくあります。
ところが,Power Automateにおけるファイル添付の方法は少々複雑です。
今回の記事では,添付ファイルの送信法について学びましょう。
目的
フォルダ内の複数ファイルをまとめて、1通のメールに添付して送信する
フローの全体像
・トリガー(手動トリガー/繰り返しなど)
・変数を初期化する(組み込み→変数)
・フォルダー内のファイルのリスト(OneDrive for Business)
・ファイル コンテンツの取得(OneDrive for Business)
・配列変数に追加(組み込み→変数)
・メールの送信(V2)(Office 365 Outlook)

設定方法
⓪添付ファイルの用意
任意のフォルダの中に,添付したいファイルをいくつか入れておきます。

① トリガーの設置
まずは「フローを手動でトリガーする」でテスト
「繰り返し」であれば,メール送信作業を好きな時間に設定できます。
② 変数を初期化
アクション:「変数の初期化」
設定:
・名前:添付ファイル
・タイプ:配列
・値:[]

⚠️ここがポイント その1: 配列変数とは?
配列変数=複数のデータをまとめて入れる“袋”
配列変数を扱う時,いつもイメージしているのは,お菓子が入った袋がつながっている,アレです:

今回の場合は,「複数の添付ファイルがつながっている状態」になります。
通常の変数は1つしか入れられませんが、配列は複数OKです。
イメージ:
添付ファイル = [
1つ目のファイル,
2つ目のファイル,
3つ目のファイル
]
メールの添付は「複数まとめて渡す」必要があるため、配列を使います。
② フォルダー内のファイルリスト
ファイルピッカー📁を使って対象フォルダを指定します。

⑥ ファイル コンテンツを取得
各ファイルの中身を取得します。
ファイル:「フォルダー内のファイルリスト」からの動的コンテンツ「Id」を入れます。
Idはファイルに付けられた「タグ」のようなものとイメージしましょう。

⑤ For each(繰り返し)
「ファイルコンテンツの取得」で,「Id」を指定すると自動でFor eachが設定されます。
実はこの「Id」も配列変数になっているので,ファイルの数だけIdタグがあります。
For eachは配列変数に含まれる要素の数だけ繰り返されます。
⑦ 配列変数に追加
アクション:「配列変数に追加」

設定内容:
Name: 配列変数の「添付ファイル」を指定
Value: 以下の「オブジェクト」を指定
{
"Name": "【ファイル名】",
"ContentBytes": 【ファイルコンテンツ】
}
これを入力するには,まず以下を入力し,
{
"Name": "",
"ContentBytes":
}その後,動的コンテンツから【ファイル名】と【ファイルコンテンツ】を入れます。
👁️間違えやすいので注意
ファイル名は文字列なのでダブルクォーテーション「”」で囲います。
ファイルコンテンツは囲いません。
コピペしたい方は以下を使ってください↓
{
"Name": "@{items('For_each')?['Name']}",
"ContentBytes": @{body('ファイル_コンテンツの取得')}
}⚠️ここがポイント その2:オブジェクトとは
{} の中身は「オブジェクト」と言います。
オブジェクトとは「名前(キー)と値がセットになったデータ」です。
イメージ:
{
"Name": "sample.pdf",
"ContentBytes": 【ファイルの中身】
}
これは1つの「ファイルの情報」を表しています。
● なぜオブジェクトにするのか
メールの添付ファイルは単なるファイル名だけではダメで、
・ファイル名(Name)
・ファイルの中身(ContentBytes)
この2つの情報をセットで渡す必要があるためです。
その「セット」を作るのがオブジェクト({})というわけです。
● 配列とオブジェクトの関係
今回の構造はこうなっています:
添付ファイル(配列) = [
{ファイル1の情報(オブジェクト)},
{ファイル2の情報(オブジェクト)},
{ファイル3の情報(オブジェクト)}
]
つまり:
・[] → まとめる(配列)
・{} → 1件分のデータ(オブジェクト)
⑧ メール送信
アクション:「メールを送信(V2)」
設定:
・宛先 → 今は 自分のメールアドレス にしておきましょう。
・件名、本文 → 任意
・添付ファイル → 添付ファイル(配列変数)
添付ファイルの設定方法
詳細パラメーター→すべて表示
添付ファイル欄の右上にある「T」マークを押すと,配列全体の入力に切り替わります。
その後,添付ファイル(配列変数)を動的コンテンツとして入れてください。


これでフォルダ内のファイルが全部まとめて添付されます。
保存とテスト
保存して,テスト実行してみましょう。
ファイル添付されたメールが届くか,確認してください。

まとめ
・配列とオブジェクトを使うことで複数ファイルを扱える
・一つのファイルはファイル名とファイルコンテンツからなる
・配列変数に1件ずつファイルを追加して、最後にまとめて送る
以上です。
今日も良いPowerAutomateクラウドフロー・ライフをお過ごしください!
