我有一个表格电子表格,其中有许多使用自定义函数的单元格,该函数调用 IMPORTHTML 并解析结果。工作表中的其他计算使用这些自定义公式单元格的返回值。正如预期的那样,当自定义公式单元格进行计算时,它们会显示“正在加载数据...”错误消息。在加载数据操作完成之前,我不能相信相关计算的结果。有什么好方法可以知道某个范围内的所有加载数据操作何时完成?
5 回答
我遇到过同样的问题。
单元格1:网址
cell2 :在 importdata 中使用 url
cell3 :在 importdata 中使用 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 请求并行)。为此,请查看https://stackoverflow.com/a/60871673/4752223
假设“加载数据”错误可以在 Sheet1 中找到,它由 AZ 列和 1-1000 行组成。在 Sheet2!A1 中,您可以放置=IF(COUNTIF(Sheet1!A:Z,"#Loading Data..."),"Loading","Done")
. (将 A:Z 中的 Z 替换为最后一列。)如果 Sheet1 中的任何单元格返回“#Loading Data...”,则 countif 将对它们进行计数,并返回“Loading”;否则它将返回“完成”。
(注意:错误消息正是我使用的吗?我目前无法测试它,我不确定这正是输出)
使用查询功能是可能的。假设 E 列中的 importhtml 函数和返回例如 URL 的数据模型,可以构造一个计数器,当所有抓取函数完成时将设置为 0:
=Count(E1:E)-query(E1:E; "Select count(E) where E contains 'http' label count(E)''")
如果它是检索数据的另一种模型,您可以将 Query 函数与匹配单元格的文本或字符串模式的正则表达式结合起来。
使用 Google Apps 脚本,您可以创建一个规则,当目标单元格等于 0 时通过电子邮件提醒您,因此您已经收到了抓取完成的警告。
尝试IF(IsError(a:Z),"Not Ready Yet","Ready")
这对我有用:
=COUNTIF(B1:B565,"<>*")
"Loading..."
计算使用=IMPORTXML()
google sheet 函数时显示的单元格数量。例如,在一种特殊情况下,我在第一列中有 565 个链接,在第=IMPORTXML(A1,"//h2[@class='margin-bottom-50']")
2 列中有公式,并将上面的公式放入 D1。我通过将 =countif(B1,"<>*") 向下拖动到第 3 列进行仔细检查以进行目视检查,然后使用 =SUM() 在该列中添加所有 1。