在电池中运行AFTER公式的Google电子表格脚本已完成“思考......”

时间:2013-01-30 04:26:43

标签: google-apps-script google-sheets google-docs formula google-drive-api

我做了很长时间的搜索和很多代码试验,却找不到我想要的东西。也许有人在那里可以帮忙吗?

我在单元格A1中有一个复杂公式的Google电子表格。有时,当公式计算结果时,单元格会在几秒钟内说“思考...”。

我有一个脚本'myFunction()',它取决于单元格A1中的值。如果单元格显示“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秒,但不是每次!

任何人都可以指出我正确的方向吗?我花了好几个小时试图解决这个问题。如果有人有任何想法,我们将非常感谢您的帮助。

非常感谢您的光临。

2 个答案:

答案 0 :(得分:0)

“loading”仅评估一次。如果它在开始时是“思考......”,它将永远是在while语句中。因此,您需要每次都获取单元格的值(NOT值)。 您可能希望检查while和not-equals http://www.w3schools.com/js/js_comparisons.asp的Javascript语法 如果您希望它运行得更快,那么更频繁地减少时间延迟/测试。

答案 1 :(得分:0)

看起来与:Google SpreadSheets - When using a time trigger in code, some cells getting '#N/A' value

相同

旁注,我怀疑你也想要删除“;”

while (string.search(loading) ==! 0)  ;
                                      ^