我做了很长时间的搜索和很多代码试验,却找不到我想要的东西。也许有人在那里可以帮忙吗?
我在单元格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秒,但不是每次!
任何人都可以指出我正确的方向吗?我花了好几个小时试图解决这个问题。如果有人有任何想法,我们将非常感谢您的帮助。
非常感谢您的光临。
答案 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) ;
^