Saltar al contenido

Datos de Google Form para almacenar en la base de datos SQL en la nube

Este post fue analizado por expertos así se asegura la exactitud de nuestro tutorial.

Solución:

El flujo de datos normal para un formulario de Google que acepta respuestas y las replica en una hoja de cálculo se ve así:

msc

Tiene dos oportunidades para que un disparador de envío de formulario replique las respuestas del formulario en su base de datos de Cloud SQL; puede activar desde el formulario de Google Enviar formulario evento o las Hojas de cálculo de Google Enviar formulario evento.

De cualquier manera, tendrá una secuencia de comandos que se llamará para cada envío de formulario y un objeto de evento que contiene los valores de respuesta. Su función de activación debe usar el JDBC para conectarse a la base de datos; ese enlace incluye una introducción que lo guía a través de los aspectos más destacados.

Ejemplo

Digamos que tenemos un formulario que hace dos preguntas, “Nombre” y “Edad”. Eso daría como resultado 3 columnas en nuestra hoja de cálculo; “Marca de tiempo” más uno para cada pregunta.

Para igualar eso, tenemos una base de datos de Cloud SQL configurada con las mismas tres columnas.

Hojas de cálculo de Google Enviar formulario la función de activación que escribió en una base de datos de Cloud SQL se vería así no probado código:

// Replace the variables in this block with real values.
var address = 'database_IP_address';
var user = 'user_name';
var userPwd = 'user_password';
var db = 'database_name';

var dbUrl = 'jdbc:mysql://' + address + '/' + db;

// Receive form response and replicate to a row in SQL table
function handleFormSubmit( event ) 
  var conn = Jdbc.getConnection(dbUrl, user, userPwd);

  var stmt = conn.prepareStatement('INSERT INTO entries '
      + '(Timestamp, Name, Age) values (?, ?, ?)');
  stmt.setString(1, event.namedValues['Timestamp']);
  stmt.setString(2, event.namedValues['Name']);
  stmt.setString(3, event.namedValues['Age']);
  stmt.execute();

Poniendo un ejemplo de una solución que tengo funcionando. Modifiqué el script de Mogsdad para usar los parámetros y la función de conexión más actualizados, y solucioné los errores de sintaxis.

//Event is automatially passed on form submission when executed as a trigger. 
//It contains objects that the user submitted
function writeToCloudSQL(event) 
//Note we get subname from the 'Instance Connection Name' of the Overview tab in the CloudSQL portal
var subname = 'see image';
var user = 'user';
var userPwd = 'pwd';
var db = 'db_name';

var dbUrl = 'jdbc:google:mysql://' + subname + '/' + db;

var conn = Jdbc.getCloudSqlConnection(dbUrl, user, userPwd);

var stmt = conn.prepareStatement('INSERT INTO tbl_users (Timestamp, DL_ID, DOB, Last4SSN, HTMLGathered) values (NOW(), ?, ?, ?, 'No');');
stmt.setString(1, event.namedValues['DL_ID']);
stmt.setString(2, event.namedValues['DOB']);
stmt.setString(3, event.namedValues['Last4SSN']);

stmt.execute();


Localización del subnombre: Localización del subnombre

Lea más sobre el parámetro Evento aquí:

https://developers.google.com/apps-script/guides/triggers/events

Leer más sobre la conexión string aquí:

https://developers.google.com/apps-script/reference/jdbc/jdbc#getCloudSqlConnection(Cadena,Cadena,Cadena)

También asegúrese de haber permitido el acceso de red a los scripts de Google

https://developers.google.com/apps-script/guides/jdbc?hl=en#using_jdbcgetconnectionurl

Sección de Reseñas y Valoraciones

Si para ti ha sido provechoso este artículo, sería de mucha ayuda si lo compartieras con más desarrolladores de esta manera nos ayudas a difundir esta información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *