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: 1Napisałem własną funkcję „logstuff”, aby wydrukować wiadomości, ponieważ nie podoba mi się wbudowana funkcja Logger.log.
Dziękuję Ci!