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!

4.7 6 votos
Nota do Artigo
Subscribe
Notify of
guest

17 Comentários
newest
oldest most voted
Inline Feedbacks
View all comments
Henrique Antunes de Lazari
Henrique Antunes de Lazari
2 anos atrás

funciona com postgres?

MAYARA
MAYARA
2 anos atrás

é possivel conectar com o ODBC ?

Souza
Souza
2 anos atrás

E como faço o inverso, tipo quero inserir o que esta no google no meu banco local.
Fiz ate um nat para conectar

Gustavo Pereira
Gustavo Pereira
2 anos atrás

Para SQL server seria no BANCO: ‘sqlserver’ ?

Victor Peres
Victor Peres
Reply to  Gustavo Pereira
2 anos atrás

Bom dia, pelo que sem no JavaScript você chama o sqlserver por ‘mssql’

Renan
2 anos atrás

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?

Juliana
Juliana
2 anos atrás

Olá! Você conseguiria transformar esse código para aceitar PostgreSQL? 🙂

Alã Izepilovski
Alã Izepilovski
2 anos atrás

Bom dia tudo bem?

O meu deu esse erro, oque pode ser?

Screenshot_1.png
Alã Izepilovski
Alã Izepilovski
Reply to  Henrique Marques Fernandes
2 anos atrás

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.

Alã Izepilovski
Alã Izepilovski
Reply to  Henrique Marques Fernandes
2 anos atrás

você já fez algo parecido?, não tenho muita experiência em VBA, sei bem básico mesmo rsrs.

Alã Izepilovski
Alã Izepilovski
Reply to  Henrique Marques Fernandes
2 anos atrás

Certo, Muito obrigado.

Manasses
3 anos atrás

é 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?

17
0
Would love your thoughts, please comment.x