Zmienne globalne w Google Script (arkusz kalkulacyjny)

Starałem się, aby niektóre funkcje w skrypcie aplikacji Google (wewnątrz arkusza kalkulacyjnego) zmodyfikowały zmienną globalną, ale nie mogę tego zrozumieć.

Zasadniczo chcę zadeklarować zmienną (w tym przypadku „globalTestVar”) i za każdym razem, gdy jedna z dwóch funkcji (globalVarTestFunctionOne i dwie) uruchamia tę zmienną, powinna zwiększać się o jeden.

Problem polega na tym, że zmienna jest deklarowana ponownie za każdym naciśnięciem przycisku, nawet jeśli instrukcja if (typeof (globalTestVar) == 'undefined ”) - powinna się tym zająć.

Jestem przyzwyczajony do Objective C i Java, gdzie mogę zadeklarować moje zmienne na początku i zmodyfikować te zmienne w dowolnym miejscu kodu.

Przepraszam, jeśli jest to podstawowe pytanie, ale googluję godzinami i po prostu nie mogę go uruchomić.

Oto kod:

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);
}

Wydajność:

na zewnątrz3deklarowanie zmiennej globalnejna zewnątrz3deklarowanie zmiennej globalnejglobalVarTestFunctionOneWartość globalTestVar: 1na zewnątrz3deklarowanie zmiennej globalnejglobalVarTestFunctionTwoWartość globalTestVar: 1

Napisałem własną funkcję „logstuff”, aby wydrukować wiadomości, ponieważ nie podoba mi się wbudowana funkcja Logger.log.

Dziękuję Ci!

questionAnswers(2)

yourAnswerToTheQuestion