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

Pillola di Apps Script #10bis

Da Google Docs a Gmail

Inviare email automatiche in formato HTML non richiede alcune competenze per la struttura dell'email, ti basta utilizzare un Google Docs.

Con una funzione in Google Apps Script è possibile recuperare il contenuto di un Google Docs ed inserirlo con la stessa formattazione (grassetti, link, immagini, ecc...) nel corpo di un'email da inviare con Gmail.

Ti ho già parlato di questa funzionalità in un altro mio video "Invio del contenuto di un Google Docs come HTML nel corpo di una email", tuttavia a seguito di un aggiornamento Google il suo funzionamento è stato compromesso.

In questo video ti mostro un workaround per poter far funzionare il tutto in qualsiasi occasione!

 

Stato di verificaVERIFICATO

Ambito di utilizzo: Google Docs, Gmail

Codice:

function sendGoogleDocAsHTMLV2() {
  var docId = "DOC_ID_HERE"; // Id del Google Docs
  var destinatario = "EMAIL_HERE";
  var oggetto = "Contenuto estratto da un Google Docs";

  var url = "https://docs.google.com/document/d/" + docId + "/export?format=html";
  var param = {
    method      : "get",
    headers     : { "Authorization": "Bearer " + ScriptApp.getOAuthToken() },
    muteHttpExceptions:true,
  };

  // --- I modified the below script.
  var tempFolderId = "FOLDER_ID_HERE"; // Please set the folder ID of the folder for putting the images.
  var folder = DriveApp.getFolderById(tempFolderId);
  var html = UrlFetchApp.fetch(url, param).getContentText();
  [...html.matchAll(/src="(data:image.*?)"/g)].forEach(([, e], i) => {
    var [mimeType, data] = e.split(",");
    var temp = folder.createFile(Utilities.newBlob(Utilities.base64Decode(data), mimeType, `image${i + 1}`));
    temp.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.VIEW);
    var url = `https://drive.google.com/uc?export=download&id=${temp.getId()}`;
    html = html.replace(e, url);
  });
  // ---

  var raw = Utilities.base64EncodeWebSafe("Subject: " + oggetto + "
" +
                                          "To: " + destinatario + "
" +
                                          "Content-Type: text/html; charset=UTF-8

" +
                                          html+"

");
  var message = Gmail.newMessage();
  message.raw = raw;
  var sentMsg = Gmail.Users.Messages.send(message, 'me');
}


// Affinché lo script effettui l'operazione desiderata è necessario:
// - aggiungere il servizio Gmail;
// - Aggiungere manualmente gli ambiti al file Manifest
// - Aggiungere il servizio Drive
// - Abilitare Chrome V8 runtime

ISCRIVITI AL CANALE YOUTUBE! E attiva la campanella in modo da essere aggiornato sui prossimi video pubblicati e codici pronti all'uso! :)

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

0 Commenti

Non ci sono commenti

Nessuno ha ancora commentato questo articolo, fallo tu per primo!

scrivi un 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