Les variables globales du Script Google (feuille de calcul)

J'ai essayé d'obtenir certaines fonctions dans un Google apps script (à l'intérieur d'une feuille de calcul) pour modifier une variable globale, mais je n'arrive pas à le comprendre.

Fondamentalement, je veux déclarer une variable (dans ce cas "globalTestVar"), et à chaque fois que l'une des deux fonctions (globalVarTestFunctionOne et deux) lance cette variable incrémentée de un.

Le problème est que la variable est déclarée à nouveau chaque fois qu'un bouton est pressé, même si le if(typeof(globalTestVar) == 'undefined')-la déclaration doit prendre soin de cela.

Je suis habitué à l'Objective-C et Java où je peux déclarer mes variables au début, et de modifier ces variables n'importe où dans le code.

Je suis désolé si c'est une question de base, mais j'ai cherché sur google pendant des heures et je ne peux pas le faire fonctionner.

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

De sortie:

  • outside3
  • de déclarer une variable globale
  • outside3
  • de déclarer une variable globale
  • globalVarTestFunctionOne
  • Valeur de globalTestVar: 1
  • outside3
  • de déclarer une variable globale
  • globalVarTestFunctionTwo
  • Valeur de globalTestVar: 1

J'ai écrit ma propre fonction "logstuff" pour imprimer les messages, car je n'aime pas le construit dans l'Enregistreur.journal-fonction.

Merci!

OriginalL'auteur Eric | 2013-06-29