Actualmente estoy desarrollando una Web App en Google Apps Script. Soy lo suficientemente competente para hacer lo que necesito, pero es la primera vez que desarrollo algo en cualquier tipo de escala, y estoy buscando orientación sobre las mejores prácticas para el rendimiento (si es que marca alguna diferencia) .
Tengo una serie de variables (cargando datos de varias hojas) a las que será necesario acceder varias veces, mediante múltiples funciones. En el pasado, siempre los he declarado como constantes fuera de cualquier función, por lo que puedo usar cualquier función para acceder a ellos. Por ejemplo:
const SS = SpreadsheetApp.getSpreadsheetById("spreadsheetId"); const SHEET1 = SS.getSheetByName("sheetName"); const DATA1 = SHEET.getRange(blah, blah, blah, blah).getValues(); const SHEET2 = SS.getSheetByName("sheetName"); const DATA2 = SHEET.getRange(blah, blah, blah, blah).getValues();Tanto la hoja como los datos serán accedidos varias veces por varias funciones. Sin embargo, hay 6 o 7 hojas y conjuntos de datos a los que se accederá mediante varias funciones. Accederán a múltiples conjuntos de datos (o obtendrán rango directamente de la hoja si necesitan un fragmento), pero ninguna función accederá a todos ellos a la vez. ¿Siguen cargadas esas variables, incluso si la función no las requiere?
Por ejemplo, tengo una función que se ejecuta en FormSubmit. Quiero que se ejecute lo más rápido posible. Sólo accede a una de las 7 hojas. ¿Eso será inicializar todas las variables globales cuando se ejecuta, aunque no sean necesarias?
Creo que he logrado responder a mi propia pregunta. Usando el depurador en el IDE de GAS. Parece que una de mis funciones que solo usa un fragmento de los datos está cargando todas mis variables.
de la pregunta
¿Siguen cargadas esas variables, incluso si la función no las requiere?
Eso depende. Si las constantes declaradas "fuera de cualquier función" (esto se llama alcance global) y las funciones pertenecen al mismo proyecto, entonces la respuesta es sí, pero si las constantes se declaran en una biblioteca, no estarán disponibles para las funciones del mismo. proyecto principal
Por ejemplo, tengo una función que se ejecuta en FormSubmit. Quiero que se ejecute lo más rápido posible. Sólo accede a una de las 7 hojas. ¿Eso será inicializar todas las variables globales cuando se ejecuta, aunque no sean necesarias?
Sí.
Dado que las llamadas a los servicios de Google Apps Script son "costosas" en términos de tiempo de ejecución, para que sus scripts sean eficientes y teniendo en cuenta que los activadores instalables tienen un límite diario, evite realizar llamadas que no se usan en todas las funciones en el ámbito global.