2

英語は私の母国語ではありません。間違いを犯して申し訳ありません

これが私の本当の問題です

var k = 2;
var m;

function onOpen(){ // on event - Open spreadsheet
    m = 5;
}

function onEdit(){ // on event - Edit spreadsheet
    var n = k; // k = 2
    var p = m; // p = undefine (why?)
}
  • p が定義されていないのはなぜですか?
  • なぜmin function onEdit!= 5 なのですか?
  • m関数を変更して= (= 5)onOpenを作成するにはどうすればよいですか?pm
4

1 に答える 1

0
  • なぜpが定義されていないのですか?
  • 関数onEdit!= 5にmがあるのはなぜですか?

GASはインスタンスを内部化し、関数が呼び出されるたびにコードを初期化します。つまり、onOpenスプレッドシートを開いているときに関数が呼び出され、GASはコードをインスタンス化し、m変数は5になります。その後、onEdit関数が呼び出され、GASは新しいコードのインスタンス。この場合、onOpen関数は呼び出されず、変数はデフォルトでにm等しく、この値はに割り当てられます。undefinedp

  • 関数onOpenでmを変更してから、p = m(= 5)にするにはどうすればよいですか?

これを実現するには、キャッシュScriptDBサービスなどの中間サービスを使用する必要があります。

于 2012-10-19T08:07:10.430 に答える