Vuoi trasformare ogni risposta inviata a un questionario Microsoft Forms in un PDF e recapitarlo automaticamente all’indirizzo indicato dal compilatore? In questa guida crei un flusso Power Automate completo, con due metodi (Word o HTML), archivio centrale e instradamento dinamico degli indirizzi.
Panoramica della soluzione
L’obiettivo è semplice: ad ogni invio di una risposta su Microsoft Forms, Power Automate genera un documento con i contenuti del modulo, lo converte in PDF, lo archivia su OneDrive o SharePoint e lo invia via e‑mail a un destinatario variabile (ad esempio l’indirizzo fornito dallo stesso compilatore o un indirizzo calcolato in base alle risposte).
Il flusso si compone di cinque blocchi logici:
- Trigger: When a new response is submitted di Microsoft Forms.
- Raccolta dati: Get response details per ottenere tutte le risposte come contenuto dinamico.
- Composizione documento: due approcci consigliati:
- Modello Word con segnaposto (content controls), popolato con le risposte.
- HTML → PDF con un connettore di conversione dedicato (Encodian, Plumsail, Adobe PDF Services) per flussi essenziali e senza template.
- Conversione in PDF: Convert file (da Word a PDF) oppure azione del connettore scelto.
- Invio e‑mail: Send an email (V2) (Outlook 365) con PDF allegato e destinatario variabile.
Prerequisiti
- Accesso a Microsoft 365 con Forms, Outlook e Power Automate.
- Un account con permessi su OneDrive/SharePoint per archiviare i PDF.
- Un modulo Microsoft Forms già impostato (anche semplice) con una domanda per l’e‑mail del destinatario o un criterio per calcolarla.
- Facoltativo: connettore premium per conversione HTML → PDF (Encodian, Plumsail, Adobe PDF Services) se si adotta il metodo HTML.
Progettazione del modulo Forms
Per gestire un indirizzo variabile in modo affidabile, è utile modellare il modulo con poche accortezze:
- Domanda “E‑mail destinatario”:
- Usa il tipo Testo e abilita la convalida di formato (email) per minimizzare errori.
- Nomina la domanda in modo chiaro (es. EmailDestinatario): sarà il contenuto dinamico da prelevare nel flusso.
- Domande chiave (es. Nome, Cognome, Oggetto, Riferimento pratica, Note, ecc.): più i campi sono strutturati, più sarà semplice costruire il documento.
- Allegati (se servono): con la domanda Caricamento file i file vengono salvati in un’area dedicata; il flusso potrà recuperarli e allegarli.
Creazione del flusso in Power Automate
Trigger
Aggiungi l’azione Microsoft Forms → When a new response is submitted, seleziona il Form Id del tuo modulo. Questo innesca il flusso a ogni invio.
Recupero dettagli
Aggiungi Microsoft Forms → Get response details e imposta:
- Form Id: lo stesso del trigger.
- Response Id: il valore dinamico Response Id dal trigger.
Ora tutte le risposte del modulo sono disponibili come contenuto dinamico (campi “body/…” dell’azione).
Percorso con modello Word
È il metodo più robusto e “no‑code” dal punto di vista della composizione: consente di definire un layout curato e di sfruttare la conversione nativa in PDF.
Preparazione del modello
- Apri Microsoft Word (desktop o web) e crea un modello .docx.
- Attiva la scheda Sviluppo (se non già visibile) e utilizza i Controlli contenuto (testo semplice, testo formattato, data, elenco) come segnaposto per le risposte del modulo.
- Per ogni controllo, imposta Titolo e/o Tag in modo univoco (es. EmailDestinatario, Nome, Note): Power Automate li mostrerà come campi da mappare.
- Salva il modello in SharePoint o OneDrive for Business in una cartella dedicata (es. /Modelli/FormsToPDF/).
Popolamento del modello
- Aggiungi l’azione Word Online (Business) → Populate a Microsoft Word template.
- Seleziona Location, Document Library e il file .docx creato.
- Power Automate ti mostrerà l’elenco dei segnaposto: mappa ad ognuno il corrispondente contenuto dinamico da Get response details (ad esempio, per il controllo EmailDestinatario usa la risposta alla relativa domanda).
- Imposta il nome del nuovo file (documento compilato). Un’espressione di convenzione utile:
concat('MF-', 'Risposta-', body('Getresponsedetails')?['responseId'], '-', formatDateTime(utcNow(),'yyyyMMdd-HHmmss'), '.docx')
Conversione in PDF
Dopo il popolamento, hai due opzioni:
- Convert file con OneDrive for Business o SharePoint: aggiungi Convert file (Preview), indica l’Id del documento appena creato, scegli PDF come formato. L’azione restituisce il file content PDF.
- Word Online (Business) → Convert Word Document to PDF (se disponibile nell’ambiente): seleziona il file compilato e ottieni direttamente il PDF.
In entrambi i casi, archivia il risultato con Create file su OneDrive/SharePoint. Un nome file leggibile:
concat('MF-', 'Risposta-', body('Getresponsedetails')?['responseId'], '-', formatDateTime(utcNow(),'yyyyMMdd-HHmmss'), '.pdf')
Invio dell’e‑mail con allegato
- Aggiungi Outlook 365 → Send an email (V2).
- A: seleziona come destinatario il contenuto dinamico della domanda EmailDestinatario (o un indirizzo determinato da regole).
- Oggetto: costruiscilo con risposte e metadati, ad esempio:
concat('Conferma risposta modulo - ID ', body('Getresponsedetails')?['responseId'])
- Corpo: inserisci un breve riepilogo (puoi usare HTML).
- Allegati:
- Attachments Name: il nome PDF definito sopra.
- Attachments Content: il File content restituito dall’azione di conversione.
Percorso HTML → PDF
Questo approccio evita il template Word e genera il PDF partendo da un corpo HTML. È ideale per ricevute snelle, notifiche o schede riassuntive con layout semplice.
Composizione HTML
- Aggiungi un’azione Compose o Initialize variable (tipo stringa) contenente il tuo HTML. Inserisci il contenuto dinamico nei punti opportuni. Esempio:
<html>
<head>
<meta charset="utf-8">
<style>
body{font-family:Arial,Helvetica,sans-serif;font-size:12pt;margin:24px;}
h1{font-size:18pt;margin:0 0 12px;}
table{border-collapse:collapse;width:100%;}
td,th{border:1px solid #ddd;padding:8px;text-align:left;}
.muted{color:#666;}
</style>
</head>
<body>
<h1>Ricevuta risposta modulo</h1>
<p class="muted">ID Risposta: @{body('Getresponsedetails')?['responseId']}</p>
<table>
<tr><th>Campo</th><th>Valore</th></tr>
<tr><td>Nome</td><td>@{body('Getresponsedetails')?['r_Nome']}</td></tr>
<tr><td>Email Destinatario</td><td>@{body('Getresponsedetails')?['r_EmailDestinatario']}</td></tr>
<tr><td>Note</td><td>@{body('Getresponsedetails')?['r_Note']}</td></tr>
</table>
</body>
</html>
Nota: i token @{...}
sono indicativi: in Power Automate inserisci le proprietà dal riquadro del contenuto dinamico senza digitare i token a mano.
Conversione HTML → PDF
Per trasformare l’HTML in PDF, utilizza un connettore dedicato (ad es. Encodian o Plumsail). Le azioni tipiche accettano l’HTML come stringa e restituiscono file content PDF. Imposta quindi un Create file su OneDrive/SharePoint per archiviare il PDF e prosegui con l’invio e‑mail come descritto sopra.
Suggerimento pratico: se vuoi evitare dipendenze premium, preferisci il modello Word. La conversione nativa Word → PDF è inclusa nelle licenze Microsoft 365 e offre un rendering di qualità.
Gestione dell’indirizzo e‑mail variabile
Esistono più strategie per determinare il destinatario:
- Campo diretto nel modulo (consigliato): usa la risposta alla domanda EmailDestinatario come valore del campo To nell’e‑mail.
- Routing condizionale: aggiungi un’azione Condition o Switch per inviare a indirizzi differenti in base a una risposta (es. categoria scelta dall’utente).
- Ricerca in elenco: se le regole sono molte, archivia mappature in una lista SharePoint (colonne: Chiave, Destinatario) e usa Get items per risolvere l’indirizzo dinamicamente.
- Multipli destinatari: predisponi campi per CC e BCC o compila una stringa separata da
;
. Esempio:concat(body('Getresponsedetails')?['r_EmailDestinatario'],';','gruppo-notifiche@contoso.com')
Archiviazione e naming dei file
Archiviare sempre il PDF prima di inviarlo garantisce tracciabilità, versioning e politiche di retention. Una convenzione di nomi coerente aiuta a ritrovare i documenti:
concat('Forms', body('Getresponsedetails')?['responseId'], '', formatDateTime(utcNow(),'yyyyMMdd-HHmmss'), '.pdf')
Organizza le cartelle per modulo e anno, ad esempio: /Documenti/FormsToPDF/NomeModulo/2025/.
Validazioni, errori e resilienza
Rendi il flusso solido con pochi accorgimenti:
- Controllo indirizzo mancante: aggiungi una Condition prima di inviare l’e‑mail.
not(empty(coalesce(body('Getresponsedetails')?['r_EmailDestinatario'], '')))
Se falso, invia una notifica interna o esegui un Terminate con stato Failed e messaggio chiaro. - Azioni in ambito: racchiudi composizione → conversione → invio in uno Scope e aggiungi uno Scope di Errore con Configure run after su has failed/has timed out per gestire i casi anomali (log, allert, retry).
- Concorrenza: nelle impostazioni del trigger, valuta il degree of parallelism per prevenire attriti su file con lo stesso nome.
- Limiti dimensione: se il modulo accetta upload, gli allegati possono essere pesanti; valuta compressione o link invece dell’allegato.
Integrazione con allegati caricati in Forms
Quando il modulo usa il tipo Caricamento file, i file vengono salvati in un’area dedicata a Forms su OneDrive/SharePoint. Il flusso può:
- Leggere dal dettaglio risposta i percorsi/metadati dei file.
- Usare Get file content per ognuno e:
- Allegarli all’e‑mail insieme al PDF, oppure
- Incorporarli nel documento (Word supporta segnaposto immagine e contenitori).
Personalizzazione layout del PDF
Con Word puoi gestire intestazioni, piè di pagina, tabulazioni, tabelle, immagini (logo aziendale), numerazione pagine, sommari. Alcuni suggerimenti:
- Usa Stili coerenti per titoli e paragrafi.
- Inserisci il logo in intestazione per uniformare la brand identity.
- Per campi multiriga (Note), applica un controllo contenuto testo con formattazione.
- Per date e numeri, formatta alla fonte (in Power Automate) con
formatDateTime()
,float()
, ecc.
Tabella di riferimento rapido
Aspetto | Dettagli |
---|---|
Licenze | Forms, Outlook, OneDrive/SharePoint e azioni Word Online sono incluse in Microsoft 365 Business/Enterprise. Connettori premium (Encodian, Plumsail, Adobe PDF Services) richiedono licenza aggiuntiva. |
Modularità | Lo stesso flusso può servire più moduli parametrizzando il trigger o duplicando il flusso e puntando a template diversi. |
Indirizzi multipli | Aggiungi campi nel modulo per CC/BCC oppure instrada con condizioni e Switch; separa gli indirizzi con ; . |
Archiviazione | Salva sempre il PDF in SharePoint/OneDrive prima dell’invio per garantire audit e retention; usa nomi file coerenti. |
Debug | Attiva l’output delle azioni e conserva i Run history. Aggiungi Compose per isolare i dati intermedi e facilitare i test. |
Best practice di sicurezza e conformità
- DLP: rispetta le policy di Data Loss Prevention della tua organizzazione, specie se il PDF contiene dati personali.
- Permessi: archivia su un sito SharePoint con ACL adeguate; evita cartelle personali se il PDF è un documento “aziendale”.
- Etichette di sensibilità: se usi Microsoft Information Protection, applica etichette al PDF tramite flussi o criteri automatici.
- Retention: definisci tempi di conservazione e scarti a norma (es. 12/24 mesi).
Esempio completo di flusso
- Trigger: Forms → When a new response is submitted (Form Id: QuestionarioFeedback).
- Get response details (Form Id: QuestionarioFeedback, Response Id: dal trigger).
- Scope: Documento
- Word Online (Business) → Populate a Microsoft Word template (mappa Nome, Cognome, EmailDestinatario, Note).
- Convert file (Preview) → PDF.
- Create file (SharePoint) → salva
Forms{responseId}{yyyyMMdd-HHmmss}.pdf
.
- Send an email (V2)
- To: risposta a EmailDestinatario.
- Subject:
concat('Conferma risposta ', body('Getresponsedetails')?['responseId'])
. - Body: messaggio HTML di cortesia con eventuale riepilogo.
- Attachments: usa File content del PDF convertito e il nome file desiderato.
- Scope: Esiti
- Successo: logga in una lista “Invii PDF”.
- Errore: Run after configurato → notifica al team IT con dettagli.
Varianti utili
- Un solo flusso per più moduli: duplica il flusso e cambia soltanto il Form Id e il template Word; oppure rendi il percorso del template calcolato in base al form (lista di mappatura).
- PDF firmabile: genera il PDF e, se necessario, invialo a una pipeline di firma digitale (connector dedicato).
- Numerazione progressiva: usa una lista SharePoint per mantenere un contatore e numerare i PDF (es. 2025‑000123).
- Allegati condizionali: in base a risposte critiche, allega appendici specifiche (policy, termini, ecc.).
Checklist di implementazione
- Il modulo Forms contiene la domanda EmailDestinatario con convalida e i campi informativi necessari.
- Il template Word ha segnaposto ben nominati e testati.
- Il flusso salva sempre un PDF in una posizione centralizzata.
- Il nome file segue una convenzione chiara.
- Esistono controlli/condizioni per errori e indirizzi mancanti.
- Il flusso gestisce optionalmente allegati caricati dall’utente.
Domande frequenti
Posso inviare lo stesso PDF a più destinatari?
Sì. Nel campo To elenca indirizzi separati da ;
, oppure usa CC/BCC. Puoi costruire gli elenchi con concat()
o leggerli da una lista di mappatura.
Serve una licenza premium?
No per il percorso Word → PDF con OneDrive/SharePoint/Word Online/Outlook. Serve licenza premium solo se scegli un connettore terzo per la conversione HTML → PDF.
Come garantisco che i PDF non siano modificabili?
Il PDF è di per sé più rigido del DOCX. Per esigenze di protezione avanzata usa etichette di sensibilità, crittografia o servizi di firma con blocco modifiche.
Come personalizzo il layout senza Word?
Con i connettori HTML → PDF puoi progettare il layout direttamente in HTML/CSS. Per impaginati ricchi o brandizzati, il template Word resta più pratico.
Posso includere un QR‑code nel PDF?
Sì: genera l’immagine del QR (ad es. tramite connettore o servizio interno), salvala in una libreria e inseriscila via segnaposto immagine nel modello Word, oppure includi l’<img>
nell’HTML.
Riepilogo operativo
- Crea/aggiorna il modulo Microsoft Forms con la domanda EmailDestinatario e gli altri campi.
- Prepara un modello Word con content controls mappati alle domande.
- In Power Automate, configura:
- When a new response is submitted
- Get response details
- Populate a Microsoft Word template
- Convert file in PDF (o connettore HTML → PDF)
- Create file per archiviazione
- Send an email (V2) con PDF allegato al destinatario variabile
- Esegui un test con una risposta di prova, verifica PDF e consegna e‑mail, poi pubblica.
Modello di corpo e‑mail pronto all’uso
<p>Ciao,</p>
<p>in allegato trovi il PDF generato dalla tua risposta al modulo.</p>
<ul>
<li><strong>ID risposta:</strong> @{body('Getresponsedetails')?['responseId']}</li>
<li><strong>Data invio:</strong> @{formatDateTime(utcNow(),'dd/MM/yyyy HH:mm')}</li>
</ul>
<p class="muted">Non rispondere a questa e‑mail: è un invio automatico.</p>
Vantaggi pratici
- Zero attività manuali: dalla ricezione alla consegna del PDF tutto accade in automatico.
- Coerenza: formattazione uniforme grazie al template o all’HTML controllato.
- Tracciabilità: archivio centrale e storico degli invii per audit e ricerca.
- Scalabilità: lo stesso schema serve questionari semplici o complessi, singolo o multi‑modulo.
Estensioni avanzate
- Dashboard su SharePoint/Power BI: estrai metadati (ID risposta, destinatario, data) in una lista e crea report di invii.
- Internazionalizzazione: genera PDF in lingua in base a una risposta (Switch su “Lingua”) con template o blocchi HTML diversi.
- Workflow di approvazione: prima dell’invio al destinatario, inserisci un passaggio di approvazione interna (azione Start and wait for an approval).
Troubleshooting
Problema | Causa probabile | Correzione rapida |
---|---|---|
L’e‑mail non arriva | Campo indirizzo vuoto o non valido | Aggiungi Condition per verificare che l’indirizzo non sia vuoto; abilita la convalida e‑mail in Forms. |
PDF non allegato | Usata la proprietà sbagliata per il contenuto | Nel blocco allegati, imposta Attachments Content = File content dell’azione di conversione. |
Template non mappabile | Segnaposto Word privi di Tag/Titolo | Riapri il modello, assegna nomi univoci ai content controls e ripeti la mappatura. |
PDF con formattazione errata | Stili Word incoerenti o HTML complesso | Uniforma gli stili in Word; per HTML riduci CSS avanzato, usa tabelle per layout semplici. |
Run in errore sporadici | Concorrenza e nomi file duplicati | Aggiungi timestamp nel nome e limita la parallelizzazione del trigger. |
Perché scegliere questa architettura
La combinazione Forms → Power Automate → Word/HTML → PDF → Outlook unisce immediatezza per i creatori di moduli, controlli IT su archiviazione e sicurezza, e flessibilità per adattarsi a casistiche diverse (ricevute, report, certificati, contratti, schede di intervento). Il risultato è una pipeline stabile, economica e self‑service, capace di ridurre errori e tempi di gestione.
Passi rapidi
- Crea o apri il modulo in Microsoft Forms e inserisci la domanda EmailDestinatario.
- Prepara un modello Word con segnaposto chiari per ogni risposta.
- In Power Automate, costruisci il flusso: Trigger → Get details → Popola Word → Converti in PDF → Crea file → Invia e‑mail.
- Mappa con attenzione i campi, esegui un test, verifica l’impaginazione e l’arrivo dell’allegato.
Seguendo questi passaggi, ogni risposta al tuo questionario verrà trasformata in un PDF e spedita automaticamente alla casella di posta specificata, senza interventi manuali.