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

Da URL, da Google Drive e da Gmail

Importazione CSV nei Fogli di Google con Apps Script

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!

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

21 Commenti

  1. Tuesday, October 4, 2022 alle ore 13:10 Massi

    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

    Rispondi a questo commento
    • Tuesday, October 4, 2022 alle ore 13:30 Michele PisaniAutore

      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.

      Rispondi a questo commento
  2. Tuesday, October 4, 2022 alle ore 13:46 Massi

    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

    Rispondi a questo commento
    • Tuesday, October 4, 2022 alle ore 13:54 Michele PisaniAutore

      Potresti provare a rimuoverle o applicare un escape, con questi input e alcune ricerche sono certo che riuscirai a risolvere :)

      Rispondi a questo commento
      • Tuesday, October 4, 2022 alle ore 13:59 Massi

        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?

      • Tuesday, October 4, 2022 alle ore 14:33 Michele PisaniAutore

        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.

  3. Friday, October 21, 2022 alle ore 16:16 Igor Zardoni

    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.

    Rispondi a questo commento
    • Friday, October 21, 2022 alle ore 17:00 Michele PisaniAutore

      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.

      Rispondi a questo commento
  4. Monday, February 27, 2023 alle ore 18:28 Vanni

    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

    Rispondi a questo commento
  5. Monday, February 27, 2023 alle ore 18:28 Vanni

    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

    Rispondi a questo commento
  6. Monday, February 27, 2023 alle ore 18:29 Vanni

    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

    Rispondi a questo commento
  7. Monday, February 27, 2023 alle ore 18:30 Vanni

    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

    Rispondi a questo commento
  8. Monday, February 27, 2023 alle ore 18:31 Vanni Massari

    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

    Rispondi a questo commento
  9. Monday, March 6, 2023 alle ore 13:52 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

    Rispondi a questo commento
  10. Monday, March 6, 2023 alle ore 14:00 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

    Rispondi a questo commento
  11. Monday, March 6, 2023 alle ore 14:01 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

    Rispondi a questo commento
  12. Sunday, April 21, 2024 alle ore 21:25 Fabio

    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.

    Rispondi a questo commento
  13. Sunday, April 21, 2024 alle ore 21:26 Fabio

    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.

    Rispondi a questo commento
  14. Sunday, April 21, 2024 alle ore 21:27 Fabio

    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.

    Rispondi a questo commento
  15. Thursday, October 10, 2024 alle ore 15:22 Alessandro

    Ciao Michele e complimenti per le sempre ottime spiegazioni.
    Vorrei avere un suggerimento se possibile. I miei files non sono CSV ma TXT (valori separati da spazio). C'è modo di importarli comunque ? Non vedo un metodo utilities.parseTXT.... quindi devo prima convertirli ? E' possibile farlo con codice appropriato ?
    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