0

スプレッドシートを使用して Google Script で電卓を作成しようとしています。ここでは、2 つの入力を使用しています (はい、それらには既に 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: これらは 2 つの別個の機能であることに注意してください。それが問題ですか?また、セル 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 に答える