Convertire automaticamente le risposte di Microsoft Forms in PDF e inviarle via e‑mail con Power Automate

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.

Indice

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:

  1. Trigger: When a new response is submitted di Microsoft Forms.
  2. Raccolta dati: Get response details per ottenere tutte le risposte come contenuto dinamico.
  3. 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.
  4. Conversione in PDF: Convert file (da Word a PDF) oppure azione del connettore scelto.
  5. 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

  1. Apri Microsoft Word (desktop o web) e crea un modello .docx.
  2. 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.
  3. Per ogni controllo, imposta Titolo e/o Tag in modo univoco (es. EmailDestinatario, Nome, Note): Power Automate li mostrerà come campi da mappare.
  4. Salva il modello in SharePoint o OneDrive for Business in una cartella dedicata (es. /Modelli/FormsToPDF/).

Popolamento del modello

  1. Aggiungi l’azione Word Online (Business) → Populate a Microsoft Word template.
  2. Seleziona Location, Document Library e il file .docx creato.
  3. 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).
  4. 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

  1. Aggiungi Outlook 365 → Send an email (V2).
  2. A: seleziona come destinatario il contenuto dinamico della domanda EmailDestinatario (o un indirizzo determinato da regole).
  3. Oggetto: costruiscilo con risposte e metadati, ad esempio: concat('Conferma risposta modulo - ID ', body('Getresponsedetails')?['responseId'])
  4. Corpo: inserisci un breve riepilogo (puoi usare HTML).
  5. 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

  1. 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ò:

  1. Leggere dal dettaglio risposta i percorsi/metadati dei file.
  2. 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

AspettoDettagli
LicenzeForms, 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 multipliAggiungi campi nel modulo per CC/BCC oppure instrada con condizioni e Switch; separa gli indirizzi con ;.
ArchiviazioneSalva sempre il PDF in SharePoint/OneDrive prima dell’invio per garantire audit e retention; usa nomi file coerenti.
DebugAttiva 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

  1. Trigger: Forms → When a new response is submitted (Form Id: QuestionarioFeedback).
  2. Get response details (Form Id: QuestionarioFeedback, Response Id: dal trigger).
  3. Scope: Documento
    1. Word Online (Business) → Populate a Microsoft Word template (mappa Nome, Cognome, EmailDestinatario, Note).
    2. Convert file (Preview) → PDF.
    3. Create file (SharePoint) → salva Forms{responseId}{yyyyMMdd-HHmmss}.pdf.
  4. 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.
  5. 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

  1. Crea/aggiorna il modulo Microsoft Forms con la domanda EmailDestinatario e gli altri campi.
  2. Prepara un modello Word con content controls mappati alle domande.
  3. 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
  4. 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

ProblemaCausa probabileCorrezione rapida
L’e‑mail non arrivaCampo indirizzo vuoto o non validoAggiungi Condition per verificare che l’indirizzo non sia vuoto; abilita la convalida e‑mail in Forms.
PDF non allegatoUsata la proprietà sbagliata per il contenutoNel blocco allegati, imposta Attachments Content = File content dell’azione di conversione.
Template non mappabileSegnaposto Word privi di Tag/TitoloRiapri il modello, assegna nomi univoci ai content controls e ripeti la mappatura.
PDF con formattazione errataStili Word incoerenti o HTML complessoUniforma gli stili in Word; per HTML riduci CSS avanzato, usa tabelle per layout semplici.
Run in errore sporadiciConcorrenza e nomi file duplicatiAggiungi 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

  1. Crea o apri il modulo in Microsoft Forms e inserisci la domanda EmailDestinatario.
  2. Prepara un modello Word con segnaposto chiari per ogni risposta.
  3. In Power Automate, costruisci il flusso: Trigger → Get details → Popola Word → Converti in PDF → Crea file → Invia e‑mail.
  4. 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.

Indice