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

Power AutomateでDropboxフォルダにドロップされたすべてのPDFを自動的に結合する:6ステップの動的ワークフロー

· 1分で読める
SEO and Content Writer

「これらの PDF を結合する」チケットの苦痛な部分は結合ではなく、 実行時にフォルダの中身を把握する名前が変わったり、ファイルが出入りしたり、誰かが午後4時55分に5つ目のドキュメントを追加したりします。このウォークスルーでは、正確なパターンを構築します。 パワーオートマタ と PDF4meで複数のPDFファイルを結合する、 Dropbox、そして各ループに 1 つの適用処理があります。フローアクションは 6 つ。ファイル名はハードコードされていません。監視対象フォルダにあるすべての PDF ファイルは、新しいファイルが到着した瞬間に結合され、出力名にはファイル数が含まれるため、各実行が一意に識別されます。

流れの概要
1. When a file is created
Dropbox trigger on /blog data/merge files dropbox. Fires the moment any file lands.
2. List files in folder
Dropbox action on the same folder. Returns every current file as an array of metadata objects.
3. Initialize variable
Name Files, Type Array. Buffer for the binary content of every file.
4. Apply to each
Loop body(List_files_in_folder). Inside, Get file content by Id, then Append to array with base64ToBinary on $content.
5. Merge multiple PDFs
PDF4me action. Body/docContent the Files array, Output File Name Output.pdf. One consolidated PDF out.
6. Create file
Dropbox /blog data/merge blog template/output. File Name expression concat(merge-, length(List_files_in_folder), .pdf).
要約版

A ファイルが作成されると Dropboxのトリガーは、新しいファイルがアップロードされるたびに作動します。 フォルダ内のファイル一覧 現在フォルダ内にあるすべてのファイルのスナップショットを返します(今回の実行では、4 つの PDF ファイルです)。 PDF_Sample.pdf、 sample_3_page.pdf、 sample_pdf.pdf、 sample.pdf) Apply to each ループはリストを走査し、呼び出します。 ファイルの内容を取得する Id によって、そしてプッシュします base64ToBinary(body('Get_file_content')?['$content']) 配列変数に ファイルPDF4meの 複数のPDFファイルを結合する 配列を消費し、1つのPDFを出力します。Dropbox ファイルを作成する 書き戻すと merge-4.pdf入力ファイルが4つあったためです。明日5つ目のファイルを追加すると、次の実行で次の結果が得られます。 merge-5.pdf 自動的に。

なぜ?という問いに対する質疑応答​

トリガーとフォルダ内のファイル一覧表示を一緒に使用する理由は何ですか? このトリガーは、新規ファイルイベントを1つだけ提供しますが、フォルダ内の他のすべてのファイルの最新リストを保証するものではありません。 フォルダ内のファイル一覧 実行時に現在の状態をスナップショットするため、マージは常に、トリガーが発火した時やフローが設計された時の状態ではなく、現在ディスク上に存在する状態を正確に反映します。

パスではなくIDで取得する理由は何ですか? ファイル名は衝突したり変更されたりする可能性があります。Dropbox IDは安定しており、一意であり、名前変更の影響を受けません。マッピング ID リストファイルから ファイルの内容を取得する これは、ユーザーがバッチ処理の途中でファイルの名前を変更した場合や、異なるサブフォルダに同じ表示名を持つファイルが2つあった場合でも、ループが動作し続けることを意味します。

なぜ base64ToBinary(...) の上 $content? Dropbox ファイルの内容を取得する ファイルをbase64文字列として返します。 $content プロパティ。PDF4me の「複数の PDF ファイルを結合」アクションは、base64 文字列ではなく、バイナリ バッファのコレクションを想定しています。 base64ToBinary(body('Get_file_content')?['$content']) これは、ファイルが配列に格納された瞬間に各ファイルを変換するブリッジです。

出力ファイル名を構築する理由 concat() そして 長さ()? ハードコーディング 出力.pdf つまり、実行するたびに前回のデータが上書きされるということです。 concat('merge-', string(length(body('List_files_in_folder'))), '.pdf') ファイル数を名前にスタンプするため、連続実行は merge-3.pdf、 merge-4.pdf、 merge-5.pdf補足:出力フォルダをざっと見れば、毎回いくつのファイルが対象になったかがわかります。


得られるもの​

入力: Dropboxフォルダ /blog data/merge files dropbox そこにドロップしたPDFファイルをすべて格納できます。このチュートリアルでは、次の4つの例を使用します。 PDFA_Sample.pdf、 sample_3_page.pdf、 sample_pdf.pdf、 sample.pdf。 出力: 単一の統合PDF /blog data/merge blog template/output/ 名前 merge-N.pdf どこ N これは実行時のファイル数です。さらにファイルを追加すると、次回の実行時に自動的にそれらが認識されます。

ランニング前のDropboxフォルダ​

Dropboxフォルダ /blog data/merge files には、名前順に並べられた4つのPDFファイルがあります: PDFA_Sample.pdf 16.5 KB、sample_3_page.pdf 2.48 KB、sample_pdf.pdf 2.14 KB、sample.pdf 97.67 KB。すべて「アクセス権限」は「あなたのみ」に設定されています。

実行後のDropboxフォルダ​

Dropbox 出力フォルダには merge-3.pdf (37.22 KB) と merge-4.pdf (110.78 KB) がリストされています。各出力ファイル名は、フロー実行時に対象となっていたファイルの数に基づいています。

2回目の実行ではフォルダ内に4つのファイルがあったので、出力は次のようになります。 merge-4.pdf以前のシリーズでは3つありました。


必要なもの​

  • パワーオートマタ。 Power Automateを開くプレミアムコネクタ付きのプラン(PDF4me Connectはプレミアムプランです)。
  • PDF4me APIキー。 APIキーを取得してくださいPDF4meアクションを初めて追加する際に接続してください。
  • Dropbox入力PDFのソースフォルダ、結合された出力の保存先フォルダを指定します。SharePoint、OneDrive、Google Driveは、それぞれのコネクタと全く同じように動作します。
  • 数個のPDFファイルサイズや組み合わせは自由です。このチュートリアルでは、以下の4つのサンプルを使用します。 PDF_Sample.pdf、 sample_3_page.pdf、 sample_pdf.pdf、 sample.pdfそれらをドロップインして、すべてのスクリーンショットをミラーリングします。

まず、入力セットと期待される出力を取得します。 4つのサンプルをダウンロードして /blog データ/マージファイル ドロップボックス Dropbox に保存してから、フローを公開します。最初の実行では、 merge-4.pdf ここにリンクされているものと全く同じです。


フローの概要​

  1. Dropbox: ファイルが作成されたとき (トリガー)。
  2. Dropbox: フォルダ内のファイル一覧を表示する監視対象フォルダ内の現在すべてのファイルを返します。
  3. 変数を初期化する 名前 Files (配列)。
  4. それぞれに適用する の上 body('List_files_in_folder'):
    • Dropbox: ファイルコンテンツを取得する による Id。
    • 配列変数に追加 と base64ToBinary(body('Get_file_content')?['$content'])。
  5. PDF4me:複数のPDFファイルを1つのPDFファイルに結合する。 Files で、 Output.pdf 外。
  6. Dropbox: ファイルの作成。 ファイル名 concat('merge-', string(length(body('List_files_in_folder'))), '.pdf')。

フローの概要全体​

Power Automate フローキャンバスには、上から下に積み重ねられた 6 つのアクションが表示されています: ファイルが作成されたとき、フォルダー内のファイルを一覧表示、変数を初期化、各ファイルに適用、ファイルの内容を取得して配列変数に追加 (4 回繰り返し)、複数の PDF ファイルを 1 つの PDF ファイルにマージ、ファイルの作成

6つのアクション。各カードに適用すると「1/4」と表示されますが、これは実行時に監視対象フォルダに4つのPDFファイルが含まれていたためです。


ステップ1:Dropbox:ファイルが作成されたとき(トリガー)​

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

  1. で パワーオートマタ クリック 作成する、 選ぶ 自動化されたクラウドフロー。
  2. フローに名前を付けます(例: Auto-Merge Dropbox Folder)、 選ぶ Dropbox: ファイルが作成されたとき トリガーとしてクリック 作成する。
  3. 接続する まだDropboxに登録していない場合は、登録してください。
  4. 設定する:
    • フォルダ: /blog data/merge files dropbox
    • 詳細パラメータデフォルト設定のままにします(1件中0件表示)。

トリガー設定​

Power Automate Dropbox ファイルが作成されたときのトリガー、フォルダーは /blog data/merge files dropbox に設定され、詳細パラメーターは折りたたまれ、1 件中 0 件が表示されています。Dropbox に接続済み。

トリガーは監視対象フォルダをポーリングし、新しいファイルがアップロードされるたびに作動します。デフォルトのポーリング間隔はプランによって異なりますが、通常は1~5分です。


ステップ2:Dropbox:フォルダ内のファイル一覧を表示する​

これまでの流れ: トリガープラス:フォルダ内のファイル一覧を表示します。

トリガーは新規ファイル1つで起動します。マージ処理には、フォルダ内の現在すべてのPDFファイルが必要です。 フォルダ内のファイル一覧 実行時にフォルダの内容の最新のスナップショットを取得します。

  1. クリック + 新しいステップ、 検索 Dropbox、 選ぶ フォルダ内のファイル一覧。
  2. 設定する:
    • フォルダ: /blog data/merge files dropbox (トリガーと同じ経路)

ファイル構成の一覧表示​

Power AutomateのDropboxフォルダ内のファイル一覧表示アクション(フォルダは/blog data/merge files dropboxに設定、Dropboxに接続済み)
  1. アクションが再開 body('List_files_in_folder')ファイルメタデータオブジェクトの配列。各オブジェクトは Id、 Name、 DisplayName、 Path、 LastModified、 そして Size次のステップでは、この配列を反復処理します。

ヒント。 フォルダーに混合コンテンツ(PDF、画像、Office ドキュメントなど)があり、PDF のみを結合したい場合は、 フィルタ配列 このステップの後に式を使用してアクションを実行します endsWith(toLower(item()?['Name']), '.pdf') そして、フィルタリングされた配列をループに渡す。


ステップ3:変数ファイルの初期化​

これまでの流れ: トリガー、ファイル一覧表示、変数初期化。

マージ処理ではバイナリファイルのコレクションが必要です。それらを収集するための空の配列を割り当ててください。

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

変数設定を初期化する​

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

ステップ4:各項目に適用し、ファイルコンテンツを取得して配列に追加する​

これまでの流れ: トリガー、ファイル一覧表示、変数初期化、各項目への適用。

これがフローの中核です。スナップショットが返したすべてのファイルをループし、そのバイトを取得し、バイナリに変換し、プッシュします。 Files。

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

  1. クリック + 新しいステップ、 選ぶ それぞれに適用する。
  2. 設定する:
    • 前の手順から出力を選択します (表現): body('List_files_in_folder')
Power Automate の各アクションに適用し、前のステップからの出力の選択を式 body オープンクォート List_files_in_folder クローズクォート クローズ括弧に設定します。表示される Body トークンは List files in folder からのものです。

ステップ4b:ファイルの内容を取得する(ループ内)​

  1. ループの内側をクリック アクションを追加する、 選ぶ Dropbox: ファイルコンテンツを取得する。
  2. 設定する:
    • ファイル: 選ぶ ID フォルダー内のファイル一覧から取得したトークン(動的コンテンツ)(現在のアイテムのIDに自動的に解決されます)。
    • コンテンツタイプを推測する: Yes (詳細設定項目内)
Power Automate Dropbox の「ファイルコンテンツを取得」アクションで、File を「フォルダー内のファイル一覧」からの Id トークンに設定し、詳細パラメーター「コンテンツタイプの推測」を「はい」に設定すると、右側に動的コンテンツパネルが開き、「フォルダー内のファイル一覧」からの Id、名前、表示名、パス、最終更新日時、サイズのトークンが表示されます。

ステップ4c:配列変数に要素を追加する(ループ内)​

  1. 以下、ファイルのコンテンツを取得します。 アクションを追加する、 選ぶ 配列変数に追加。
  2. 設定する:
    • 名前: Files
    • 価値 (表現、クリック) fx): base64ToBinary(body('Get_file_content')?['$content'])
Power Automate の「各に適用」ループ内の配列変数に追加、ファイル名、式に設定された値 base64ToBinary 本体、開始引用符、Get_file_content、終了引用符、閉じ括弧、疑問符、ドル記号、コンテンツ、閉じ括弧が式エディターに表示されます

これが全てを結びつける唯一の線だ。 Dropboxは各ファイルを次のように返します { "$content": "<base64 string>", "$content-type": "application/pdf" }マージ処理にはバイナリバッファが必要です。 base64ToBinary(...) の上 $content 両者を橋渡しします。変換とマージアクションのエラー「無効なコンテンツ」をスキップします。


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

これまでの流れ: トリガー、ファイル一覧表示、変数初期化、各項目への適用、複数のPDFの結合。

配列全体が入力され、1つのPDFファイルが出力される。

  1. 「各ループに適用」の下にある + 新しいステップ、 検索 PDF4me、 選ぶ 複数のPDFファイルを1つのPDFファイルに結合する。
  2. 接続する PDF4meにAPIキーで接続します(初回のみ)。
  3. 設定する:
    • 本文/ドキュメントコンテンツ: 選ぶ Files 変数トークン
    • 出力ファイル名: Output.pdf

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

Power Automate PDF4me 複数の PDF ファイルを 1 つの PDF ファイルに結合アクションでは、Body/docContent を Files 変数に設定し、出力ファイル名を Output.pdf に設定します。動的コンテンツ パネルが開き、変数 Files、各項目に適用、現在の項目、フォルダー内のファイル一覧、Body が表示されます。
  1. PDFファイルは連結されています 配列の順序これはDropboxが返送した順序です(通常は名前のアルファベット順)。別の順序が必要な場合は、並べ替えてください。 body('List_files_in_folder') と共に 選択 ループ前のアクション、例えば LastModified 新しい順で表示します。

ヒント。 内部 出力.pdf name は PDF のメタデータのタイトルであり、Dropbox のファイル名ではありません。実際の Dropbox 名は手順 6 で設定します。Power Automate の実行履歴でフローの実行を grep できるように、この名前を安定したプレースホルダーとして保持してください。


ステップ6:Dropbox:動的なファイル名でファイルを作成する​

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

ファイル数を含んだ実行時計算によるファイル名で、結合されたPDFファイルをDropboxに書き戻します。

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

ファイル名式​

Power Automate Dropbox ファイル作成アクション フォルダーパス /blog data/merge blog template/output、ファイル名式 concat 括弧 merge ダッシュ カンマ 文字列 括弧の長さ 括弧本体 引用符 List_files_in_folder 引用符 括弧 括弧 カンマ ドット PDF 括弧、マージアクションからのファイルコンテンツ

最終行動準備完了​

Power Automate Dropbox ファイル作成アクション (フォルダー パス /blog data/merge blog template/output、ファイル名トークン連結式、複数の PDF ファイルを 1 つの PDF ファイルにマージするアクションからのファイル コンテンツ トークン、ファイル コンテンツ、ヘッダー/ファイル名、ヘッダー/ページ数トークンを表示する動的コンテンツ パネル)

同じ表現は、 ヘッダー/ページ数 マージ出力では、統合されたPDFが何ページになるかを記録したい場合に便利です。

ヒント。 ファイル数ではなく日付で実行結果を記録したい場合は、式を次のように置き換えてください。 concat('merge-', utcNow('yyyy-MM-dd-HHmmss'), '.pdf')ファイルは次のように着陸します merge-2026-06-12-094501.pdf そして再放送は決して重ならない。


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

  1. 保存 右上の流れ。
  2. ファイルを(4つ)ドロップして /blog data/merge files dropbox何でも構いません。ポーリング間隔によって、数分以内にトリガーが作動します。
  3. 開く 実行履歴 右上のボタンをクリックすると、アクションが緑色に変わります。「各項目に適用」をクリックすると、フォルダに4つのファイルがある場合は「1/4」のように、正しい反復回数が表示されます。
  4. Dropboxを開く /blog data/merge blog template/output/. という名前のファイル merge-4.pdf 待機中です。開いてください。入力フォルダ内のすべてのPDFファイルが1つのドキュメントに結合されます。

実際に何を作ったのですか? 新規アップロードのたびに自動的に処理を行い、実行時にフォルダ全体の状態を読み取り、すべてのファイルを含む一意の名前のPDFファイルを作成する、ゼロタッチ統合パイプラインです。ハードコードされたリスト、スケジュールされたバッチジョブ、手動クリックは一切不要です。同じパターンで、4つのPDFファイルでも400個のPDFファイルでも、変更なしで処理できます。この同じレシピは、Make(Dropboxリストファイルのイテレータ)とZapier(ZapierによるFind Fileの結果のループ処理)の両方で動作します。


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

PDFのみに絞り込む
挿入 フィルタ配列 ステップ2とステップ3の間のアクション endsWith(toLower(item()?['Name']), '.pdf')ループは、.docx、.png、およびフォルダ内のその他のファイルをすべて無視します。
新しい順に並べ替え
追加する 選択 リストをマッピングしてソートするアクション sort(body('フォルダ内のファイル一覧'), '最終更新日'). 逆 逆行する(...) 統合されたPDFの先頭に最新の情報を表示したい場合。
結合後にPDF/Aに変換する
PDF4meを挿入 PDF/A を作成する ステップ5とステップ6の間はコンプライアンスに準拠しています PDF/A-2bDropboxに保存される出力ファイルは、ISO 19005アーカイブ規格に準拠するようになりました。
アーカイブソースファイル
ステップ6の後にもう1つ追加します それぞれに適用する ファイル一覧を表示してDropboxを呼び出す ファイルの移動 各入力をプッシュして /処理済み次回の実行では、最新のアップロードのみが表示されます。

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

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

配列に追加 価値 式はラップされていません base64ToBinary(...)変換を行わないと、配列にはバイナリバッファではなくbase64文字列が格納され、PDF4meはそれを拒否します。配列に追加を再度開き、式エディタに切り替えて貼り付けます。 base64ToBinary(body('Get_file_content')?['$content']) 原文のまま。

各実行に0回適用します

トリガーは発火しましたが、List files は空の配列を返しました。トリガーと List files を確認してください。 フォルダ 値は同一です。パスの不一致(片方に末尾のスラッシュがあり、もう片方にない)がよくある原因です。

ファイル名は次のように表示されます。 merge-.pdf

の 長さ() 設計時に呼び出しが解決されませんでした。式を貼り付けたことを確認してください。 ファイル名 分野を通じて FX 式エディタで表示してください。プレーンテキストでは表示されません。プレーンテキストでは中括弧が文字として扱われ、関数が実行されません。

出力は前回の実行結果を上書きします

同じファイル数で2回連続して実行すると、同じ名前が生成されます(merge-4.pdf) 式をタイムスタンプに置き換える (concat('merge-', utcNow('yyyy-MM-dd-HHmmss'), '.pdf')) または GUID を追加 guid()。


次のステップ​

同じ6ステップのパターン(監視、リスト化、配列へのループ処理、マージ、実行時名での保存)で、あらゆる「フォルダへの反応」自動化処理に対応できます。明日新しいファイルをドロップすれば、実行時に自動的に認識されます。編集も再デプロイも不要です。