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).
Si no almacenas los datos de GSC, los perderás pasados 3 meses porque Google no los almacena. Aquí un script que te permitirá importar datos almacenados en MySQL a SPREADSHEEThttps://t.co/KKDF7D2Pd1
— José B. Moreno⎠ (@jbmoreno) 28 de noviembre de 2017
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:
Query
: es una cadena de texto y es la consulta SQL que quieras hacer a la Base de datos MySQLColumn
: 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)Cell
: es la referencia a la celda desde la que se van a insertar los datosAdemá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.
6 Comments
Que tal un saludo, el Script para importar datos de MySQL a SPREADSHEET donde tendria que estar almacenado
en el editor de secuencia de comandos Google SPREADSHEET
Genial!! Gracias por este post. Me hizo descubrir Google App Script. Justamente estaba buscando algún método de traer datos MySQL a Googel Spreadsheet.
Muchas gracias!
Buenas Tardes,
Como podriamos insert registros en Mysql desde SpreadSheet?
cuales son las caracteristicas o configuraciones que debe tener MYSQL?
Ninguna especial que yo sepa.