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:henrique@marquesf.com"); // 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.
Boa tarde
Gostaria de criar um botão de importação, onde ele busca o arquivo em meu computador e carrega para o Sheets
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?