martes, 12 de junio de 2018

Convertir casillas de verificación ☑️ en selección múltiple 🔘

No hace mucho, Google creó la opción de incluir casillas de verificación en las hojas de cálculo. Os muestro un ejemplo:






En este caso utilizo las casillas para que el usuario decida si un correo se manda en castellano, en euskera o en bilingüe.
Pero, mi problema es que, como son casillas de verificación, no quiero que me marquen mas de una, sino que cuando marquen una las restantes se desmarquen.

Las casillas no tienen por defecto dicho comportamiento, ya que puedes marcar una, varias o todas.

Mediante código podemos conseguir que se comporten como selección múltiple (según el lenguaje de los formularios de drive) o radio buttons ( según html), es decir como:
🔘


Para conseguirlo vamos a utilizar la función onEdit(event) que viene por defecto en Google Script

Esta función corre cada vez que hay un cambio en la hoja de cálculo, por lo que, con una estructura condicional, haremos que cada vez que hagamos clic en una casilla de verificación los valores de todas las demás pasen a "false"

function onEdit(event) {
// Gracias al argumento "event" pillamos la celda que cambia en cada momento
     var celda_cambiada= event.source.getActiveRange().getA1Notation();
//  Enlazamos a la hoja de cálculo activa y la pestaña que nos interesa    
     var aplicacion = SpreadsheetApp.getActiveSpreadsheet()
     var pestana = aplicacion.getRangeByName('correo_plantilla').getSheet()
 

// Por medio de switch tenemos un condicional con más de dos opciones, más claro y eficaz que IF   
     switch(celda_cambiada) { // comparamos la celda cambiada y creamos tres casos
    case 'C15':
        pestana.getRange('c16').setValue(false) // hacemos que la c16 se desmarque
        pestana.getRange('c17').setValue(false)
// hacemos que la c17 se desmarque 
       break; // Salimos del código condicional
    case 'C16':
        pestana.getRange('c15').setValue(false)
        pestana.getRange('c17').setValue(false)
        break;
    case 'C17':
        pestana.getRange('c15').setValue(false)
        pestana.getRange('c16').setValue(false)
        break;
    default:
        Browser.msgBox('Mala puntería')
}
}

No hay comentarios:

Publicar un comentario

Crear PDF horizontal

El código que vamos a mostrar aquí no ha sido creado por nosotros, sino que lo hemos encontrado en Internet. Objetivo: Publicar una pesta...