Globale Variablen in Google Script (Tabellenkalkulation)
Ich habe versucht, einige Funktionen in ein Google Apps-Skript (innerhalb einer Tabelle) zu integrieren, um eine globale Variable zu ändern, aber ich kann es scheinbar nicht herausfinden.
Grundsätzlich möchte ich eine Variable deklarieren (in diesem Fall "globalTestVar") und jedes Mal, wenn eine der beiden Funktionen (globalVarTestFunctionOne und zwei) gestartet wird, sollte diese Variable um eins inkrementiert werden.
Das Problem ist, dass die Variable jedes Mal neu deklariert wird, wenn eine Taste gedrückt wird, obwohl die if (typeof (globalTestVar) == 'undefined') - Anweisung dies erledigen sollte.
Ich bin an Objective C und Java gewöhnt, in denen ich meine Variablen am Anfang deklarieren und diese Variablen an einer beliebigen Stelle im Code ändern kann.
Es tut mir leid, wenn dies eine grundlegende Frage ist, aber ich habe stundenlang gegoogelt und kann es einfach nicht zum Laufen bringen.
Hier ist der Code:
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);
}
Ausgabe:
outside3globale Variable deklarierenoutside3globale Variable deklarierenglobalVarTestFunctionOneWert von globalTestVar: 1outside3globale Variable deklarierenglobalVarTestFunctionTwoWert von globalTestVar: 1Ich habe meine eigene Funktion "logstuff" geschrieben, um Nachrichten auszudrucken, da mir die eingebaute Logger.log-Funktion nicht gefällt.
Vielen Dank!