0

1 つ以上の名前付き範囲を削除できるスクリプトがあります。ただし、スクリプトが終了した後、またはフラッシュ コマンドが与えられた後、シートは再計算されません。再計算を強制できる唯一の方法は、空のセルに新しい数式を物理的に挿入するか、既存の数式を変更することです。

トリガーするためだけに使用してみましたSpreadsheetApp.flush()が、シートに目に見える変更がない場合、再計算は発生しません。

これは欠陥ですか、それとももっと賢明なアプローチがありますか?

4

2 に答える 2

2

実際、INDIRECT は依存関係をスキップし、セルの変更時に常に再計算します。このため、可能な限り INDIRECT を避けることをお勧めします。

そのため、セルを変更するだけで再計算できます。

範囲を削除してもセルは変更されないため、INDIRECT は再計算されません。

于 2013-09-17T16:26:30.537 に答える
2

スプレッドシートに対して実行されたアクションが数式に影響を与えない場合、再計算は行われません。たとえば、名前付き範囲を削除しても、その名前付き範囲が数式で参照されていない限り、再計算の影響はありません。(その場合、スプレッドシートは削除によって破損した可能性があります。)

Spreadsheet.flush()再計算を強制しません。保留中の変更をスプレッドシートに書き込むことだけが想定されています。(そして、その変更が式に影響を与えない場合は...おわかりでしょう。)

最終的な結果は、説明したソリューションが残っていることです。計算に関係するセルを更新する必要があります。式を置き換えるとうまくいきます。申し訳ありませんが、これには魔法の呪文はありません。

于 2013-09-17T03:26:33.280 に答える