【发布时间】:2013-01-30 04:26:43
【问题描述】:
我进行了长时间的搜索并尝试了很多代码,但找不到我要找的东西。也许有人可以帮忙?
我在单元格 A1 中有一个包含复杂公式的 Google 电子表格。有时,当公式计算出结果时,单元格会说“正在考虑...”几秒钟。
我有一个脚本“myFunction()”,它取决于单元格 A1 中的值。如果单元格显示“正在思考...”,它将无法正常运行,因此我尝试创建另一个脚本,等待公式完成“思考”,然后执行 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 秒的时间,但不是每次都在计算公式!
谁能指出我正确的方向?我花了几个小时试图解决这个问题。如果有人有任何想法,我们将非常感谢您的帮助。
非常感谢您的关注。
【问题讨论】:
-
我不想构建一个复杂的函数来测试它,但是只有在 Thinking... 完成后才会调用 onEdit 吗?如果确实如此,那么您可以利用它来发挥自己的优势吗?
-
@Jonathon,我同意。我的直觉是,只有在公式完成后才会调用 onEdit。因此,请考虑将任何脚本绑定到 onEdit 事件,或者将其写入名为 onEdit() 的函数中。
标签: google-apps-script google-sheets google-docs formula google-drive-api