メインコンテンツへスキップ

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

· 1分で読める
SEO and Content Writer

メール主導のワークフローで苦痛なのはメールそのものではなく、 それに伴うすべて本文にはコンテキスト(送信者、送信理由、実行方法)が含まれ、添付ファイルには成果物(請求書、フォーム、署名済み契約書)が含まれます。これらを別々に保存すると、後でメッセージを再構築するのに将来の自分が3回クリックする必要が生じます。このチュートリアルでは、正確なパターンを構築します。 パワーオートマタ と PDF4meでPDFに変換、 PDF4meで複数のPDFファイルを結合する、 見通し、 Dropbox、そして「各ループに適用」が1つ。フローアクションは7つ。受信メールが1通届きます。統合されたPDFが1つ送信され、本文が先に、次に添付ファイルが1つずつ、タイムスタンプ付きで自動的にアーカイブフォルダに保存されます。

流れの概要
1. When a new email arrives (V3)
Outlook trigger on To [email protected]. Include Attachments Yes, Only with Attachments Yes.
2. Initialize variable
Name email, Type Array. Buffer for every PDF binary the flow produces.
3. Convert to PDF Body
PDF4me action. Content triggerOutputs body/body (the HTML body), File Name email-body.html. Returns the body as PDF.
4. Append to array (email body)
Push base64ToBinary on the converted body PDF onto the email array. This is page 1 of the final document.
5. Apply to each attachment
Loop triggerOutputs body/attachments. Convert each to PDF, then Append to array with base64ToBinary.
6. Merge multiple PDFs
PDF4me action. Body/docContent the email array, Output File Name Email Attachment Merge Output.pdf.
7. Create file
Dropbox /blog data/merge blog template/output. File Name concat(merge-, formatDateTime(utcNow(), yyyyMMdd-HHmmss), .pdf).
要約版

展望 新しいメールが届いたとき(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でレンダリングされた添付ファイルが添付ファイルの順序で表示されます。

受信したメール​

Gmailのメールビューには、test宛てのメッセージが表示され、本文には「こんにちは、お元気ですか。現在のプロジェクトの進捗状況をお知らせするためにメールを書いています。参考のために関連ファイルも添付しました。よろしくお願いいたします。Test Dev」と表示されています。添付ファイルはWord文書のサムネイルとして3Page.docxとDocx_2Pages.docxの2つが表示され、「Scanned by Gmail」の通知が表示されています。

フローはOutlookの受信トレイを監視します [email protected]Gmailが転送するか、このアドレスが直接受信すると、トリガーが作動します。

2回実行後の出力Dropboxフォルダ​

Dropboxの出力フォルダには、merge-20260611-103323.pdf (165.43 KB) と merge-20260611-102949.pdf (171.37 KB) がリストされています。それぞれ、フローが実行されたUTCタイムスタンプに基づいて命名されています。

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

merge-20260611-103323.pdf のプレビューでは、2ページが並べて表示されています。左ページは変換されたメール本文です。こんにちは。お元気でお過ごしでしょうか。現在のプロジェクトの進捗状況をお知らせするためにメールを書いています。参考のために関連ファイルも添付しています。よろしくお願いいたします。テスト開発部。右ページは、3Page.docx の最初のページで、Page 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 これはリンク先のサンプルと全く同じです(タイムスタンプだけが異なります)。


フローの概要​

  1. Outlook: 新しいメールが届いたとき (V3) (トリガー)。
  2. 変数を初期化する 名前 email (配列)。
  3. PDF4me: PDFへの変換(本文)HTML本文を読み込み、PDFを返します。
  4. 配列変数に追加 と base64ToBinary 改造された車体上で。
  5. それぞれに適用する の上 triggerOutputs()?['body/attachments']:
    • PDF4me: PDFに変換 添付ファイル。
    • 配列変数に追加 と base64ToBinary 変換されたPDFファイル上で。
  6. PDF4me:複数のPDFファイルを1つのPDFファイルに結合する配列を入力として、1つのPDFを出力します。
  7. Dropbox: ファイルの作成ファイル名式はUTCタイムスタンプを付与します。

フローの概要全体​

Power Automate フローキャンバスには、上から順に 7 つのアクションが表示されています: 新しいメールが届いたとき V3、変数の初期化、PDF への変換本文、配列変数 (メール本文) への追加、PDF への変換と配列変数への追加を含む各項目への適用、複数の PDF ファイルを 1 つの PDF ファイルにマージ、ファイルの作成

7つのアクション。テストメールに添付ファイルが2つあったため、「各カードに適用」には「1/2」と表示されます。PDF4meは、本文の変換、添付ファイルの変換、すべての結合という3つのプロセスで実行されます。


ステップ1:Outlook:新しいメールが届いたとき(V3)​

これまでの流れ: トリガーのみ。

  1. で パワーオートマタ クリック 作成する、 選ぶ 自動化されたクラウドフロー。
  2. フローに名前を付けます(例: Email to Consolidated PDF)、 選ぶ Office 365 Outlook: 新しいメールが届いたとき (V3) トリガーとしてクリック 作成する。
  3. 接続する あなたのOffice 365メールボックス。
  4. 拡大する 詳細パラメータ そして すべて表示 フィルタリングオプションを表示します。
  5. 設定する:
    • に: [email protected] (このアドレス宛のメールのみがフローをトリガーするようにフィルタリングする)
    • 添付ファイルを含める: Yes
    • 添付ファイルのみ: Yes

トリガー設定​

Power Automate Office 365 Outlook 新しいメールが届いたとき V3 トリガー 詳細パラメーターが展開され、test@ynoox.ch に設定するには、添付ファイルを含める はい、添付ファイルのみ はい、Office 365 Outlook に接続済み と表示されます。

ヒント。 添付ファイルのみ はい は、内部通知、カレンダー招待、返信のたびにフローが発火するのを防ぎます。 に 専用のエイリアスでフィルタリングします (例: [email protected])実際にまとめて受け取りたい郵便物だけを受け取る、クリーンな受信先住所を作成します。


ステップ2:変数emailを初期化する​

これまでの流れ: トリガーと変数の初期化。

空の配列を開いて、本文のPDFファイルとすべての添付ファイルのPDFファイルを取得します。

  1. クリック + 新しいステップ、 選ぶ 変数を初期化する。
  2. 設定する:
    • 名前: email
    • タイプ: Array
    • 価値: 空欄のままにしてください

変数設定を初期化する​

Power Automate の変数初期化アクションは、名前が email、タイプが Array、値フィールドが空に設定されています。

ステップ3:PDF4me:PDFに変換(本文)​

これまでの流れ: トリガー、変数の初期化、PDF本文への変換。

Outlook トリガーはメッセージ本文を HTML として出力します body/bodyPDF4me Convert to PDFはHTMLを直接読み込むため、変換全体が1つの操作で完了します。

  1. クリック + 新しいステップ、 検索 PDF4me、 選ぶ PDFに変換。
  2. 名前を変更する アクション PDF本文に変換 そのため、ステップ5の「PDFに変換」アクションには、後で独自の分かりやすい名前を付けることができます。
  3. 接続する PDF4meにAPIキーで接続します(初回のみ)。
  4. 設定する:
    • ファイルの内容 (表現、クリック) fx): triggerOutputs()?['body/body']
    • ファイル名: email-body.html

PDF本文構成に変換​

Power Automate PDF4me の「PDF 本文に変換」アクションで、ファイルコンテンツがトリガー「本文」トークン(式 triggerOutputs body/body)に設定され、ファイル名が email-body.html に設定されています。PDF4me Connect に接続済みです。

の .html ファイル名の拡張子は、PDF4me が使用するレンダラーを指定します。 .docx、 .xlsx、 .png、 または .jpg 同様に、同じ操作でそれらすべてを処理できます。


ステップ4:配列変数(メール本文)に追加する​

これまでの流れ: トリガー、変数の初期化、PDF本文への変換、追加(メール本文)。

変換された本文PDFを押して email 配列をページ 1 として表示します。

  1. クリック + 新しいステップ、 選ぶ 配列変数に追加。
  2. 名前を変更する アクション 配列変数(メール本文)に追加する 分かりやすくするために。
  3. 設定する:
    • 名前: email
    • 価値 (表現): base64ToBinary(body('Convert_to_PDF_Body')?['$content'])

メール本文設定の追加​

Power Automate の配列変数 (メール本文) に追加アクションで、名前を email、値を式 base64ToBinary に設定し、本文の引用符を Convert_to_PDF_Body に設定し、引用符を閉じ、括弧を閉じ、疑問符をドル記号で囲み、内容を閉じ、角括弧を式エディターに表示します。

ステップ5:各添付ファイルに適用し、変換して追加する​

これまでの流れ: トリガー + 変数の初期化 + PDF本文への変換 + 追加(メール本文) + 各項目に適用。

すべての添付ファイルをループ処理し、それぞれをPDFに変換して順番に追加することで、最終的なマージ時に添付ファイルの順序が尊重されるようにします。

ステップ5a:それぞれに適用する(ソースを選択)​

  1. クリック + 新しいステップ、 選ぶ それぞれに適用する。
  2. 設定する:
    • 前の手順から出力を選択します (表現): triggerOutputs()?['body/attachments']
Power Automate の各アクションに適用する。前のステップからの出力の選択を Attachments トークンに設定し、解決済みの式 triggerOutputs body/attachments をツールチップに表示する。

ステップ5b:PDFに変換する(添付ファイル)​

  1. ループの内側をクリック アクションを追加する、 選ぶ PDF4me: PDFに変換。
  2. 設定する:
    • ファイルの内容 (表現): base64ToBinary(items('Apply_to_each')?['contentBytes'])
    • ファイル名 (動的コンテンツ):選択 名前 各現在のアイテムに適用する
Power Automateの「PDFに変換」アクション(「各項目に適用」内)、ファイルコンテンツはbase64ToBinary項目Apply_to_each contentBytesに設定、ファイル名は現在の添付ファイルの名前トークンに設定、式エディターが開きbase64ToBinary項目Apply_to_each contentBytesを表示

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

Power Automate の PDF ファイルへの変換 名前フィールドのツールチップには、解決された式項目 Apply_to_each の名前、現在の添付ファイルに適用される名前トークンが表示されます。

ステップ5c:配列変数に(変換された添付ファイルを)追加する​

  1. 以下、同じループ内でPDFに変換する。 アクションを追加する、 選ぶ 配列変数に追加。
  2. 設定する:
    • 名前: email
    • 価値 (表現): base64ToBinary(body('Convert_to_PDF')?['$content'])
Power Automate 配列変数に追加、各項目に適用、名前メール、値が base64ToBinary 本体に設定、Convert_to_PDF ドルコンテンツが式エディターに表示されます

その2つの物件名は重要です。 Outlook 添付ファイルのバイトは コンテンツバイトPDF4me Convert to PDF出力は存続しています $contentどちらもbase64形式です。式を貼り付ける際は名前を間違えないように注意してください。そうすればループは正常に動作します。


ステップ6:PDF4me:複数のPDFファイルを結合する​

これまでの流れ: トリガー、変数の初期化、PDF本文への変換、追加(本文)、各項目への適用、複数のPDFの結合。

全体 email 配列(本文PDFが最初、次に添付ファイルのPDFが添付ファイルの順序で)は、単一のマージ呼び出しに渡されます。

  1. 「各ループに適用」の下にある + 新しいステップ、 検索 PDF4me、 選ぶ 複数のPDFファイルを1つのPDFファイルに結合する。
  2. 設定する:
    • 本文/ドキュメントコンテンツ: 選ぶ email 変数トークン
    • 出力ファイル名: Email Attachment Merge Output.pdf

マージアクションの設定​

Power Automate PDF4me 複数の PDF ファイルを 1 つの PDF ファイルに結合アクション (本文/docContent を email 変数に設定し、出力ファイル名を Email Attachment Merge Output.pdf に設定)、動的コンテンツ パネルが開き、変数 email、各項目に適用、現在の項目、新しいメールが届いたとき V3、body/sensitivityLabelInfo、添付ファイルを表示)

ステップ7:Dropbox:タイムスタンプ付きファイル名でファイルを作成する​

これまでの流れ: トリガー、変数の初期化、PDF本文への変換、追加、各項目への適用、結合、ファイルの作成。

統合されたPDFファイルをUTCタイムスタンプ付きのファイル名でDropboxに書き込むことで、実行ごとに新しい、並べ替え可能なファイルが保存されるようにします。

  1. クリック + 新しいステップ、 選ぶ Dropbox: ファイルの作成。
  2. 設定する:
    • フォルダパス: /blog data/merge blog template/output
    • ファイル名 (表現、クリック) fx): concat('merge-', formatDateTime(utcNow(), 'yyyyMMdd-HHmmss'), '.pdf')
    • ファイルの内容: 選ぶ ファイルの内容 複数のPDFを結合するアクションからのトークン

ファイル名式​

Power Automate Dropbox ファイルの作成アクション フォルダー パス /blog data/merge blog template/output、式エディターに表示されるファイル名式 concat merge dash comma formatDateTime utcNow comma yyyyMMdd dash HHmmss comma dot pdf、ファイル コンテンツは複数のトークンをマージするように設定されています

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

Power Automate Dropbox ファイル作成アクション、フォルダー パス /blog data/merge blog template/output、ファイル名 concat 式、複数の PDF ファイルを 1 つの PDF ファイルにマージするアクションからのファイル コンテンツ トークン、本文 Merge_multiple_PDF_files_into_a_single_PDF_file に解決されるツールチップ

ヒント。 送信者ドメインごとにフォルダを1つ作成したいですか?静的フォルダパスを置き換えてください。 concat('/inbox-pdfs/', split(triggerOutputs()?['body/from'], '@')[1], '/')PDF は、次のようなサブフォルダーに自動的にルーティングされます。 /inbox-pdfs/yourcompany.com/ 送信者のドメインに基づきます。


フローを実行して検証する​

  1. 保存 右上の流れ。
  2. 監視対象のアドレスに、1つ以上の添付ファイル付きのメッセージを送信します(ウォークスルーを使用)。 [email protected])
  3. 開ける 実行履歴トリガーは数秒以内に作動します。各アクションが緑色に変わるのを確認してください。短い HTML ボディの場合、「PDF ボディに変換」は約 10 秒かかります。「各に適用」はデフォルトで並列実行され、両方の添付ファイルが約 22 秒で完了します。「複数の PDF を結合」は約 11 秒かかります。
  4. Dropboxを開く /blog data/merge blog template/output/. という名前のファイル merge-YYYYMMDD-HHmmss.pdf ありますか。
  5. PDFファイルを開いてください。1ページ目は本文です。2ページ目以降は、添付ファイルが添付順に完全に表示されます。

実際に何を作ったのですか? ゼロタッチでメールをアーカイブするパイプライン。添付ファイル付きのメッセージはすべて、本文を先頭に添付ファイルを順番に並べた統合PDFに変換され、タイムスタンプが付与されるため競合は発生せず、チームや監査担当者が検索できる共有フォルダに保存されます。添付ファイルが2つでも20個でも、同じ手順で処理できます。この手順は、Make(Outlookトリガー、添付ファイルのイテレータ、PDF4me Merge)とZapier(ZapierまたはOutlookトリガーによるメール送信、ループ処理、PDF4me Merge)の両方で動作します。


再構築せずに追加できる一般的なバリエーション​

添付ファイルを種類別に絞り込む
マージで PDF と Office ドキュメントのみが必要な場合は、Convert to PDF を次の 状態 テスト endsWith(toLower(items('Apply_to_each')?['name']), '.pdf') または同様の機能。署名やインライン画像添付ファイルをきれいにスキップします。
1ページ目にメタデータをスタンプする
ステップ3の前に、HTMLプリアンブルを作成します。 作曲する: 送信者、件名、受信日、次に連結して ボディ/ボディ統合されたPDFの1ページ目には、後でgrep検索できるヘッダーが追加されました。
アーカイブ前にデジタル署名
PDF4meを挿入 デジタル署名(PDF) ステップ 6 とステップ 7 の間。アーカイブされた PDF には、X.509 証明書で署名され、即座に監査証跡が作成されます。 誰がいつ何をアーカイブした。
長期保存用のPDF/Aファイル
PDF4meを追加する PDF/A を作成する コンプライアンスに準拠 PDF/A-2b 合併後、アーカイブされた統合PDFはISO 19005規格に準拠し、法的保留や規制当局への提出に適した状態になりました。

トラブルシューティング​

「無効なコンテンツ」を含むマージ操作エラー

配列に追加する項目の1つ 価値 式はラップされていません base64ToBinary(...)各プッシュ(本文と添付ファイル)には変換が必要です。両方の追加アクションを再度開き、式エディタに切り替えて、式が正しいことを確認します。 base64ToBinary(body('Convert_to_PDF_Body')?['$content']) そして base64ToBinary(body('Convert_to_PDF')?['$content']) 原文のまま。

1ページ目が空白または欠落しています

「PDF本文に変換」アクションは、実際のHTML本文を受け取りませんでした。トリガーを確認してください。 添付ファイルを含める はい(それがなければ、体は時々空っぽで到着します)そして ファイルの内容 解決する triggerOutputs()?['body/body']、 ない body/bodyPreview。

各実行に0回適用します

添付ファイルのないメールでトリガーが作動したのは 添付ファイルのみ が「いいえ」に設定されています。これを「はい」に切り替えるか、「各項目に適用」を、特定の条件が満たされた場合にのみ実行される条件で囲みます。 length(triggerOutputs()?['body/attachments']) ゼロより大きい。

添付ファイルが間違った順序で表示される

デフォルト それぞれに適用する 並列実行されるため、追加順序が乱れる可能性があります。ループを開きます 設定 そして設定する 並行性制御 並列性の度合い 1ループは順番に実行され、添付ファイルはOutlookが返した順序どおりに配列に格納されます。


次のステップ​

同じ7つのステップ(トリガー、配列の初期化、本文の変換、ループ変換と追加、マージ、タイムスタンプ付き保存)は、「メールと添付ファイルを1つのPDFにまとめる」自動化処理に有効です。一度設定すれば、受信メッセージはすべて自動的に検索・並べ替え可能なアーカイブエントリになります。