Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@fixmycode
Last active December 2, 2020 22:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fixmycode/a9b29ca8d6d36f49e7e14294a63f547b to your computer and use it in GitHub Desktop.
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
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