Passa al contenuto principale

Unione automatica di tutti i PDF trascinati in una cartella Dropbox in Power Automate: un flusso di lavoro dinamico in 6 fasi

· 25 minuti di lettura
SEO and Content Writer

La parte dolorosa dei ticket "unisci questi PDF" non è l'unione, è sapere cosa c'è nella cartella in fase di esecuzione. I nomi cambiano, i file vanno e vengono, qualcuno aggiunge un quinto documento alle 16:55. Questa procedura dettagliata crea lo schema esatto in Power Automate con PDF4me: Unisci più file PDF, Dropboxe un singolo Apply per ogni ciclo. Sei azioni di flusso. Nessun nome file hardcoded. Ogni PDF attualmente presente nella cartella monitorata viene unito nel momento in cui viene aggiunto un nuovo file e il nome di output contiene il conteggio del file in modo che ogni esecuzione sia identificabile in modo univoco.

Il flusso in sintesi
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).
La versione breve

UN Quando viene creato un file Il trigger di Dropbox si attiva ad ogni nuovo caricamento. Elenca i file nella cartella restituisce un'istantanea di ogni file attualmente presente nella cartella (in questa esecuzione, quattro PDF: PDF_Sample.pdf, esempio_3_pagina.pdf, sample_pdf.pdf, esempio.pdf). Un'applicazione ad ogni ciclo percorre quell'elenco, chiama Ottieni il contenuto del file tramite Id e spinge base64ToBinary(body('Get_file_content')?['$content']) su una variabile array denominata File. PDF4me Unire più file PDF consuma l'array ed emette un PDF. Dropbox Crea file lo riscrive come merge-4.pdf, perché c'erano quattro file di input. Aggiungi un quinto file domani e la prossima esecuzione produce merge-5.pdf automaticamente.

Domande e risposte basate sul "perché"

Perché utilizzare insieme il trigger e l'elenco dei file nella cartella? Il trigger genera un singolo evento di creazione di un nuovo file, ma non garantisce un elenco aggiornato di tutto il resto presente nella cartella. Elenca i file nella cartella Cattura lo stato corrente in fase di esecuzione, quindi l'unione riflette sempre esattamente ciò che è presente sul disco in quel momento, non ciò che era presente quando si è attivato il trigger o quando è stato progettato il flusso.

Perché recuperare i dati tramite ID invece che tramite percorso? I nomi dei file possono entrare in conflitto o cambiare. Gli ID di Dropbox sono stabili, univoci e immuni alla ridenominazione. Mappatura Id da Elenca file in Ottieni il contenuto del file significa che il ciclo continua a funzionare anche se un utente rinomina un file a metà dell'elaborazione o se due file hanno lo stesso nome visualizzato in sottocartelle diverse.

Perché base64ToBinary(...) SU $content? Dropbox Ottieni il contenuto del file restituisce il file come stringa base64 racchiusa in un $content proprietà. L'azione "Unisci più file PDF" di PDF4me si aspetta una raccolta di buffer binari, non stringhe base64. base64ToBinary(body('Get_file_content')?['$content']) è il ponte che converte ogni file nel momento in cui arriva nell'array.

Perché costruire il nome del file di output con concat() E lunghezza()? Codifica rigida Output.pdf significa che ogni esecuzione sovrascrive la precedente. concat('merge-', string(length(body('List_files_in_folder'))), '.pdf') imprime il conteggio del file nel nome, in modo che le esecuzioni consecutive appaiano come merge-3.pdf, merge-4.pdf, merge-5.pdfBonus: una rapida occhiata alla cartella di output ti dice quanti file erano inclusi ogni volta.


Cosa riceverai

Ingresso: Una cartella Dropbox a /blog data/merge files dropbox Contiene tutti i file PDF che ci inserisci. Questa guida ne utilizza quattro: PDFA_Sample.pdf, sample_3_page.pdf, sample_pdf.pdf, sample.pdf. Produzione: Un unico PDF consolidato in /blog data/merge blog template/output/ denominato merge-N.pdf Dove N indica il numero di file al momento dell'esecuzione. Trascina altri file e l'esecuzione successiva li rileverà automaticamente.

La cartella Dropbox prima dell'esecuzione

Cartella Dropbox /blog data/merge files Elenco di Dropbox di quattro PDF ordinati per nome: PDFA_Sample.pdf 16,5 KB, sample_3_page.pdf 2,48 KB, sample_pdf.pdf 2,14 KB, sample.pdf 97,67 KB, tutti impostati su Accesso solo a te

La cartella Dropbox dopo l'esecuzione

Elenco delle cartelle di output di Dropbox: merge-3.pdf (37,22 KB) e merge-4.pdf (110,78 KB), ciascun output denominato in base al numero di file inclusi nell'ambito del flusso durante l'esecuzione.

La seconda esecuzione aveva quattro file nella cartella, quindi l'output è merge-4.pdf. La corsa precedente ne aveva tre.


Di cosa hai bisogno

  • Power Automate. Open Power AutomateQualsiasi piano con connettori premium (PDF4me Connect è un piano premium).
  • Chiave API di PDF4me. Ottieni la tua chiave APICollegalo la prima volta che aggiungi un'azione PDF4me.
  • DropboxCartella di origine per i PDF di input, cartella di destinazione per l'output unito. SharePoint, OneDrive e Google Drive funzionano in modo identico con i rispettivi connettori.
  • Una manciata di PDFQualsiasi dimensione, qualsiasi combinazione. La procedura guidata utilizza quattro esempi: PDF_Sample.pdf, esempio_3_pagina.pdf, sample_pdf.pdf, esempio.pdf. Trascinali per replicare ogni screenshot.

Prendi prima l'insieme di input e l'output previsto. Scarica i quattro campioni in /blog data/merge files dropbox sul tuo Dropbox, quindi pubblica il flusso. La tua prima esecuzione dovrebbe produrre un merge-4.pdf identico a quello collegato qui.


Il flusso in sintesi

  1. Dropbox: Quando viene creato un file (grilletto).
  2. Dropbox: Elenca i file nella cartellaRestituisce tutti i file attualmente presenti nella cartella monitorata.
  3. Inizializza variabile denominato Files (Vettore).
  4. Applicare a ciascuno SU body('List_files_in_folder'):
    • Dropbox: Ottieni il contenuto del file di Id.
    • Aggiungi alla variabile array con base64ToBinary(body('Get_file_content')?['$content']).
  5. PDF4me: Unisci più file PDF in un unico file PDF. Files In, Output.pdf fuori.
  6. Dropbox: crea fileNome del file concat('merge-', string(length(body('List_files_in_folder'))), '.pdf').

Panoramica completa del flusso

Diagramma di flusso di Power Automate che mostra sei azioni impilate dall'alto verso il basso: Quando viene creato un file, Elenca i file nella cartella, Inizializza variabile, Applica a ciascuno contenente Ottieni il contenuto del file e Aggiungi alla variabile array iterando 4 volte, Unisci più file PDF in un singolo file PDF, Crea file

Sei azioni. L'opzione "Applica a ciascuna scheda" mostra "1 di 4" perché la cartella monitorata conteneva quattro file PDF al momento dell'esecuzione.


Passaggio 1: Dropbox: Quando viene creato un file (Attivatore)

Flusso finora: Solo attivazione.

  1. In Power Automate clic Creare, scegliere Flusso di nuvole automatizzato.
  2. Assegna un nome al flusso (ad esempio Auto-Merge Dropbox Folder), scegliere Dropbox: Quando viene creato un file come trigger, fai clic Creare.
  3. Collegare Se non l'hai già fatto, usa Dropbox.
  4. Specificare:
    • Cartella: /blog data/merge files dropbox
    • Parametri avanzati: lascia l'impostazione predefinita (0 di 1 visualizzati).

Configurazione del trigger

Power Automate Dropbox Quando viene creato un file, trigger con cartella impostata su /blog data/merge files dropbox e parametri avanzati compressi che mostrano 0 di 1, Connesso a Dropbox

Il trigger esegue il polling della cartella monitorata e si attiva a ogni nuovo caricamento. La frequenza di polling predefinita varia a seconda del piano, in genere da 1 a 5 minuti.


Passaggio 2: Dropbox: Elenca i file nella cartella

Flusso finora: Attiva più Elenca i file nella cartella.

L'evento si attiva su un singolo nuovo file. L'unione richiede tutti i file PDF attualmente presenti nella cartella. Elenca i file nella cartella crea un'istantanea aggiornata del contenuto della cartella in fase di esecuzione.

  1. Fare clic + Nuovo passo, ricerca Dropbox, scegliere Elenca i file nella cartella.
  2. Specificare:
    • Cartella: /blog data/merge files dropbox (lo stesso percorso del trigger)

Elenco dei file di configurazione

Power Automate Dropbox Elenca i file nella cartella con l'azione impostata su /blog data/merge files dropbox, Connesso a Dropbox
  1. L'azione ritorna body('List_files_in_folder'), un array di oggetti di metadati di file. Ogni oggetto contiene Id, Name, DisplayName, Path, LastModified, E SizeIl passaggio successivo consiste nell'iterare questo array.

Mancia. Se la cartella contiene contenuti misti (PDF insieme a immagini e documenti di Office) e si desidera unire solo i PDF, aggiungere un matrice di filtri azione dopo questo passaggio con l'espressione endsWith(toLower(item()?['Name']), '.pdf') e inserire invece l'array filtrato nel ciclo.


Passaggio 3: Inizializzare i file delle variabili

Flusso finora: Attiva più Elenca file più Inizializza variabile.

L'operazione di unione richiede una raccolta di file binari. Alloca un array vuoto per raccoglierli.

  1. Fare clic + Nuovo passo, scegliere Inizializza variabile.
  2. Specificare:
    • Nome: Files
    • Tipo: Array
    • Valore: lasciare vuoto

Inizializza la configurazione variabile

Azione di inizializzazione variabile di Power Automate configurata con Nome file e Tipo array e un campo Valore vuoto

Passaggio 4: Applica a ciascuno più Ottieni contenuto file più Aggiungi all'array

Flusso finora: Attiva più Elenca file più Inizializza variabile più Applica a ciascuno.

Questo è il cuore del flusso. Esegui un ciclo su ogni file restituito dallo snapshot, recupera i suoi byte, converti in binario, invia su Files.

Passaggio 4a: Applicare a ciascuno (selezionare la fonte)

  1. Fare clic + Nuovo passo, scegliere Applicare a ciascuno.
  2. Specificare:
    • Seleziona un output dai passaggi precedenti (espressione): body('List_files_in_folder')
Power Automate Applica a ogni azione con Seleziona un output dai passaggi precedenti impostato su corpo dell'espressione apri virgolette Elenca_file_nella_cartella chiudi virgolette chiudi parentesi, il token Corpo da Elenca file nella cartella mostrata

Passaggio 4b: Ottenere il contenuto del file (all'interno del ciclo)

  1. All'interno del ciclo fai clic Aggiungi un'azione, scegliere Dropbox: Ottieni il contenuto del file.
  2. Specificare:
    • File: scegli il Id token dall'elenco dei file nella cartella del contenuto dinamico (si risolve automaticamente nell'ID dell'elemento corrente).
    • Dedurre il tipo di contenuto: Yes (nelle impostazioni avanzate)
Azione Power Automate Dropbox Ottieni contenuto file con File impostato sul token Id da Elenca file nella cartella, parametro Avanzate Inferisci tipo di contenuto Sì, pannello contenuto dinamico aperto a destra che mostra i token Id, Nome, Nome visualizzato, Percorso, Ultima modifica, Dimensione da Elenca file nella cartella

Passaggio 4c: Aggiungere alla variabile array (all'interno del ciclo)

  1. Di seguito, ottieni il contenuto del file. Aggiungi un'azione, scegliere Aggiungi alla variabile array.
  2. Specificare:
    • Nome: Files
    • Valore (espressione, clic) fx): base64ToBinary(body('Get_file_content')?['$content'])
Power Automate Aggiungi alla variabile array all'interno di Applica a ogni ciclo, Nome File, Valore impostato sull'espressione base64ToBinary corpo virgolette aperte Get_file_content virgolette chiuse parentesi chiuse domanda dollaro contenuto parentesi chiusa mostrato nell'editor di espressioni

Questa è la frase che lega tutto insieme. Dropbox restituisce ogni file come { "$content": "<base64 string>", "$content-type": "application/pdf" }L'operazione di unione richiede un buffer binario. base64ToBinary(...) SU $content collega i due. Salta la conversione e l'azione di unione che genera errori con "contenuto non valido".


Passaggio 5: PDF4me: Unire più file PDF in un unico file PDF

Flusso finora: Attiva più Elenca file più Inizializza variabile più Applica a ciascuno più Unisci più PDF.

L'intera matrice viene inserita e ne esce un unico file PDF.

  1. Sotto "Applica a ogni ciclo" fai clic + Nuovo passo, ricerca PDF4me, scegliere Unire più file PDF in un unico file PDF.
  2. Collegare PDF4me Connettiti con la tua chiave API (solo la prima volta).
  3. Specificare:
    • Corpo/docContenuto: scegli il Files token variabile
    • Nome del file di output: Output.pdf

Configurazione dell'azione di unione

Power Automate PDF4me Unisci più file PDF in un unico file PDF azione con Body/docContent impostato sulla variabile Files e nome file di output Output.pdf, pannello contenuto dinamico aperto che mostra Variabili File, Applica a ciascuno, Elemento corrente, Elenca file nella cartella, Corpo
  1. I PDF sono concatenati in ordine dell'array, che è l'ordine in cui Dropbox li ha restituiti (in genere alfabetico per nome). Se hai bisogno di un ordine diverso, ordina body('List_files_in_folder') con un Selezionare azione prima del ciclo, ad esempio tramite LastModified per i più recenti.

Mancia. L'interno Output.pdf Il nome è solo il titolo dei metadati del PDF, non il nome del file di Dropbox. Il nome reale di Dropbox viene impostato al passaggio 6. Mantieni questo valore come segnaposto stabile in modo da poterlo utilizzare per cercare le esecuzioni del flusso nella cronologia di Power Automate.


Passaggio 6: Dropbox: crea un file con un nome file dinamico

Flusso finora: Attiva più Elenca file più Inizializza variabile più Applica a ciascuno più Unisci più PDF più Crea file.

Salva il PDF unito nuovamente su Dropbox con un nome file calcolato in fase di esecuzione che includa il numero di file.

  1. Fare clic + Nuovo passo, scegliere Dropbox: Crea file.
  2. Specificare:
    • Percorso cartella: /blog data/merge blog template/output
    • Nome del file (espressione, clic) fx): concat('merge-', string(length(body('List_files_in_folder'))), '.pdf')
    • Contenuto del file: scegli il Contenuto del file token dall'azione Unisci più PDF

espressione del nome del file

Power Automate Dropbox Crea azione file Percorso cartella /blog data/merge blog template/output, Nome file espressione concat parentesi aperta merge trattino virgola stringa parentesi aperta lunghezza parentesi aperta corpo virgoletta aperta Elenco_file_nella_cartella virgoletta chiusa parentesi chiusa parentesi chiusa virgola punto pdf parentesi chiusa, Contenuto del file dall'azione merge

Pronti per l'azione finale

Azione Power Automate Dropbox Crea file con percorso cartella /blog data/merge blog template/output, token Nome file espressione concat, token Contenuto file dall'azione Unisci più file PDF in un singolo file PDF, pannello di contenuto dinamico che mostra Contenuto file, intestazioni/Nome file, intestazioni/Codice pagina token

La stessa espressione espone anche intestazioni/Numero di pagine sull'output di unione, utile se si desidera registrare il numero di pagine del PDF consolidato.

Mancia. Se preferisci contrassegnare l'esecuzione con una data anziché con un conteggio dei file, sostituisci l'espressione con concat('merge-', utcNow('yyyy-MM-dd-HHmmss'), '.pdf'). I file atterrano come merge-2026-06-12-094501.pdf e le repliche non si sovrappongono mai.


Esegui il flusso e verifica

  1. Salva il flusso in alto a destra.
  2. Inserisci un file (o quattro) in /blog data/merge files dropboxVa bene qualsiasi cosa, l'intervallo di polling fa scattare l'allarme entro un paio di minuti.
  3. Apri il Cronologia delle esecuzioni in alto a destra e osserva le azioni diventare verdi. Applica a ciascuno dovrebbe mostrare il conteggio corretto delle iterazioni, "1 di 4" se nella cartella sono presenti quattro file.
  4. Apri Dropbox all'indirizzo /blog data/merge blog template/output/Un file denominato merge-4.pdf è in attesa. Aprilo, tutti i PDF dalla cartella di input verranno uniti in un unico documento.

Che cosa hai costruito esattamente? Una pipeline di consolidamento automatica che reagisce a ogni nuovo caricamento, legge l'intero stato della cartella in fase di esecuzione e crea un singolo PDF con un nome univoco contenente tutti i file presenti. Nessun elenco codificato manualmente, nessun processo batch pianificato, nessun clic manuale. Lo stesso schema gestisce 4 o 400 PDF senza alcuna modifica. La stessa procedura funziona in Make (Iteratore sull'elenco di file di Dropbox) e Zapier (Ciclo di Zapier sui risultati di Ricerca file).


Varianti comuni che puoi aggiungere senza dover ricostruire

Filtra solo per file PDF
Inserisci un matrice di filtri azione tra la fase 2 e la fase 3 con endsWith(toLower(item()?['Name']), '.pdf')Il ciclo ignora quindi i file .docx, .png e qualsiasi altro tipo di file presente nella cartella.
Ordina per data di pubblicazione (dal più recente al meno recente).
Aggiungi un Selezionare azione che mappa l'elenco e ordina con ordina(corpo('Elenca_file_nella_cartella'), 'Ultima modifica'). Invertire con inversione(...) se desideri che i file più recenti vengano visualizzati in cima al PDF unito.
Converti in PDF/A dopo l'unione
Inserisci PDF4me Crea PDF/A tra la fase 5 e la fase 6 con Compliance PDF/A-2bL'output che viene caricato su Dropbox è ora conforme allo standard di archiviazione ISO 19005.
File sorgente dell'archivio
Dopo il passaggio 6 aggiungine un altro Applicare a ciascuno Elenca i file e chiama Dropbox Spostare il file per spingere ogni input in /elaborato. La successiva esecuzione visualizzerà solo i file caricati di recente.

Risoluzione dei problemi

Errori nell'azione di unione con "contenuto non valido"

Aggiungi all'array Valore l'espressione non è racchiusa in base64ToBinary(...)Senza la conversione, l'array contiene stringhe base64 anziché buffer binari e PDF4me le rifiuta. Riapri Aggiungi all'array, passa all'editor di espressioni e incolla. base64ToBinary(body('Get_file_content')?['$content']) parola per parola.

Applicare a ogni esecuzione zero volte

Il trigger è stato attivato, ma l'elenco dei file ha restituito un array vuoto. Controlla il trigger e l'elenco dei file. Cartella I valori sono identici. Le discrepanze nei percorsi (uno con una barra finale, l'altro senza) sono una causa comune.

Il nome del file risulta essere merge-.pdf

IL lunghezza() La chiamata non si è risolta in fase di progettazione. Assicurati di aver incollato l'espressione nel Nome del file campo tramite il effetti speciali Editor di espressioni, non come testo semplice. Il testo semplice lascia le parentesi graffe come caratteri letterali e la funzione non viene mai eseguita.

L'output sovrascrive l'esecuzione precedente

Due esecuzioni consecutive con lo stesso numero di file producono nomi identici (merge-4.pdf). Oppure scambia l'espressione con un timestamp (concat('merge-', utcNow('yyyy-MM-dd-HHmmss'), '.pdf')) o aggiungere un GUID con guid().


Prossimi passi

Lo stesso schema in sei fasi (monitora, poi elenca, poi esegui un ciclo su un array, poi unisci, poi salva con un nome di runtime) gestisce qualsiasi automazione "reagisci a una cartella". Aggiungi un nuovo file domani, l'esecuzione lo rileverà. Nessuna modifica, nessuna nuova distribuzione.