Power Automateでメール本文とすべての添付ファイルを1つの統合PDFに変換する:OutlookとPDF4meを使った7ステップのワークフロー

メール主導のワークフローで苦痛なのはメールそのものではなく、 それに伴うすべて本文にはコンテキスト(送信者、送信理由、実行方法)が含まれ、添付ファイルには成果物(請求書、フォーム、署名済み契約書)が含まれます。これらを別々に保存すると、後でメッセージを再構築するのに将来の自分が3回クリックする必要が生じます。このチュートリアルでは、正確なパターンを構築します。 パワーオートマタ と PDF4meでPDFに変換、 PDF4meで複数のPDFファイルを結合する、 見通し、 Dropbox、そして「各ループに適用」が1つ。フローアクションは7つ。受信メールが1通届きます。統合されたPDFが1つ送信され、本文が先に、次に添付ファイルが1つずつ、タイムスタンプ付きで自動的にアーカイブフォルダに保存されます。
展望 新しいメールが届いたとき(V3) メッセージが届いた瞬間にトリガーが作動します [email protected]配列変数の名前は メール PDF4meが開きます。 PDFに変換 まずHTML本文をPDFに変換し、変換された本文をページ1として配列に追加します。 それぞれに適用する すべての添付ファイルを走査します(今回の実行では 2 つの DOCX ファイル)。 3ページ.docx、 Docx_2Pages.docx) それぞれを PDF に変換し、順番に追加します。 PDF4me 複数のPDFファイルを結合する 配列全体を消費し、統合された1つのPDFを出力します。Dropbox ファイルを作成する 書き戻すと merge-20260611-103323.pdfタイムスタンプ付きで、重複しない名前。本文が先、添付ファイルは順番通り、PDFは1つ、フォルダは1つ、監査対応済み。
なぜ?という問いに対する質疑応答
なぜ最初に本文をPDFに変換するのですか? 本文は文脈です。誰が、なぜ、何をすべきか。統合されたPDFを読む未来のあなたは、添付ファイルが届く前に、1ページ目で状況説明を求めます。変換 triggerOutputs()?['body/body'] (HTML本文を)最初にPDFに変換するということは、マージ処理においてメッセージ自体がリード文書として認識され、別のテキストダンプとして認識されないことを意味します。
なぜ本文と添付ファイルの両方に同じ配列変数を使用するのですか? マージアクションでは、順序付けされた単一のコレクションが必要です。一度初期化し、ステップ4で本文をプッシュし、ステップ5で変換された各添付ファイルをプッシュすれば、配列はまさに必要なドキュメントの順序になります。2つの別々の配列を使用すると、後でComposeアクションでそれらを連結する必要が生じ、同じ結果を得るために余計な配線が必要になります。
なぜ base64tobinal 毎回のプッシュで? PDF4me Convert to PDFは、出力をbase64文字列として返します。 $contentOutlook の添付ファイルは base64 形式で届きます コンテンツバイトPDF4me 複数の PDF ファイルを結合するにはバイナリ バッファが必要です。 base64ToBinary(...) この呼び出しは両方のソースを橋渡ししますが、異なるプロパティ名を指定します。変換とマージアクションはスキップされ、「無効なコンテンツ」というエラーが発生します。
なぜタイムスタンプ付きの出力名を使うのか? ファイル名が一定であれば、同じ送信者から1時間以内に2通のメールが届くと、競合が発生する。 concat('merge-', formatDateTime(utcNow(), 'yyyyMMdd-HHmmss'), '.pdf') 次のような名前を生み出します merge-20260611-103323.pdf辞書式順序でソート可能で、秒単位の精度で一意であり、UTCタイムスタンプとして即座に読み取ることができます。
得られるもの
入力: 監視対象のアドレス (ここ) に届いたメールはすべて、 [email protected])に 1 つ以上の添付ファイルがあります。このチュートリアルでは、短いメッセージ本文(「こんにちは、お元気ですか…」)と 2 つの DOCX 添付ファイル(3Page.docx、 Docx_2Pages.docx) 出力: 単一の統合PDFがドロップされました /blog data/merge blog template/output/名付けられた merge-YYYYMMDD-HHmmss.pdf1ページ目は本文です。2ページ目以降は、Aspose Wordsでレンダリングされた添付ファイルが添付ファイルの順序で表示されます。
受信したメール

フローはOutlookの受信トレイを監視します [email protected]Gmailが転送するか、このアドレスが直接受信すると、トリガーが作動します。
2回実行後の出力Dropboxフォルダ

統合されたPDFの1ページ目

1 ページ目は変換されたメール本文です。2 ページ目以降は最初の添付ファイルです (3ページ.docx) 2 番目の添付ファイル (Docx_2Pages.docxその後に続きます。1つのPDFファイルで、メッセージ全体が再構築されています。
必要なもの
- パワーオートマタ。 Power Automateを開くプレミアムコネクタ付きのプラン(PDF4me Connectはプレミアムプランです)。
- PDF4me APIキー。 APIキーを取得してくださいPDF4meアクションを初めて追加する際に接続してください。
- Office 365 Outlook.のために 新しいメールが届いたとき(V3) トリガーして添付ファイルを読む
コンテンツバイトコネクタが認証できる受信トレイであればどれでも動作します。 - Dropbox (またはSharePoint、OneDrive、Google Drive)。最終的な統合PDFファイル用。
- 添付ファイル付きのメールこのチュートリアルでは、2つのDOCXサンプルを使用します。 3ページ.docx そして Docx_2Pages.docx監視対象のアドレスにメールで送信して、すべてのスクリーンショットをミラーリングします。
まず、サンプルデータと期待される出力結果を入手してください。 両方の DOCX ファイルをダウンロードし、監視対象のアドレスに簡単なメールに添付して、フローを公開します。最初の実行では、 merge-YYYYMMDD-HHmmss.pdf これはリンク先のサンプルと全く同じです(タイムスタンプだけが異なります)。
フローの概要
- Outlook: 新しいメールが届いたとき (V3) (トリガー)。
- 変数を初期化する 名前
email(配列)。 - PDF4me: PDFへの変換(本文)HTML本文を読み込み、PDFを返します。
- 配列変数に追加 と
base64ToBinary改造された車体上で。 - それぞれに適用する の上
triggerOutputs()?['body/attachments']:- PDF4me: PDFに変換 添付ファイル。
- 配列変数に追加 と
base64ToBinary変換されたPDFファイル上で。
- PDF4me:複数のPDFファイルを1つのPDFファイルに結合する配列を入力として、1つのPDFを出力します。
- Dropbox: ファイルの作成ファイル名式はUTCタイムスタンプを付与します。
フローの概要全体

7つのアクション。テストメールに添付ファイルが2つあったため、「各カードに適用」には「1/2」と表示されます。PDF4meは、本文の変換、添付ファイルの変換、すべての結合という3つのプロセスで実行されます。
ステップ1:Outlook:新しいメールが届いたとき(V3)
これまでの流れ: トリガーのみ。
- で パワーオートマタ クリック 作成する、 選ぶ 自動化されたクラウドフロー。
- フローに名前を付けます(例:
Email to Consolidated PDF)、 選ぶ Office 365 Outlook: 新しいメールが届いたとき (V3) トリガーとしてクリック 作成する。 - 接続する あなたのOffice 365メールボックス。
- 拡大する 詳細パラメータ そして すべて表示 フィルタリングオプションを表示します。
- 設定する:
- に:
[email protected](このアドレス宛のメールのみがフローをトリガーするようにフィルタリングする) - 添付ファイルを含める:
Yes - 添付ファイルのみ:
Yes
- に:
トリガー設定

ヒント。 添付ファイルのみ はい は、内部通知、カレンダー招待、返信のたびにフローが発火するのを防ぎます。 に 専用のエイリアスでフィルタリングします (例: [email protected])実際にまとめて受け取りたい郵便物だけを受け取る、クリーンな受信先住所を作成します。
ステップ2:変数emailを初期化する
これまでの流れ: トリガーと変数の初期化。
空の配列を開いて、本文のPDFファイルとすべての添付ファイルのPDFファイルを取得します。
- クリック + 新しいステップ、 選ぶ 変数を初期化する。
- 設定する:
- 名前:
email - タイプ:
Array - 価値: 空欄のままにしてください
- 名前:
変数設定を初期化する

ステップ3:PDF4me:PDFに変換(本文)
これまでの流れ: トリガー、変数の初期化、PDF本文への変換。
Outlook トリガーはメッセージ本文を HTML として出力します body/bodyPDF4me Convert to PDFはHTMLを直接読み込むため、変換全体が1つの操作で完了します。
- クリック + 新しいステップ、 検索 PDF4me、 選ぶ PDFに変換。
- 名前を変更する アクション PDF本文に変換 そのため、ステップ5の「PDFに変換」アクションには、後で独自の分かりやすい名前を付けることができます。
- 接続する PDF4meにAPIキーで接続します(初回のみ)。
- 設定する:
- ファイルの内容 (表現、クリック)
fx):triggerOutputs()?['body/body'] - ファイル名:
email-body.html
- ファイルの内容 (表現、クリック)
PDF本文構成に変換

の .html ファイル名の拡張子は、PDF4me が使用するレンダラーを指定します。 .docx、 .xlsx、 .png、 または .jpg 同様に、同じ操作でそれらすべてを処理できます。
ステップ4:配列変数(メール本文)に追加する
これまでの流れ: トリガー、変数の初期化、PDF本文への変換、追加(メール本文)。
変換された本文PDFを押して email 配列をページ 1 として表示します。
- クリック + 新しいステップ、 選ぶ 配列変数に追加。
- 名前を変更する アクション 配列変数(メール本文)に追加する 分かりやすくするために。
- 設定する:
- 名前:
email - 価値 (表現):
base64ToBinary(body('Convert_to_PDF_Body')?['$content'])
- 名前:
メール本文設定の追加

ステップ5:各添付ファイルに適用し、変換して追加する
これまでの流れ: トリガー + 変数の初期化 + PDF本文への変換 + 追加(メール本文) + 各項目に適用。
すべての添付ファイルをループ処理し、それぞれをPDFに変換して順番に追加することで、最終的なマージ時に添付ファイルの順序が尊重されるようにします。
ステップ5a:それぞれに適用する(ソースを選択)
- クリック + 新しいステップ、 選ぶ それぞれに適用する。
- 設定する:
- 前の手順から出力を選択します (表現):
triggerOutputs()?['body/attachments']
- 前の手順から出力を選択します (表現):

ステップ5b:PDFに変換する(添付ファイル)
- ループの内側をクリック アクションを追加する、 選ぶ PDF4me: PDFに変換。
- 設定する:
- ファイルの内容 (表現):
base64ToBinary(items('Apply_to_each')?['contentBytes']) - ファイル名 (動的コンテンツ):選択 名前 各現在のアイテムに適用する
- ファイルの内容 (表現):

の 名前 実行時に動的コンテンツトークンは次のように解決されます。 items('Apply_to_each')?['name']そのため、各添付ファイルは元のファイル名(ソース拡張子を含み、PDF4meにどのレンダラーを使用するかを指示する)を使用して変換されます。

ステップ5c:配列変数に(変換された添付ファイルを)追加する
- 以下、同じループ内でPDFに変換する。 アクションを追加する、 選ぶ 配列変数に追加。
- 設定する:
- 名前:
email - 価値 (表現):
base64ToBinary(body('Convert_to_PDF')?['$content'])
- 名前:

その2つの物件名は重要です。 Outlook 添付ファイルのバイトは コンテンツバイトPDF4me Convert to PDF出力は存続しています $contentどちらもbase64形式です。式を貼り付ける際は名前を間違えないように注意してください。そうすればループは正常に動作します。
ステップ6:PDF4me:複数のPDFファイルを結合する
これまでの流れ: トリガー、変数の初期化、PDF本文への変換、追加(本文)、各項目への適用、複数のPDFの結合。
全体 email 配列(本文PDFが最初、次に添付ファイルのPDFが添付ファイルの順序で)は、単一のマージ呼び出しに渡されます。
- 「各ループに適用」の下にある + 新しいステップ、 検索 PDF4me、 選ぶ 複数のPDFファイルを1つのPDFファイルに結合する。
- 設定する:
- 本文/ドキュメントコンテンツ: 選ぶ
email変数トークン - 出力ファイル名:
Email Attachment Merge Output.pdf
- 本文/ドキュメントコンテンツ: 選ぶ
マージアクションの設定

ステップ7:Dropbox:タイムスタンプ付きファイル名でファイルを作成する
これまでの流れ: トリガー、変数の初期化、PDF本文への変換、追加、各項目への適用、結合、ファイルの作成。
統合されたPDFファイルをUTCタイムスタンプ付きのファイル名でDropboxに書き込むことで、実行ごとに新しい、並べ替え可能なファイルが保存されるようにします。
- クリック + 新しいステップ、 選ぶ Dropbox: ファイルの作成。
- 設定する:
- フォルダパス:
/blog data/merge blog template/output - ファイル名 (表現、クリック)
fx):concat('merge-', formatDateTime(utcNow(), 'yyyyMMdd-HHmmss'), '.pdf') - ファイルの内容: 選ぶ ファイルの内容 複数のPDFを結合するアクションからのトークン
- フォルダパス:
ファイル名式

ファイルコンテンツをマッピングした最終アクション

ヒント。 送信者ドメインごとにフォルダを1つ作成したいですか?静的フォルダパスを置き換えてください。 concat('/inbox-pdfs/', split(triggerOutputs()?['body/from'], '@')[1], '/')PDF は、次のようなサブフォルダーに自動的にルーティングされます。 /inbox-pdfs/yourcompany.com/ 送信者のドメインに基づきます。
フローを実行して検証する
- 保存 右上の流れ。
- 監視対象のアドレスに、1つ以上の添付ファイル付きのメッセージを送信します(ウォークスルーを使用)。
[email protected]) - 開ける 実行履歴トリガーは数秒以内に作動します。各アクションが緑色に変わるのを確認してください。短い HTML ボディの場合、「PDF ボディに変換」は約 10 秒かかります。「各に適用」はデフォルトで並列実行され、両方の添付ファイルが約 22 秒で完了します。「複数の PDF を結合」は約 11 秒かかります。
- Dropboxを開く
/blog data/merge blog template/output/. という名前のファイルmerge-YYYYMMDD-HHmmss.pdfありますか。 - PDFファイルを開いてください。1ページ目は本文です。2ページ目以降は、添付ファイルが添付順に完全に表示されます。
実際に何を作ったのですか? ゼロタッチでメールをアーカイブするパイプライン。添付ファイル付きのメッセージはすべて、本文を先頭に添付ファイルを順番に並べた統合PDFに変換され、タイムスタンプが付与されるため競合は発生せず、チームや監査担当者が検索できる共有フォルダに保存されます。添付ファイルが2つでも20個でも、同じ手順で処理できます。この手順は、Make(Outlookトリガー、添付ファイルのイテレータ、PDF4me Merge)とZapier(ZapierまたはOutlookトリガーによるメール送信、ループ処理、PDF4me Merge)の両方で動作します。
再構築せずに追加できる一般的なバリエーション
endsWith(toLower(items('Apply_to_each')?['name']), '.pdf') または同様の機能。署名やインライン画像添付ファイルをきれいにスキップします。ボディ/ボディ統合されたPDFの1ページ目には、後でgrep検索できるヘッダーが追加されました。PDF/A-2b 合併後、アーカイブされた統合PDFはISO 19005規格に準拠し、法的保留や規制当局への提出に適した状態になりました。トラブルシューティング
配列に追加する項目の1つ 価値 式はラップされていません base64ToBinary(...)各プッシュ(本文と添付ファイル)には変換が必要です。両方の追加アクションを再度開き、式エディタに切り替えて、式が正しいことを確認します。 base64ToBinary(body('Convert_to_PDF_Body')?['$content']) そして base64ToBinary(body('Convert_to_PDF')?['$content']) 原文のまま。
「PDF本文に変換」アクションは、実際のHTML本文を受け取りませんでした。トリガーを確認してください。 添付ファイルを含める はい(それがなければ、体は時々空っぽで到着します)そして ファイルの内容 解決する triggerOutputs()?['body/body']、 ない body/bodyPreview。
添付ファイルのないメールでトリガーが作動したのは 添付ファイルのみ が「いいえ」に設定されています。これを「はい」に切り替えるか、「各項目に適用」を、特定の条件が満たされた場合にのみ実行される条件で囲みます。 length(triggerOutputs()?['body/attachments']) ゼロより大きい。
デフォルト それぞれに適用する 並列実行されるため、追加順序が乱れる可能性があります。ループを開きます 設定 そして設定する 並行性制御 並列性の度合い 1ループは順番に実行され、添付ファイルはOutlookが返した順序どおりに配列に格納されます。
次のステップ
同じ7つのステップ(トリガー、配列の初期化、本文の変換、ループ変換と追加、マージ、タイムスタンプ付き保存)は、「メールと添付ファイルを1つのPDFにまとめる」自動化処理に有効です。一度設定すれば、受信メッセージはすべて自動的に検索・並べ替え可能なアーカイブエントリになります。