如何确定所有加载数据操作何时完成?

How to determine when all Loading Data operations are finished?

我有一个 Sheets spreadsheet,其中有许多单元格使用调用 IMPORTHTML 并解析结果的自定义函数。 sheet 中的其他计算使用这些自定义公式单元格的返回值。正如预期的那样,当自定义公式单元格正在计算时,它们会显示 "Loading Data..." 错误消息。在加载数据操作完成之前,我不能相信相关计算的结果。有什么好的方法可以知道范围内的所有加载数据操作何时完成?

假设 "Loading Data" 错误可以在工作表 1 中找到,该工作表由 A-Z 列和 1-1000 行组成。在 Sheet2!A1 中,您可以放置​​ =IF(COUNTIF(Sheet1!A:Z,"#Loading Data..."),"Loading","Done")。 (将 A:Z 中的 Z 替换为最后一列。)如果 Sheet1 中的任何单元格 returning“#Loading Data...”,则 countif 将对它们进行计数,并且 return "Loading";否则它将 return "Done".

(注意:错误消息正是我使用的吗?我目前无法测试它,我不确定这是否正是输出)

尝试IF(IsError(a:Z),"Not Ready Yet","Ready")

这对我有用:

=COUNTIF(B1:B565,"<>*")

计算使用=IMPORTXML() google sheet 函数时显示"Loading..." 的细胞数。例如,在一个特定情况下,我在第一列中有 565 个链接,在第二列中有公式 =IMPORTXML(A1,"//h2[@class='margin-bottom-50']"),并将上面的公式放入 D1。我 double-checked 通过将 =countif(B1,"<>*") 拖到第 3 列下进行目视检查,然后使用 =SUM() 将该列中的所有 1 相加。

我遇到了同样的问题。

单元格 1 : url

cell2 : 在 importdata

中使用 url

cell3 : 在导入数据中使用 cell2

一堆连锁结果,我知道。

所以我测试了所有我能找到的选项。

自己判断。在动画中,我更改了 url,因此它会引发一个新的查询,您可以看到在检索数据时不同的检查器是如何受到影响的。

为方便起见,以下是查询。

=IFNA(E27,"Waiting for data")
=IFERROR(E27,"Waiting for data")
=If(ISERROR(E27),"Waiting for data",E27)
=IF(E27<>"",E27,"Waiting for data")
=COUNTIF(E27,"<>*")

如果您有很多这样的请求,您可能希望避免重新计算(大量并行的 http 请求)。为此,请查看

使用查询功能是可能的。假设 E 列中的 importhtml 函数和 returns 的数据模型,例如URL,可以构造一个计数器,当所有的抓取功能完成时,计数器将设置为 0:

=Count(E1:E)-query(E1:E; "Select count(E) where E contains 'http' label count(E)''")

如果是另一种检索数据模型,您可以将查询函数与匹配单元格文本或字符串模式的正则表达式结合使用。

使用 Google Apps 脚本,您可以创建一个规则,在目标单元格等于 0 时通过电子邮件提醒您,因此您已经收到抓取完成的警告。