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:
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:
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:
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:
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!
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.
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.
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
Ciao Gianmarco,
controlla nella menu Recenti di Google Drive, il file dovresti trovarlo lì.
Per un supporto su questo tipo di domande puoi fare riferimento anche al gruppo su Facebook Fatti di Apps Script: https://www.facebook.com/groups/AppsScript/
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.
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.
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.
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.