Variáveis globais no Google Script (planilha eletrônica)
Eu tenho tentado obter algumas funções em um script de aplicativos do Google (dentro de uma planilha) para modificar uma variável global, mas não consigo descobrir.
Basicamente eu quero declarar uma variável (neste caso "globalTestVar"), e toda vez que uma das duas funções (globalVarTestFunctionOne e dois) for lançada, esta variável deve ser incrementada em um.
O problema é que a variável está sendo declarada novamente toda vez que um botão é pressionado, embora a instrução if (typeof (globalTestVar) == 'undefined') deva cuidar disso.
Estou acostumado a Objective C e Java, onde posso declarar minhas variáveis no início e modificar essas variáveis em qualquer lugar no código.
Me desculpe se esta é uma pergunta básica, mas estive pesquisando por horas e não consigo fazer funcionar.
Aqui está o 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);
}
Saída:
outside3declarando variável globaloutside3declarando variável globalglobalVarTestFunctionOneValor de globalTestVar: 1outside3declarando variável globalglobalVarTestFunctionTwoValor de globalTestVar: 1Eu escrevi minha própria função "logstuff" para imprimir mensagens porque eu não gosto da função Logger.log embutida.
Obrigado!