Se você utiliza o Excel da Microsoft, provavelmente está acostumado a utilizar e importar dados de fontes externas, por exemplo arquivos CSV. Conseguimos ter essa mesma facilidade no Google Planilhas utilizando o Google Apps Script.
O que é Google Apps Script?
O Apps Script é uma plataforma de script desenvolvida pela Google para o desenvolvimento de aplicativos leves na plataforma G Suite. É baseado em JavaScript 1.6, mas também inclui algumas funcionalidades do 1.7, 1.8 e um subconjunto da API do ECMAScript 5. Os projetos do Apps Script são executados na infraestrutura cloud da Google. De acordo com a própria Google, o Apps Script “fornece maneiras fáceis de automatizar tarefas nos produtos e serviços de terceiros”. O Apps Script também está disponível para o Google Docs e Apresentações.
Você encontra todos os scripts deste tutorial na planilha de exemplo, faça uma cópia em seu drive para conseguir visualizar os scripts e editar a planilha.
Confira também: Transferindo arquivos por SFTP no Google Cloud usando o FileZilla
Acessando o Apps Script
Para acessar o Google Apps Scripts, crie uma planilha em branco ou copie a planilha de exemplo; Clique em Ferramentas > Editor de script:

Uma nova aba com o editor de texto do Google Apps Script abrirá:

Criando os Scripts
Podemos facilmente importar arquivos CSV nas Planilhas do Google usando a função Utilities.parseCsv()
do Google Apps Script. Os códigos abaixo mostram como importar e exibir os dados de um arquivo CSV por URL, salvo no Google Drive ou como anexo no Gmail.
Autorizando o Google Apps Scripts
Pra todos os exemplos abaixo, ao executar os scripts precisamos autorizar o Google Apps Scripts para acessar as algumas funcionalidades das APIs do Google.

Provavelmente, por seu script não ser ainda homologado, a tela abaixo aparecerá:

Clique em Mostrar Avançado > Acessar Projeto e continue para a autorização:

Importando o arquivo CSV de um anexo de email no Gmail
function importarCSVDoGmail() { var emails = GmailApp.search("from:[email protected]"); // Filtramos nossos emails var email = emails[0].getMessages()[0]; // Pegamos a primeira mensagem da thread do email var anexo = email.getAttachments()[0]; // Pegamos o primeiro anexo do email // Validamos se esse anexo é um CSV if (anexo.getContentType() === "text/csv") { var planilha = SpreadsheetApp.getActiveSheet(); // Selecionamos o objeto da planilha ativa var csv = Utilities.parseCsv(planilha.getDataAsString(), ","); // Limpamos o conteúdo da planilha antes de importar os dados sheet.clearContents().clearFormats(); // Importamos todos os dados a partir da célula A1 sheet.getRange(1, 1, csv.length, csv[0].length).setValues(csv); } }
Em nossa variável de emails vamos realizar um busca de filtro em nosso Gmail para retornar o primeiro e-mail correspondente, podemos utilizar qualquer operador de busca do Gmail dentro da função GmailApp.search("operador:busca")
, confira aqui a lista completa de operadores.
Importando o arquivo CSV do Google Drive
function importarCSVDoGoogleDrive() { var arquivo = DriveApp.getFilesByName("data.csv").next(); var csv = Utilities.parseCsv(arquivo.getBlob().getDataAsString()); var planilha = SpreadsheetApp.getActiveSheet(); planilha.getRange(1, 1, csv.length, csv[0].length).setValues(csv); }
No exemplo acima estamos buscando o arquivo data.csv
que está na raiz do Google Drive, altere esse caminho conforme sua necessidade.
Baixar e importar o arquivo CSV de um website externo
function importarCSVDaWeb() { // URL de download do arquivo CSV var csvUrl = "https://marquesfernandes.com/wp-content/uploads/2020/01/exemplo_csv.csv"; var csv = UrlFetchApp.fetch(csvUrl).getContentText(); var dados = Utilities.parseCsv(csv); var planilha = SpreadsheetApp.getActiveSheet(); planilha.getRange(1, 1, dados.length, dados[0].length).setValues(dados); }
Lembrando que o serviço UrlFetchApp faz apenas requisições HTTP, não sendo possível ainda conectar em servidores FTP.
Eu gostaria de importar um arquivo .xls do e-mail para o google planilha. Já tentei várias formas, mas não consegui. Você pode ajudar?
Boa noite Bruno! Então, você pode tentar converter o xls em csv no seu drive pelo App Scripts, da uma olhada nesse link https://www.labnol.org/code/20248-convert-excel-to-csv, você pode usar a etapa que baixa o anexos do gmail e trocar o tipo de arquivo que ele espera de “text/csv” para “application/vnd.ms-excel” e tentar adicionar a etapa de conversão que ele explica nesse link no meio e usar depois usar o csv convertido para importar para o Google Sheets!
bacana, mas como importar arquivos de uma máquina desktop? Exemplo: com o GAS, importar arquivos de c://meus documentos/arquivo.xlsx
Boa noite Rodrigo, nesse caso você precisa importar o CSV para o Google Drive e de lá importar para o planilhas. Caso você precise que esse CSV seja atualizado dinamicamente, você pode instalar o aplicativo do google drive no seu computador e deixar o CSV salvo e sincronizado, assim sempre que alterar o arquivo você conseguirá ver a alteração na sua planilha também.
Como importar dados de uma planilha google para google docs?
Boa noite Lucas, desculpa a demora pra responder! Você pode simplesmente dar CTRL + C na planilha ou nos dados que deseja importar e CTRL + V direto no Google Docs, ele vai te perguntar se você deseja apenas importar os dados ou deixar os dados linkados, caso você opte para a segunda opção, sempre que você alterar a planilha os dados serão alterados em seu Google Doc.
Ola,
Muito bom seu post, eu estava precisando algo parecido para ler arquivos do drive.
Acabei testando o do gmail também mas por alguma razão quando ele encontra o anexo, vi no Logger que ele lê como application/excel nao como texto/csv e por isso ele não sobe o arquivo pra planilha. Sabe se tem como contornar isso?
Fala Thiago, não sei, mas posso tentar ajudar! Seu anexo ta salvo como csv e ta lendo como xlsx? Ou ele ta como xlsx e você quer ler como csv?