4

私は長い検索を行い、コードで多くの実験を行いましたが、探しているものが見つかりませんでした. 誰かが親切に助けてくれるかもしれませんか?

セル A1 に複雑な数式を含む Google スプレッドシートがあります。数式が結果を計算している間、セルに「Thinking...」と数秒間表示されることがあります。

セル A1 の値に依存するスクリプト 'myFunction()' があります。セルに「Thinking...」と表示されていると正しく実行されないため、式が「Thinking」を終了するまで待機してから myFunction() を実行する別のスクリプトを作成しようとしています。

これは私がこれまでに持っているものです:

function waitMyFunction () {      

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = ss.getSheetByName('Sheet1');

    var range = s.getRange('A1:A1')  // range where I want to make sure 'Thinking' is done  
    var values = range.getValues();
    var string = values.toString();

    var loading = "Thinking...";

      while (string.search(loading) ==! 0); {
      (Utilities.sleep(10000));  // Wait for 10 seconds
}       
  myFunction();
};

問題は、セル A1 の値に関係なく、スクリプトが 10 秒間待機しているように見えることです。数式が「考える」でなくても待ちます。このスクリプトを高速に実行する必要があります。式が考えている奇妙な時間に 10 秒かかることはありますが、毎回ではありません!

誰でも私を正しい方向に向けることができますか? 私はこれを解決するために何時間も費やしました。誰かに何かアイデアがあれば、あなたの助けをいただければ幸いです。

ご覧いただきありがとうございます。

4

2 に答える 2

0

「読み込み」は一度だけ評価されます。最初が「Thinking…」なら、while文では必ずそれになります。そのため、毎回セルの値 (値ではない) を取得する必要があります。while および not-equals の Javascript 構文を確認することをお勧めします

于 2013-01-30T18:25:15.620 に答える