我一直在尝试在 Google 应用程序脚本(电子表格内)中获取一些函数来修改全局变量,但我似乎无法弄清楚。
基本上我想声明一个变量(在本例中为“globalTestVar”),并且每次两个函数之一(globalVarTestFunctionOne 和两个)启动时,这个变量应该增加一。
问题是每次按下按钮时都会再次声明变量,即使 if(typeof(globalTestVar) == 'undefined')-statement 应该处理这个问题。
我习惯了 Objective C 和 Java,我可以在开始时声明我的变量,然后在代码中的任何位置修改这些变量。
如果这是一个基本问题,我很抱歉,但我已经搜索了几个小时,但我无法让它工作。
这是代码:
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);
}
输出:
- 外面3
- 声明全局变量
- 外面3
- 声明全局变量
- globalVarTestFunctionOne
- globalTestVar 的值:1
- 外面3
- 声明全局变量
- 全局变量测试函数二
- globalTestVar 的值:1
我编写了自己的函数“logstuff”来打印消息,因为我不喜欢内置的 Logger.log 函数。
谢谢!