Google表格IMPORTXML getRange和setRange错误的“值”

时间:2020-01-24 19:31:45

标签: google-sheets google-sheets-formula google-sheets-api google-sheets-importxml

我使用Google工作表并执行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公式的单元格中提取值的值。当我尝试将这些数据提取到历史记录表中时,指向它的链接“ = Assets!B6”可以正常工作。该值显示为预期。但是,当我运行上面的脚本时,该值在下一行显示为“ #VALUE!”。只是在单元格中显示为标准文本。知道这在哪里破裂吗?

编辑: 我试图在示例电子表格中复制该问题,但无法使用通用链接弹出该问题(以避免使用个人数据)。

在工作表中,我将Sheet2!B2设置为以下内容:

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

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

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

然后,当我在“历史记录”选项卡中对值进行快照时,它将放入#VALUE!在单元格中。我还尝试用实际的URL替换我的“ FirstQuotedTextStringInFormula(” F4“),但它仍然做同样的事情。这两个可能引起此问题的区别是什么?

1 个答案:

答案 0 :(得分:0)

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

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