JavaScript, HTML, CSS e... !
6 commenti

Il file sarà inoltre salvato su Drive ed inviato come allegato in una mail

Convertire un contenuto HTML in un file PDF con Google Apps Script

La funzione riportata nel codice di esempio presente di seguito effettua la conversione di un contenuto HTML in un file PDF mantenendo l'espressione visiva data dai tag del linguaggio di markup, nel caso specifico il titolo più grande del tag h1, il ritorno a capo con il br, il paragrafo p ed il collegamento ipertestuale con href.

Di seguito un esempio del risultato salvato automaticamente su Google Drive:



contenuto html salvato come file pdf in google drive

Fig. 1 - Contenuto HTML salvato come file PDF in Google Drive


Il codice del convertitore è il seguente:

function htmlToPDF() {
  var html = "<h1>Benvenuti su AppsScript.it</h1>" +
             "<p>Se sei alla ricerca di guide base ed avanzate su Google Apps Script " +
             "per la realizzazione di applicazioni web o l'estensione di funzionalità dei " +
             "tool integrati nella G Suite... ti trovi nel posto giusto!<br />" +
             "Accedi ora alla pagina dei <a href='http://www.appsscript.it/tutorial/'>tutorial</a>.</p>";

  var blob = Utilities.newBlob(html, "text/html", "nomefile.html");
  var pdf = blob.getAs("application/pdf"); 
  DriveApp.createFile(pdf).setName("nomefile.pdf");
  
  MailApp.sendEmail("miamail@gmail.com", "PDF File", "", { htmlBody: html, attachments: pdf });
}

Lo script non si limita solo a convertire e salvare il file PDF nella root di Google Drive ma lo invia anche via email, all'indirizzo indicato, sia come corpo del messaggio (sempre in formato HTML) che come allegato:



contenuto html scritto nel corpo della mail ed inserito come allegato

Fig. 2 - Contenuto HTML scritto nel corpo della mail ed inserito come allegato


Inutile dire che lo script può gestire contenuti HTML decisamente più complessi di quello in esempio.

Tags

Michele Pisani

Michele Pisani

Sviluppatore Javascript ed esperto in Digital Analytics

L'esperienza nel settore Digital Analytics unita ad anni di sviluppo in Javascript ha trovato la massima espressione in Google Apps Script che mi ha permesso, con estrema facilità e poche righe di codice, di realizzare potenti applicazioni interattive e processi automatizzati integrati con i prodotti della G Suite.

Come contattarmi
scrivi un commento

6 Commenti

  1. Sunday, April 12, 2020 alle ore 16:42 Andrea

    Buongiorno, sono alle prime armi. Di seguito quello che ho fatto finora, mi manca la stringa per far sì che parte del foglio che ho evidenziato venga salvato come PDF sul desktop. Ringrazio in anticipo per l'eventuale risposta.

    /** @OnlyCurrentDoc */

    function myFunction() {
    var spreadsheet = SpreadsheetApp.getActive();
    spreadsheet.getRange('A1').activate();
    spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Conformità'), true);
    spreadsheet.getRange('B2:F58').activate();
    };

    Rispondi a questo commento
    • Sunday, April 12, 2020 alle ore 23:13 Michele PisaniAutore

      Buonasera Andrea,
      l'articolo in oggetto si riferisce alla conversione di un contenuto HTML. Quello che stai tentando di fare invece riguarda la gestione dei prodotti della G Suite.
      Se sei alle prime armi ti consiglio di approfondire l'argomento (anche con altri articoli del blog). Ci possono essere delle soluzioni per ottenere quello che desideri (a parte il salvataggio sul desktop) tuttavia è una trattazione che richiede uno studio e un minimo di esperienza dello strumento e non può essere soddisfatta in un commento sulla base del codice che hai riportato.

      Rispondi a questo commento
  2. Saturday, May 29, 2021 alle ore 16:25 Riccardo

    lo script è fantastico, ma come inserisco delle immagini?
    ad esempio è possibile convertire in PDF una pagina esattamente come la si visualizza mantenendo la stessa formattazione ( scritto, celle, e immagini ) ?
    Grazie

    Rispondi a questo commento
    • Sunday, June 13, 2021 alle ore 22:17 Michele PisaniAutore

      Ciao Riccardo,
      per includere le immagini dovresti recuperarle utilizzando URLfetchApp e convertire in una stringa dati base64 (con la classe Utilities e il metodo getBlob()), dopodiché includere quel risultato nel parametro src del tag immagine del tuo contenuto HTML.

      Rispondi a questo commento
  3. Wednesday, August 11, 2021 alle ore 14:25 Tiziano

    Utilizzo quotidianamente uno script similare per convertire in pdf una pagina html. Ha funzionato senza problemi da un anno e mezzo ma di colpo ieri sera mi restituisce l'errore Exception: Conversion from text/html to application/pdf failed.
    Succede solo a me oppure google ha cambiato qualcosa?

    Rispondi a questo commento
    • Monday, August 23, 2021 alle ore 23:23 Michele PisaniAutore

      Ciao Tiziano,
      riporto anche qui la risposta che ti ho dato su Facebook nel gruppo "Fatti di Apps Script".
      Il problema, rilevato anche da me e effettivamente inspiegabile, è stato segnalato nell'Issue Tracker di Google: https://issuetracker.google.com/issues/196248470.
      Come da mia segnalazione il 18 agosto tutto è tornato alla normalità :) Evidentemente un bug risolto dai tecnici Google.

      Rispondi a questo commento

Scrivi un commento

Il tuo indirizzo email non sarà pubblicato.I campi contrassegnati da un * sono obbligatori
Puoi utilizzare i seguenti tag nei commenti:
[bold]testo[/bold] se vuoi evidenziare un testo con il grassetto[code]function helloworld() { }[/code] se vuoi pubblicare una porzione di codice[url]https://www.appsscript.it[/url] se devi riferirti ad un indirizzo web