0

我正在尝试使用表格在 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。(举个例子)

4

2 回答 2

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);
}
于 2014-09-23T00:40:57.823 回答
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…
})();
于 2014-09-23T01:19:25.423 回答