Variables globales en Google Script (hoja de cálculo)
He estado tratando de obtener algunas funciones en un script de Google Apps (dentro de una hoja de cálculo) para modificar una variable global, pero parece que no puedo resolverlo.
Básicamente, quiero declarar una variable (en este caso "globalTestVar"), y cada vez que una de las dos funciones (globalVarTestFunctionOne y dos) inicie esta variable debería incrementarse en una.
El problema es que la variable se vuelve a declarar cada vez que se presiona un botón, aunque la instrucción if (typeof (globalTestVar) == 'undefined') - debe encargarse de eso.
Estoy acostumbrado a Objective C y Java, donde puedo declarar mis variables al principio y modificar estas variables en cualquier parte del código.
Lo siento si esta es una pregunta básica pero he estado buscando en Google durante horas y simplemente no puedo hacerlo funcionar.
Aquí está el código:
logstuff("outside");
function logstuff(logInput){
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
var lastRow = sheet.getLastRow() + 1;
sheet.getRange("A"+lastRow).setValue(logInput);
return;
}
if (typeof(globalTestVar) == 'undefined') {
logstuff('declaring global variable');
globalTestVar = 0;
} else {
logstuff('global variable has been declared');
}
function globalVarTestUIFunction() {
var app = UiApp.createApplication().setTitle('Test UI');
var doc = SpreadsheetApp.getActive();
var formPanel = app.createVerticalPanel();
var buttonF1 = app.createButton('F1');
var buttonbuttonF1ClickHandler = app.createServerClickHandler("globalVarTestFunctionOne");
buttonF1.addClickHandler(buttonbuttonF1ClickHandler);
buttonbuttonF1ClickHandler.addCallbackElement(formPanel);
var buttonF2 = app.createButton('F2');
var buttonbuttonF2ClickHandler = app.createServerClickHandler("globalVarTestFunctionTwo");
buttonF2.addClickHandler(buttonbuttonF2ClickHandler);
buttonbuttonF2ClickHandler.addCallbackElement(formPanel);
app.add(formPanel);
formPanel.add(buttonF1);
formPanel.add(buttonF2);
doc.show(app);
return app;
}
function globalVarTestFunctionOne() {
logstuff('globalVarTestFunctionOne');
globalTestVar++;
logstuff('Value of globalTestVar: ' + globalTestVar);
}
function globalVarTestFunctionTwo() {
logstuff('globalVarTestFunctionTwo');
globalTestVar++;
logstuff('Value of globalTestVar: ' + globalTestVar);
}
Salida:
afuera3declarando variable globalafuera3declarando variable globalglobalVarTestFunctionOneValor de globalTestVar: 1afuera3declarando variable globalglobalVarTestFunctionTwoValor de globalTestVar: 1He escrito mi propia función "logstuff" para imprimir mensajes porque no me gusta la función integrada Logger.log.
¡Gracias!