Importar datos de MySQL a SPREADSHEET

La hoja de cálculo de la suite ofimática de GOOGLE DRIVE es muy potente pero tiene una capacidad de almacenamiento de información bastante limitada (por ser gratuita y por estar en la nube), no obstante, para mi es vital trabajar con ella; para superar esta limitación lo que hago es almacenar la información en una base de datos MySQL e importar la información ya preprocesada y filtrada con consultas de MySQL a SPREADSHEET.

Un ejemplo de por qué debes almacenar la información en una BBDD potente como MySQL y una hoja de cálculo no es tu mejor opción para almacenar la información es: cuando te descargas los datos de GSC ya que -si no lo haces- los perderás pasados 3 meses porque GOOGLE no los almacena (haz unos números rápidos: si tienes mucho tráfico a través de muchas palabras clave y descargas la información mediante la API de GSC obtendrás 5000 líneas por lo que descargando los datos -al menos- cada mes obtendrás 60000 líneas de información de varias columnas de datos…¿has probado a manejar eso con GOOGLE SPREADSHEET? si lo haces, prepara palomitas porque va a tardar mucho).

¿Quieres saber más sobre formación en Marketing online? autopromo

Script para importar datos de MySQL a SPREADSHEET

Para poder trabajar como te digo, a continuación te dejo un script para importar datos de MySQL a SPREADSHEET.


function connectToMySqlDB(Query,Column,Cell){

// Obtiene las variables de conexión a la base de datos de la hoja SETUP
var address = String(SpreadsheetApp.getActive().getRange('Config!$E$2').getValue());
var user = String(SpreadsheetApp.getActive().getRange('Config!$E$3').getValue());
var userPwd = String(SpreadsheetApp.getActive().getRange('Config!$E$4').getValue());
var db = String(SpreadsheetApp.getActive().getRange('Config!$E$5').getValue());;
var dbUrl = 'jdbc:mysql://' + address + '/' + db;

// Ejecuta la conexión
var connection = Jdbc.getConnection(dbUrl, user, userPwd);

// Ejecuta la consulta pasada como parámetro Query
var SQLstatement = connection.createStatement();
var result = SQLstatement.executeQuery(Query);

// Escribe los valores obtenidos a partir de la celda pasada como parámetro Cell
var ss = SpreadsheetApp.getActiveSpreadsheet();
var cell = ss.getRange(Cell);

// Vuelca los datos obtenidos de la consulta en el nº de columnas pasadas como Column
var row = 0;
while(result.next()) {
for(var i=0; i<column ; i++) {
cell.offset(row, i).setValue(result.getString(i+1));
}
row++
}

// Cierra el objeto
result.close();
SQLstatement.close();
connection.close();
}

Observa que a la función se la pasan 3 parámetros:

  1. Query: es una cadena de texto y es la consulta SQL que quieras hacer a la Base de datos MySQL
  2. Column: es el número de columnas que tiene que traerse (tiene que ser menor o igual al número de columnas que solicites en la query)
  3. Cell: es la referencia a la celda desde la que se van a insertar los datos

Además de esto, en este ejemplo los datos de acceso a la BBDD (dirección, usuario, contraseña y base de datos) se añaden a unas variables que obtienen sus valores de las celdas de la hoja que he llamado “Config”: Config!$E$2, Config!$E$3, Config!$E$4 y Config!$E$5 por lo que tendrás que adaptar esto a tu configuración.