Google 工作表 IMPORTXML getRange 和 setRange 错误 "values"

Google Sheets IMPORTXML getRange and setRange bad "values"

我使用 Google sheet 并执行 importXML 从 Zillow 获取房屋价格。该单元格具有以下公式:

=VALUE(IMPORTXML(FirstQuotedTextStringInFormula("F4"),"//div[contains(@class, 'zestimate primary-quote')]/div/text()[3]"))

您可以看到 FirstQuotedStringInFormula 允许我将 URL 保存在不同的单元格中。

我使用应用程序脚本来捕获此数据以跟踪价格的历史记录。

function recordHistory() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("History");
  var source = sheet.getRange("B2:AC2");
  var values = source.getValues();
  sheet.insertRowBefore(3);
  sheet.getRange(3, 2, 1, 28).setValues([values[0]]);
};

这对我输入的所有值都适用。唯一不起作用的是从具有 IMPORTXML 公式的单元格中提取值的值。当我尝试将该数据拉入历史 sheet 时,它的 link “=Assets!B6” 工作正常。该值按预期显示。但是当我 运行 上面的脚本时,该值在下一行中显示为“#VALUE!”只是在单元格中显示为标准文本。知道这是哪里出了问题吗?

编辑: 我试图在示例传播中复制该问题 sheet,但我无法使用通用 link 弹出该问题(以避免使用个人数据)。

在 sheet 中,我将 Sheet2!B2 设置为:

=VALUE(IMPORTXML("https://homedepot.com/p/206651614", "//span[@id='ajaxPrice']/@content"))

这工作正常。如果您查看“历史记录”选项卡,我可以使用新菜单 ("Manage") 对值进行快照,并将第 2 行中的值放在第 3 行中。它工作正常。如果我将上面的替换为:

=VALUE(IMPORTXML(FirstQuotedTextStringInFormula("F4"),"//div[contains(@class, 'zestimate primary-quote')]/div/text()[3]"))

然后当我去快照历史选项卡中的值时,它会显示#VALUE!而不是在单元格中。我也尝试用实际的 URL 替换我的 "FirstQuotedTextStringInFormula("F4"),它仍然做同样的事情。这两个可能导致此问题的区别是什么?

我终于解决了这个问题。我不知道它为什么或如何解决问题,但这可能只是一个过于复杂的问题。我用从 Zillow API 中提取的 IMPORTXML 调用替换了原来的 IMPORTXML 调用。我以此为例,现在自动化工作正常。

https://www.reddit.com/r/sheets/comments/93hjxx/find_real_estate_value_zillow_zestimate_or/