Uno de los problema que se dan con alguna frecuencia es que se desea fusionar por así decirlo los datos existentes de una HCG (Hoja de cálculo de Google) aun formulario en el cual ya se tienen respuestas, debido a un manejo inadecuado tanto del formulario como de la HCG(es mi punto de vista) .🙄
hay ocasiones en que empiezan a capturar la información directamente en la HCG y después elaboran o crean un formulario y tienen entonces la información dividida
otras veces crean 2 copias del formulario y no distinguen entre uno y otro(no me pregunte como) y lo aplican indistintamente, lo que ocasiona nuevamente que tengan información dividida.
para este tipo de casos he creado un tema que puede desestimarse fácilmente por su escueto contendido, pero como lo digo ahí mismo vale su peso en oro, por cierto los invito a leerlo: Tips para usar formularios de Google
En fin , cuando el problema ya está hecho , necesitamos poner manos a la obra y ver como lo resolvemos 😎
Desde mi óptica existen varias soluciones a saber.
fusionar los datos en una de las HCG asociadas al Google form
fusionar los datos en una tercer HCG que obviamente no este asociada a ningún formulario
enviar las respuestas (datos) de la HCG a uno de los formularios mediante google apps script
enviar los datos a un nuevo formulario desde las 2 fuentes de datos (HCG) mediante google apps script
y bueno las formas variadas pueden continuar.
aquí vamos a explicar como enviar las respuestas de la hoja de calculo a un formulario con algunas respuestas previas, mediante código.
que exista un formulario con respuestas previas
que tenga su HCG asociada y las respuestas capturadas en la HCG
que exista una tercer HCG desde la cual se quiera enviar información al formulario para que queden en el formulario y consecuentemente en su HCG asociada.
crear un formulario con 2 preguntas
nombre.- está será una pregunta de tipo "texto breve"
aplicación preferida.- pregunta de tipo "lista desplegable" con los items o elementos: GAS,Documentos,HCG,Presentaciones,Formularios
2. crear la HCG que estará asociada al form.
3.- enviar algunos datos de prueba, para asegurar que toda funciona bien.
4. insertar una nueva pestaña u hoja interna y la re nombramos de la siguiente manera "Datos importados de otra HC " , y definimos los datos a enviar que serán los que se observan a continuación en la imagen
esta pestaña simula los datos a importar desde la HCG (creo que debí cambiarle el nombre 😕 por este ultimo ya que se entiende mejor
5.-agregar 2 botones.- uno para enviar los datos al formulario, que es el que más nos interesa 😃 en colo rojo y otro de complemento para borrar los registros y repetir pruebas en color azul.
6. copiar y pegar el siguiente script o función
function enviaRespForm() {
var form = FormApp.openById("17Y5NKHlvqq-VqzKOBWKSLYvGdWaHHC1uIn2LWzj0o5M");
var preg = form.getItems();//Logger.log(preg[0].getTitle());
var ss = SpreadsheetApp.getActive().getSheetByName("Datos importados de otra HC");
var datos = ss.getDataRange().getValues().slice(1);
//Logger.log(datos);Logger.log(datos.length);
var resp = new Array(datos.length);
for(var i= 0; i<datos.length;i++ ){
//Logger.log("Dato " + i + " = " + datos[i][0] + "---" + datos[i][1]);
resp[i] = form.createResponse();
//https://developers.google.com/apps-script/reference/forms/form#createResponse()
resp[i].withItemResponse(preg[0].asTextItem().createResponse(datos[i][0]));
resp[i].withItemResponse(preg[1].asListItem().createResponse(datos[i][1]));
resp[i].submit();
}
SpreadsheetApp.getUi().alert("Datos enviados");
}
aquí el código completo: 😎
7. asignar los script a los botones
8. autorizar la ejecución de los scripts en caso necesario
9. aparecerá un mensaje de datos enviados al formulario , lo que implica que puedes ir a revisar los datos para verificar su existencia 😉
inclusive en la HCG asociada al mismo, en este caso he marcado con amarillo los limites de los ultimos datos enviados y los del día de hoy (01/09/2020) con esta prueba
si tienes alguna consulta, por favor realizala en mi canal de YouTube en el vídeo respectivo.
para pedir tu copia del formulario debes escribir en los comentarios #ofiemprendeform y para la HCG debes usar #ofiemprendehcg
function enviaRespForm() {
var form = FormApp.openById("OBTEN EL ID DEL FORM Y PONLO AQUÍ");
var preg = form.getItems();//Logger.log(preg[0].getTitle());
var ss = SpreadsheetApp.getActive().getSheetByName("Datos importados de otra HC");
var datos = ss.getDataRange().getValues().slice(1);
//Logger.log(datos);Logger.log(datos.length);
var resp = new Array(datos.length);
for(var i= 0; i<datos.length;i++ ){
//Logger.log("Dato " + i + " = " + datos[i][0] + "---" + datos[i][1]);
resp[i] = form.createResponse();
//https://developers.google.com/apps-script/reference/forms/form#createResponse()
resp[i].withItemResponse(preg[0].asTextItem().createResponse(datos[i][0]));
resp[i].withItemResponse(preg[1].asListItem().createResponse(datos[i][1]));
//resp[i].withItemResponse(preg[2].asCheckboxGridItem().createResponse([]));
resp[i].submit();
}
SpreadsheetApp.getUi().alert("Datos enviados");
}
function eliminarRegistrosForm(){
var form = FormApp.openById("OBTEN EL ID DEL FORM Y PONLO AQUÍ");
form.deleteAllResponses();
var ss = SpreadsheetApp.getActive().getSheetByName("Respuestas de formulario 1");
var uFila = ss.getLastRow();//Logger.log(uFila);
var quitaFilas = ss.deleteRows(2, uFila);
}
Suscríbete y Síguenos en: