Comecei a trabalhar em uma Google Spreadsheets para controlar os meus posts do blog e algumas outras métricas de acompanhamento, como odeio trabalho repetitivo, logo cansei de ficar copiando, colando e atualizando todas as informações manualmente. Foi quando descobri que existe uma maneira de conectar diretamente a minha planilha ao banco de dados da minha instalação WordPress e fazer algumas consultas pra extrair automaticamente os dados que eu preciso. Tudo isso é possível através do Google App Scripts, uma plataforma de script desenvolvida pela Google para o desenvolvimento de aplicativos leves utilizando a linguagem de desenvolvimento Javascript.
* Se você está familiarizado com o Excel, o Apps Scripts é o VBA do Google Planilhas.
O Google App Scripts permite acesso ao conector JDBC, que nos permite conectar a nossa Google Planilha a um banco de dados MySQL (Até a versão 5.7), Microsoft SQL Server, Oracle ou Google Cloud SQL.
Vamos aprender como conectar em nosso banco de dados, realizar consultas e exibir em um range de células de nossa planilha. Se você não conhece JavaScript ou tem pouco familiaridade com códigos, não se preocupe, seguindo os passos desse artigo você vai conseguir ter uma função fácil e genérica para realizar consultas em SQL sem precisar modificar quase nada.
Criando a Planilha
Bom, a primeira coisa que precisamos fazer é criar uma nova planilha e abrir o editor de códigos do Google Apps Scripts:
Vamos então ter uma editor de código parecido com o abaixo:
Criando o App Scripts para Conectar no Banco de Dados
Agora vamos copiar o código de exemplo para o nosso arquivo:
function getPosts() {
/*
* Dados de Conexão
*
* Altere os dados abaixo com os dados de sua conexão
*/
var BANCO = "mysql"; // Conector do banco
var HOST = "0.0.0.0"; // IP (0.0.0.0) ou HOST (seudominio.com.br)
var PORTA = "3306"; // Porta para conexão
var BANCODEDADOS = "wordpress" // Banco de dados desejado
var USUARIO = "usuario"; // Usuario
var SENHA = "senha"; // Senha
var ABA = "posts" // Aba para imprimir os resultados
var start = new Date(); // Debug, vamos usar para saber o tempo de execução do script
// Google Planilhas
var doc = SpreadsheetApp.getActiveSpreadsheet(); // Retorna a aba ativa
var posts = doc.getSheetByName(ABA); // Selecionamos a aba para limpar os dados
posts.clear(); // Limpamos todos os dados
var cell = doc.getRange('a1'); // Vamos inserir os dados a partir da primeira célula
// Criamos a conexão com o banco de dados
var conn = Jdbc.getConnection("jdbc:" + BANCO +"://" + HOST + ":" + PORTA + "/" + BANCODEDADOS, USUARIO, SENHA);
var stmt = conn.createStatement();
var rs = stmt.executeQuery("SELECT * FROM wp_posts LIMIT 10"); // Executamos a query para buscar em nosso banco de dados
var row = 0;
var getCount = rs.getMetaData().getColumnCount(); // Contamos quantas colunas a consulta retornou
for (var i = 0; i < getCount; i++){
cell.offset(row, i).setValue(rs.getMetaData().getColumnName(i+1)); // Adicionamos os nomes para as colunas
}
var row = 1;
while (rs.next()) {
for (var col = 0; col < rs.getMetaData().getColumnCount(); col++) {
cell.offset(row, col).setValue(rs.getString(col + 1)); // Adicionamos os dados por linha
}
row++;
}
rs.close();
stmt.close();
conn.close();
var end = new Date();
Logger.log('Tempo de execução: ' + (end.getTime() - start.getTime())); // Geramos um log de tempo execução
}
Altere todas as variáveis indicadas no início do script para a configuração da sua conexão, recomendo que na variável HOST
você utilize o IP, porque o Google App Script possui alguns problemas com resolução de DNS que podem dar um falso erro de conexão no banco de dados.
Esse script basicamente realiza uma conexão ao banco de dados, no exemplo usei um banco de uma instalação WordPress, onde eu faço um select simples, SELET * FROM wp_posts LIMIT 10
, onde ele me retorna 10 posts (linhas) da tabela wp_posts
. Com o resultado fazemos um loop para criar os cabeçalhos e popular as linhas na aba posts
, veja o resultado abaixo:
Conclusão
Esse foi um exemplo simples de como conectar ao seu banco de dados e executar um query SQL, você pode alterar esse script e realizar qualquer consulta SQL. Essa integração permite criar uma ferramente poderosa, podemos extrair e atualizar automaticamente dados de nossos sistemas para análise, geração de relatório e muito mais!
funciona com postgres?
é possivel conectar com o ODBC ?
Segundo a documentação atualmente é apenas possível usando o JDBC, o app script não tem suporte para ODBC
E como faço o inverso, tipo quero inserir o que esta no google no meu banco local.
Fiz ate um nat para conectar
Para SQL server seria no BANCO: ‘sqlserver’ ?
Bom dia, pelo que sem no JavaScript você chama o sqlserver por ‘mssql’
Boa tarde, Henrique tudo bem?
Muito obrigado, eu consegui conectar o mysql com o google sheet!
Eu só fiquei com uma dúvida, tem deixar executando automaticamente ou apenas manualmente?
Olá! Você conseguiria transformar esse código para aceitar PostgreSQL? 🙂
Bom dia tudo bem?
O meu deu esse erro, oque pode ser?
Você ta tentando conectar em que tipo de banco? Pelo que vi aqui, esse erro acontece quando tentam conectar em no MariaDB, e ele não é suportado ainda.
eu uso a conexão ODBC no excel para concter a esse banco de dados, ai pensei que daria certo no google também.
Mas aproveitando, é possivel que a planilha do google consulte uma planilha em excel no computador para buscar dados? assim eu só atualizaria a planilha no pc local. tipo o power B.I.
Nesse caso eu faria o inverso, você pode criar um vbazinho que empurra os dados pra planilha do google. Fazer o google planilha buscar, talvez até desse, mas, daria muito trabalho.
você já fez algo parecido?, não tenho muita experiência em VBA, sei bem básico mesmo rsrs.
Você vai precisar utilizar as APIs do Google Sheet e acionar elas pelo VBA. No artigo talvez te ajude a começar a desenvovler algo:
https://marquesfernandes.com/desenvolvimento/como-usar-o-excel-vba-para-consultar-apis-rest-json/
Certo, Muito obrigado.
é possível fazer o inverso?
mandar dados de uma planilha do google sheets, para um banco de dados php ?? e isso de forma automática?
PHP vc se refere a executar um script? Caso sim, é possível! Com o Google apps scripts vc consegue fazer chamadas HTTP tb