En el proceso de instalar la herramienta en cada centro, como es lógico, creamos una copia de la herramienta. En dicha copia está todo lo necesario para que funcione salvo los activadores del código, que hay que volver a instalarlos.
Hasta ahora, gracias a unos apuntes le mostrábamos a los usuarios como hacerlo de forma manual.
En este artículo, sin embargo, mostramos como hacer este proceso mucho más sencillo para el usuario final.
Necesitamos dos funciones:
function instalar(){
// Apuntamos a la herramienta
var herramienta = SpreadsheetApp.getActiveSpreadsheet()
// Apuntamos a una pestaña especial donde guardamos variables. En este caso guardaremos una variable para que solamente se instalen una vez los activadores
var variables= herramienta.getRangeByName('variables').getSheet()
// Si no está guardada la variable, significa que es la primera vez que el usuario utiliza esta función
if (variables.getRange('G1').getValue() !="fuera"){
// Las siguientes líneas muestra diferentes activadores creados (tiempo, enviar formulario, editar). En la documetación de Google Script encontrarás más información. Después del método newTrigger se escribe el nombre de la función que queremos activar.
ScriptApp.newTrigger('avisar_ausencias').forSpreadsheet(herramienta).onFormSubmit().create()
ScriptApp.newTrigger('mandar_formulario_feedback').forSpreadsheet(herramienta).onFormSubmit().create()
ScriptApp.newTrigger('grabar_asignacion2').forSpreadsheet(herramienta).onEdit().create()
ScriptApp.newTrigger('mandar_correo_con_guardia_hecha').timeBased().everyHours(1).create()
// Una vez creados, mostramos mensaje y damos la posibilidad de que no vuelva a correr esta función gracias a la variable borrar
var borrar = Browser.msgBox('Activadores instalados. \\n\\nDale al botón de aceptar para que no vuelva a salir este mensaje.',Browser.Buttons.OK_CANCEL)
// Si el usuario dice que sí , escribimos la palabra "fuera" y, así, hacemos que no vuelva a entrar en este condicional
if (borrar=='ok'){
variables.getRange('G1').setValue('fuera')
}
}
else { // En la segunda vez que entre, la variable está ya guardada y mostramos este mensaje
Browser.msgBox('Ya tienes instalados todos los activadores.\\n\\n¡No hace falta que vuelvas a hacerlo!')
}
}
// Para avisar al usuario de que debe correr el código de activadores debemos incluir en la función onOpen (o en cualquiera que corra al abrir) estas líneas. El condicional hace que solamente aparezca la primera vez que se abre la herramienta
var herramienta = SpreadsheetApp.getActiveSpreadsheet()
var variables= herramienta.getRangeByName('variables').getSheet()
if (variables.getRange('G1').getValue() !="fuera"){
Browser.msgBox('Para que el código funcione, debes activar el código. \\n\\n Vete a -herramientas-Macros \\ny utiliza -Activar código')
}
Dos notas:
- Para que el usuario pueda "instalar" los activadores sin entrar en la zona de secuencias de comandos, podemos incluir dicha función entre las macros y así ponerselo fácil.
- Por suerte, el activador "al abrir" si que se hereda en la copia, por lo que no hace falta activarlo :)
No hay comentarios:
Publicar un comentario