Esta es la segunda parte de la creación de formularios de forma dinámica, es decir mediante código Google apps script basados en una HCG (Hoja de cálculo de Google)
como decíamos la vez anterior, es innegable que la personas siempre deseemos ahorrar tiempo en nuestras tareas, pero no solo eso, a veces necesitamos que dichas tareas sean no solo rápidas sino complejas
hoy buscaremos avanzar un poco más y a parte de crear el formulario desde la Hoja de cálculo de Google, necesitaremos que este tome un puñado de preguntas de las 100 existentes en nuestra Google Sheets, para que de ahí cree nuestro formulario con preguntas tomadas aleatoriamente.
seguiremos usando nuestra hoja de calculo base para este ejercicio, pero renombrada para diferenciar un ejercicio del otro.
el código Google apps script, tiene el siguiente código.
una función onOpen que nos creara el menú en la interfaz de la HCG, con algunos iconos extras.
la función crearFromPregaleatorias que nos crea el formulario tomado aleatoriamente las preguntas de la columna A, de la hoja de cálculo de Google.
el código presenta algunos cambios para crear esa aleatoriedad tal como puedes apreciar, se crearon o adicionaron las siguientes variables
url.-que nos dará el enlace para ver el formulario creado en una ventana web usando HTML Service
html.-la ventana web arriba citada en la cual podremos dar clic para acceder rápidamente al formulario recién creado mediante código
numAleat.- que nos da el numero aleatorio de la lista de preguntas, puedes ver más de el en: https://www.w3schools.com/js/js_random.asp
y finalmente un dialogo modal que nos mostrará la ventana web propiamente dicha en la interfaz de la hoja de calculo, para poder dar clic en el link y acceder al formulario recién creado
este código lo puedes encontrar más adelante, para que solo lo copies y pegues en tu editor de secuencia de comandos y no tengas que escribirlo
el código se adaptó para que solo cree el formulario con 5 preguntas aleatorias, pero puede adaptar para que lo haga con 10, 20 ,etc. , solo hay que modificar el bulce for en esta línea: //for(var i=1; i < 6; i++){//crea menos de 6 preguntas es decir 5 :)
Dado que es el segundo acercamiento, crearemos un formulario con un mismo tipo de preguntas para mantenerlo sencillo.
en esta segunda ocasión la alerta se elimina ya que no es necesaria , por que en su lugar se mostrara una ventana web con un enlace , como ya se ha comentado.
El formulario será visible una vez que des clic en la ventana mostrada 😉
Como en el primer ejemplo ,puedes copiar el código y probarlo, pegándolo en el editor de secuencia de comandos de la hoja de calculo donde esta tu lista de preguntas , de otra forma no te funcionara.
el código se encuentra un poco más abajo 👇👇
si deseas ver el articulo sobre este tema, da clic aquí 👉 Crear formulario de 100 preguntas dinámicamente
Considera siempre aplicar lo que yo llamo la regla de oro, que básicamente consiste en realizar pruebas una y otra vez hasta estar seguro de obtener el resultado deseado 😎
Te recomiendo revisar este conjunto de consejos sobre formularios de Google
si tienes alguna consulta, por favor realízala en mi canal de YouTube en el vídeo respectivo, o el que más se parezca al tema.
Suscríbete y Síguenos en:
function onOpen(e) {
SpreadsheetApp.getUi()
.createMenu('📌 Menú de Fredy')
.addItem('👉 Crear Fromulario', 'crearFromPregaleatorias')
.addToUi();
}
function crearFromPregaleatorias(){
var Hoja = SpreadsheetApp.getActiveSheet();
var ufila= Hoja.getLastRow();
var datos = Hoja.getDataRange().getValues();
var FormPregAleatorias = FormApp.create("Preg aleatorias de Fredy-Prueba");
var url = FormPregAleatorias.getEditUrl();
var html = HtmlService.createHtmlOutput('<b><a target="_blank" href="' + url + '">Clic aquí</a></b>')
.setWidth(300).setHeight(50);
//var numAleat = Math.floor(Math.random() * 101);//https://www.w3schools.com/js/js_random.asp
//Logger.log(numAleat);
for(var i=1; i < 6; i++){//crea menos de 6 preguntas es decir 5 :)
FormPregAleatorias.addMultipleChoiceItem()
.setTitle(datos[Math.floor(Math.random() * 101)])
.setChoiceValues(['Si','No'])
//.setChoiceValues(['En total desacuerdo','En desacuerdo','Neutro/no opinión','De acuerdo','Totalmente de acuerdo'])
.showOtherOption(false)
.setRequired(true);//false
}
FormPregAleatorias.setShuffleQuestions(true);//preg aleatorias
SpreadsheetApp.getUi().showModalDialog(html, 'Revisa tu Form 👇');
}