Ti sarà già capitato di importare un file CSV in Excel o nei Fogli Google. Con Google Apps Script puoi farlo in modo automatico con pochissime righe di codice:
Un CSV è un file con valori separati da virgola o da punto e virgola. Si tratta di un file con dati tabulari sottoforma di testo e, appunto, la virgola o il punto virgola identifica il separatore di ciascuna cella.
La lettura di un file CSV è piuttosto semplice:
- ogni linea corrisponde a una riga della tabella;
- ogni virgola (o punto e virgola) corrisponde a una separazione tra le colonne.
Il formato CSV consente il trasferimento di dati da un programma a un altro. Questi file possono essere importati in un Excel o, come nel nostro caso, in un Foglio di Google.
Possiamo importarli in 3 diverse situazioni: da un link esterno, da Google Drive o da un allegato in Gmail. Nel video ti mostro tutte e 3 queste possibilità, ottenendo il risultato con 3 semplici funzioni.
Ricordati di iscriverti al mio CANALE per rimanere aggiornato sull'uscita dei prossimi video!
Bellissima guida, e soprattutto ben spiegata.
Ma come mai se imposto il delimitatore mi restituisce questo errore?
Exception: Could not parse text.
importCsvFromGoogleDrive @ Codice.gs.4
Ciao Massi, grazie del feedback :) quell'errore può verificarsi per molte ragioni diverse, in questi casi è necessario andare a tentativi per capire il motivo per il quale il csv non viene gestito correttamente, ad esempio se ci sono virgolette o virgole o punti e virgola che possono invalidare l'importazione. Inizierei con un file ridotto al minimo e aggiungerei campi e e righe fino a trovare cosa genera l'anomalia nel tuo specifico caso.
Grazie del suggerimento e della velocità, ho provato e ho scoperto che delle righe hanno le virgolette. Considerando che il mio delimitatore è ";" come posso dirgli ad AppScript di importare tralasciando l'errore delle virgolette?
Grazie mille
Potresti provare a rimuoverle o applicare un escape, con questi input e alcune ricerche sono certo che riuscirai a risolvere :)
Grazie! Mi informerò qui sul Vostro sito.
Un ultima domanda, se volessi saltare una colonna, esempio la 2 colonna voglio che no la importi, come posso fare tramite lo script?
Per quanto riguarda le ricerche estenderei a Google quando si tratta di questioni generali JavaScript, essendo Apps Script basato su quel linguaggio di scripting.
Per l'altra domanda, il metodo parseCSV non lo prevede per cui è necessario o non esportarlo inizialmente (che è la migliore soluzione) o gestirlo a posteriori.
Ottimo video, molto chiaro e semplice.
Vorrei però fare un salto in avanti, se possibile.
Nel mio caso specifico, devo scaricare più csv da diversi url e caricarne i dati in un unico foglio di google sheet.
Grazie mille in anticipo e complimenti ancora.
Ciao Igor,
se la tua domanda è volta a capire la fattibilità di ciò che hai descritto, la risposta è sì, è fattibile. Si tratta di modificare il codice del video per fare in modo che legga da URL diversi e scriva ciascun risultato in Fogli diversi. Il concetto dietro all'importazione da CSV rimane quindi il medesimo sia che si tratti di un file solo che di più file. È come se avessi 5 funzioni diverse, una per URL oppure eseguite tutte in un'unica volta dentro una sola funzione. Ovviamente serve definire una logica nella scrittura del codice e recupero informazioni per rendere il tutto funzionante con un click.
Ottima guida Michele! Solo un consiglio. Il file CSV contiene diverse colonne data in formato gg.mm.aaaa ed importando il file si ottiene una cosa del tipo 27:37:32.000.
C'è modo di inserire un'istruzione nella funzione che permetta di settare il formato in modo che nel foglio di google venga riportato correttamente come gg/mm/aaaa?
Grazieeee
Ottima guida Michele! Solo un consiglio. Il file CSV contiene diverse colonne data in formato gg.mm.aaaa ed importando il file si ottiene una cosa del tipo 27:37:32.000.
C'è modo di inserire un'istruzione nella funzione che permetta di settare il formato in modo che nel foglio di google venga riportato correttamente come gg/mm/aaaa?
Grazieeee
Ottima guida Michele! Solo un consiglio. Il file CSV contiene diverse colonne data in formato gg.mm.aaaa ed importando il file si ottiene una cosa del tipo 27:37:32.000.
C'è modo di inserire un'istruzione nella funzione che permetta di settare il formato in modo che nel foglio di google venga riportato correttamente come gg/mm/aaaa?
Grazieeee
Ottima guida Michele! Solo un consiglio. Il file CSV contiene diverse colonne data in formato gg.mm.aaaa ed importando il file si ottiene una cosa del tipo 27:37:32.000.
C'è modo di inserire un'istruzione nella funzione che permetta di settare il formato in modo che nel foglio di google venga riportato correttamente come gg/mm/aaaa?
Grazieeee
Ottima guida Michele! Solo un consiglio. Il file CSV contiene diverse colonne data in formato gg.mm.aaaa ed importando il file si ottiene una cosa del tipo 27:37:32.000.
C'è modo di inserire un'istruzione nella funzione che permetta di settare il formato in modo che nel foglio di google venga riportato correttamente come gg/mm/aaaa?
Grazieeee
Ciao Michele,
sto cercando di importare un file csv da link esterno, ma affinché il parsing non dia errore, occorre modificarlo leggermente. Però il metodo replace non sembra funzionare su quanto recuperato con UrlFetchApp:
var csvContent = UrlFetchApp.fetch(csvUrl).getContentText();
csvContent.replace(/StringaDaModificare/g, "StringaModificata");
hai idea di dove io mi stia sbagliando?
grazie mille
Paolo
Ciao Michele,
sto cercando di importare un file csv da link esterno, ma affinché il parsing non dia errore, occorre modificarlo leggermente. Però il metodo replace non sembra funzionare su quanto recuperato con UrlFetchApp:
var csvContent = UrlFetchApp.fetch(csvUrl).getContentText();
csvContent.replace(/StringaDaModificare/g, "StringaModificata");
hai idea di dove io mi stia sbagliando?
grazie mille
Paolo
Ciao Michele,
sto cercando di importare un file csv da link esterno, ma affinché il parsing non dia errore, occorre modificarlo leggermente. Però il metodo replace non sembra funzionare su quanto recuperato con UrlFetchApp:
var csvContent = UrlFetchApp.fetch(csvUrl).getContentText();
csvContent.replace(/StringaDaModificare/g, "StringaModificata");
hai idea di dove io mi stia sbagliando?
grazie mille
Paolo
Ciao,
sono un neofita di AppScript e seguo con molto interesse tutti i tuoi tutorial. Volevo chiederti se è possibile importare un file Excel da locale in maniera automatizzata (immagino tramite uno script su cui abiliti un attivatore) ma in modo che importi solo il foglio necessario in uno sheet già esistente che ha più colonne del foglio importato e su cui sono attivi dei cerca.vert. Quando provo a importare manualmente mi elimina le colonne in più (non sono ancora riuscito a trovare una soluzione di automatizzazione purtroppo).
Grazie per i suggerimenti che riuscirai sicuramente a fornirmi.
Ciao,
sono un neofita di AppScript e seguo con molto interesse tutti i tuoi tutorial. Volevo chiederti se è possibile importare un file Excel da locale in maniera automatizzata (immagino tramite uno script su cui abiliti un attivatore) ma in modo che importi solo il foglio necessario in uno sheet già esistente che ha più colonne del foglio importato e su cui sono attivi dei cerca.vert. Quando provo a importare manualmente mi elimina le colonne in più (non sono ancora riuscito a trovare una soluzione di automatizzazione purtroppo).
Grazie per i suggerimenti che riuscirai sicuramente a fornirmi.
Ciao,
sono un neofita di AppScript e seguo con molto interesse tutti i tuoi tutorial. Volevo chiederti se è possibile importare un file Excel da locale in maniera automatizzata (immagino tramite uno script su cui abiliti un attivatore) ma in modo che importi solo il foglio necessario in uno sheet già esistente che ha più colonne del foglio importato e su cui sono attivi dei cerca.vert. Quando provo a importare manualmente mi elimina le colonne in più (non sono ancora riuscito a trovare una soluzione di automatizzazione purtroppo).
Grazie per i suggerimenti che riuscirai sicuramente a fornirmi.