【问题标题】:How to determine when all Loading Data operations are finished?如何确定所有加载数据操作何时完成?
【发布时间】:2018-10-26 14:23:38
【问题描述】:

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

【问题讨论】:

    标签: google-apps-script google-sheets google-sheets-api google-sheets-custom-function


    【解决方案1】:

    我遇到了同样的问题。

    cell1 : 网址

    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

    【讨论】:

      【解决方案2】:

      假设“加载数据”错误可以在 Sheet1 中找到,它由 A-Z 列和 1-1000 行组成。在 Sheet2!A1 中,您可以输入 =IF(COUNTIF(Sheet1!A:Z,"#Loading Data..."),"Loading","Done")。 (将 A:Z 中的 Z 替换为最后一列。)如果 Sheet1 中的任何单元格返回“#Loading Data...”,则 countif 将对它们进行计数,并返回“Loading”;否则它将返回“完成”。

      (注意:错误消息与我使用的完全一致吗?我目前无法对此进行测试,也不确定输出是否准确)

      【讨论】:

      • 感谢您的帮助,但它对我不起作用。错误消息是“正在加载数据...”,但单元格显示“正在加载...”。我都试过了,但无论状态如何,都没有返回 true。由于我的数据是数字,我使用了 countif 0 函数并将其与范围内的单元格数进行比较。
      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        这对我有用:

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

        在使用=IMPORTXML() google sheet 函数时计算显示"Loading..." 的单元格的数量。例如,在一种特殊情况下,我在第一列中有 565 个链接,在第 2 列中有公式 =IMPORTXML(A1,"//h2[@class='margin-bottom-50']"),并将上面的公式放入 D1。我通过将 =countif(B1,"*") 向下拖动到第 3 列进行仔细检查,然后使用 =SUM() 在该列中添加所有 1。

        【讨论】:

          【解决方案5】:

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

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

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

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

          【讨论】:

            猜你喜欢
            • 2011-08-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-12-03
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多