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

Da Google Spreadsheet a Microsoft Excel nella tua casella di posta

Convertire un Google Spreadsheet in un file Microsoft Excel

In un altro articolo ho mostrato come sia possibile convertire un documento di Microsoft Excel in un Google Spreadsheet per trovarlo pronto all'uso nel proprio Google Drive.

Tuttavia anche la conversione inversa, ovvero da Google Spreadsheet a file Microsoft Excel può essere altrettanto utile nonché necessaria qualora si volesse esportare i documenti di Google su un disco fisso o inviarli via email ad un collaboratore senza condividere il file originale.

Il codice seguente consente, specificando l'ID di un Foglio di Google, di convertirlo in file Excel ed inviarlo come allegato di una email all'indirizzo di posta desiderato:

function getGoogleSpreadsheetAsExcel() {
  
  try {

    var ss_id = "1X4LzOKp-ZXsxMRNWm30..."; // ID dello Spreadsheet
    var email_to = "destinatario@mail.it";
    var email_subj = "Excel convertito da Spreadsheet";
    var email_text = "Il file Excel si trova in allegato";

    ss = SpreadsheetApp.openById(ss_id);
    var url = "https://docs.google.com/feeds/download/spreadsheets/Export?key=" + ss_id + "&exportFormat=xlsx";
        
    var params = {
      method      : "get",
      headers     : { "Authorization": "Bearer " + ScriptApp.getOAuthToken() },
      muteHttpExceptions: true
    };
    
    var blob = UrlFetchApp.fetch(url, params).getBlob();   
    blob.setName(ss.getName() + ".xlsx");
    
    MailApp.sendEmail(email_to, email_subj, email_text, { attachments: [blob]} );
    
  } catch (f) {
    Logger.log(f.toString());
  }
}

Le variabili di configurazione consentono di definire oltre all'identificativo del file da convertire anche la mail del destinatario, l'oggetto della mail ed il testo.
L'uso del costrutto try...catch consente di gestire eventuali eccezioni.

Da precisare che la funzione di cui sopra non necessita dell'abilitazione delle Drive API per eseguire l'operazione.

Adattando il codice alle proprie esigenze è possibile creare strumenti molto utili e automatizzati, ad esempio per processare tutti gli Spreadsheet presenti in una particolare cartella ed inviarli via mail convertiti in Excel oppure crearsi giornalmente un archivio o un backup su Google Drive di Fogli di Google convertiti in Excel per mantenere lo storico delle attività quotidiane.

 

Puoi trovare molte altre informazioni sulla gestione degli Spreadsheet da Apps Script nel mio libro "Punta in alto con... Google Apps Script":

ACQUISTA ORA IL LIBRO SU AMAZON:

punta in alto con google apps script libro italiano

Se sei pronto a diventare un esperto nella programmazione in Google Apps Script non posso fare altro che augurarti una buona lettura e soprattutto... Buon divertimento!

 

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

4 Commenti

  1. Monday, February 3, 2020 alle ore 06:24 PIPPO SCARPATI

    La variabile "ss_id" definisce l'url del foglio google e trasforma l'intero file in xlsx, ma se invece a me interessa copiare una sola subcartella del foglio google invece che tutti i folder presenti in esso? Cioè, se il foglio google è costituito da enne cartelle, posso estrarne una soltanto e creare il file excel con quella soltanto? Grazie!

    Rispondi a questo commento
    • Monday, February 3, 2020 alle ore 10:46 PIPPO SCARPATI

      ...ho risolto in questa maniera forse poco ortodossa ma funzionale a ciò che mi occorreva: il mio obiettivo era di esportare da un foglio google costituito da molte cartelle, una sola di queste; quindi piuttosto che esportare come xlsx ho esportato come csv. Il file .csv esportato contiene solo la prima cartella di un foglio google e quindi ho posizionato a sinistra la cartella che mi interessava e la tua procedura, con questo piccolo artificio, esporta ciò che volevo esportare, Certo sarebbe interessante per me sapere come esportare anche in xslx una sola cartella. :-) anche se l'obiettivo che mi ero posto è stato raggiunto. Grazie per questo script.

      Rispondi a questo commento
      • Monday, February 3, 2020 alle ore 19:28 Michele PisaniAutore

        Ciao Pippo,
        grazie per aver condiviso la tua soluzione!
        Non conosco metodi diretti per poter ottenere quello di cui hai bisogno, un'alternativa che mi viene in mente potrebbe essere quella di creare uno script che effettua dinamicamente i seguenti passaggi: crea una copia del file, elimina i fogli (le cartelle) indesiderate, converte in Excel ed elimina la copia del file da Drive.
        In questo modo il file originale non viene alterato, e su Google Drive hai un file in Excel pulito.

  2. Monday, November 1, 2021 alle ore 12:02 Antonio C.

    Un altro script che mi ha fatto risparmiare ore di snervante lavoro.
    Immagino che il procedimento funzioni anche per i google docs, oppure per inviare allegati di diverso tipo.
    Grazie.

    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