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

Da Microsoft Excel a Google Spreadsheet in Google Drive

Convertire un file Microsoft Excel in un Google Spreadsheet

Con le API di Google Drive, attivabili semplicemente dalla finestra dei Servizi Avanzati di Google, e poche righe di codice Apps Script è possibile convertire un file dal formato Microsoft Excel (xls o xlsx) in un Google Spreadsheet.

Per l'esempio mostrato di seguito ho scaricato un file Excel di esempio chiamato "Financial Sample.xlsx", popolato da una una serie di valori di righe e colonne.
Un estratto è mostrato in Fig. 1:



file excel da convertire in spreadsheet

Fig. 1 - File Excel da convertire in Spreadsheet


 

La seguente funzione dovrà essere inserita in uno script di tipo autonomo ed il nome del file da convertire (posizionato in una cartella del proprio Google Drive) dovrà essere indicato nella variabile fileName.
Sarà quindi sufficiente abilitare le Drive API dall'editor di script ed avviare la funzione principale (nel caso specifico start()), per procedere con il processo guidato di autorizzazione dello script.

function convertMicrosoftExcelToGoogleSpreadsheet(fileName) {
  try {
    var excelFile = DriveApp.getFilesByName(fileName).next();
    var fileId = excelFile.getId();
    var folderId = Drive.Files.get(fileId).parents[0].id;  
    var blob = excelFile.getBlob();
    var resource = {
      title: excelFile.getName(),
      mimeType: MimeType.GOOGLE_SHEETS,
      parents: [{id: folderId}],
    };
    Drive.Files.insert(resource, blob);
    Logger.log('File convertito!');
  } catch (f) {
    Logger.log(f.toString());
  }
}

function start() {
  var fileName = "Financial Sample.xlsx";
  convertMicrosoftExcelToGoogleSpreadsheet(fileName);
}

Per la gestione degli errori ho inserito nella funzione il blocco di codice try-catch.

Avviata la funzione occorreranno pochi secondi per poter trovare nella root di Google Drive il file convertito, Fig. 2:



file recenti in google drive

Fig. 2 - File recenti in Google Drive


Il file "Financial Sample", in quanto convertito come Foglio di Google, può ora essere aperto e gestito con le funzionalità degli Spreadsheet di Google, Fig. 3:



google spreadsheet convertito da un file excel

Fig. 3 - Google Spreadsheet convertito da un file Excel


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

8 Commenti

  1. Wednesday, June 5, 2019 alle ore 16:20 Paolo

    Grazie Michele per questo spunto! Il mio caso è un po' diverso però: ho già un file "Foglio" all'interno del quale in un primo Tab vorrei che venissero sincronizzati i valori (con trigger giornaliero) con il file xlsx su Gdrive, in un'altro Tab invece ho delle formule che usano i dati del primo Tab per creare dei report.
    Il punto è avere accessibili i dati aggiornati senza dover ogni volta trasformare un file excel in un "Foglio" e copia-incollare i valori in un'altro Foglio contenente le formule.

    Rispondi a questo commento
    • Thursday, June 6, 2019 alle ore 11:21 Michele PisaniAutore

      Ciao Paolo,
      potresti convertire l'Excel in CSV e recuperare i dati per scriverli in un foglio dedicato del tuo Spreadsheet strutturati come desideri e dal quale il secondo foglio recupera i dati. In questo modo puoi automatizzare il processo.

      Rispondi a questo commento
  2. Saturday, February 29, 2020 alle ore 22:33 Gianmarco

    Ciao Michele! Credo di aver seguito correttamente tutti i passaggi, ma non compare nessun nuovo Spreadsheet sul Drive... Non sono un esperto con Google Apps Script, ma sono riuscito comunque a seguirti per ogni passaggio.

    So che così puoi essermi poco di aiuto, per questo ti chiedo se hai un altro canale dove poterti contattare.

    Un saluto,
    Gianmarco

    Rispondi a questo commento
  3. Sunday, March 12, 2023 alle ore 13:28 Moreno

    Ciao Michele, prima di tutto ti volevo fare i complimenti per il lavoro che fai, mi sto appassionando alla materie e sicuramente comprerò il tuo libro, ti volevo chiedere cmq un info riguardo allo script in alto, ho provato a eseguirlo ma mi da sempre un errore "Exception: Invalid argument: name" a cosa può essere dovuto?, grazie anticipatamente.

    Rispondi a questo commento
  4. Sunday, March 12, 2023 alle ore 13:29 Moreno

    Ciao Michele, prima di tutto ti volevo fare i complimenti per il lavoro che fai, mi sto appassionando alla materie e sicuramente comprerò il tuo libro, ti volevo chiedere cmq un info riguardo allo script in alto, ho provato a eseguirlo ma mi da sempre un errore "Exception: Invalid argument: name" a cosa può essere dovuto?, grazie anticipatamente.

    Rispondi a questo commento
  5. Sunday, March 12, 2023 alle ore 13:30 Moreno

    Ciao Michele, prima di tutto ti volevo fare i complimenti per il lavoro che fai, mi sto appassionando alla materie e sicuramente comprerò il tuo libro, ti volevo chiedere cmq un info riguardo allo script in alto, ho provato a eseguirlo ma mi da sempre un errore "Exception: Invalid argument: name" a cosa può essere dovuto?, grazie anticipatamente.

    Rispondi a questo commento
  6. Sunday, March 12, 2023 alle ore 13:31 Moreno

    Ciao Michele, prima di tutto ti volevo fare i complimenti per il lavoro che fai, mi sto appassionando alla materie e sicuramente comprerò il tuo libro, ti volevo chiedere cmq un info riguardo allo script in alto, ho provato a eseguirlo ma mi da sempre un errore "Exception: Invalid argument: name" a cosa può essere dovuto?, grazie anticipatamente.

    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