Last active
December 2, 2020 22:53
-
-
Save fixmycode/a9b29ca8d6d36f49e7e14294a63f547b to your computer and use it in GitHub Desktop.
Leer información de una spreadsheet de Google y agregarla como selección múltiple en un Google Forms
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const FORM_ID = "idDelDocumento" //se obtiene de la dirección del formulario en Google Drive | |
const FORM_QUESTION_TITLE = "Usuario de la máquina" //nombre de la pregunta, potencialmente se podría ocupar otro método para buscarla | |
const SHEET_TITLE = "Capacitaciones" //nombre de la hoja de la cual se deben detectar cambios | |
const DATA_COLUMN = 1 //número de columna donde están los datos a monitorear | |
const DATA_FROM_ROW = 2 //número de fila donde aparece el primer dato | |
const DATA_NUM_ROWS = 1000 //límite de búsqueda de datos | |
//Obtiene los valores a usar desde la planilla | |
//sheet es el objeto hoja desde donde se leerán los datos, ingresa por el evento de edición. | |
function getNames(sheet) { | |
let range = sheet.getRange(DATA_FROM_ROW, DATA_COLUMN, DATA_NUM_ROWS) | |
let names = range.getValues().filter((e) => e[0].length > 0).map((e) => [0]) | |
return names.sort() | |
} | |
//Cambia la lista de opciones de una pregunta en base al título de la pregunta | |
function setFormOptionsForTitle(title, values) { | |
let form = FormApp.openById(FORM_ID) | |
let titles = form.getItems().map((e) => e.getTitle()) | |
let question = form.getItems()[titles.indexOf(title)].asListItem() | |
question.setChoiceValues(values) | |
} | |
//Corre cuando se cambia un valor en la hoja de cálculo. Debe ser designado como "trigger". | |
//Edit > Current Project's Triggers > Add Trigger | |
function handleUpdate(ev) { | |
let range = ev.range | |
if (range.getSheet().getName() == SHEET_TITLE && range.getColumn() == DATA_COLUMN) { | |
Logger.log("editó el sector de datos observables") | |
setFormOptionsForTitle(FORM_QUESTION_TITLE, getNames(range.getSheet())) | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment