我正在尝试使用表格在Google Script中构建计算器。 在这里,我使用两个输入(是的,它们已经被赋予var,它们被存储)并尝试添加它们以获得将进一步自动放入单元格B2的输出。
function doMath() {
var add = (value1 + value2);
SpreadsheetApp.getActiveSheet().getRange('B2').setValue(add);
}
但是这个错误信息不断弹出:
ReferenceError:未定义“value1”。
我对编程很新,所以我不知道问题是什么。
编辑:这是我定义输入的地方:
function readInput() {
var value1 = SpreadsheetApp.getActiveSheet().getRange('A1').getValue();
var value2 = SpreadsheetApp.getActiveSheet().getRange('B1').getValue();
EDIT2:请记住,这是两个单独的功能。那是问题吗? 并且还注意到单元格A1和B1的值分别为8和9。 (作为例子)
答案 0 :(得分:0)
您的value1和value2未定义。它们在不同的功能中定义。试试这个。
function doMath() {
var value1 = SpreadsheetApp.getActiveSheet().getRange('A1').getValue();
var value2 = SpreadsheetApp.getActiveSheet().getRange('B1').getValue();
var add = (value1 + value2);
SpreadsheetApp.getActiveSheet().getRange('B2').setValue(add);
}
答案 1 :(得分:0)
你的问题是关于js中的范围。在函数内部定义var时,它将在此函数的本地(即不在外部定义)。解决方案是在外部定义它们(即使它们成为全局)。
var value1, value2;
function doMath() {
var add = (value1 + value2);
SpreadsheetApp.getActiveSheet().getRange('B2').setValue(add);
}
function readInput() {
value1 = SpreadsheetApp.getActiveSheet().getRange('A1').getValue();
value2 = SpreadsheetApp.getActiveSheet().getRange('B1').getValue();
}
避免污染全局命名空间。您可以将其包含在自调用匿名函数中:
(function(){
// your code…
})();