【问题标题】:Google Sheets IMPORTXML getRange and setRange bad "values"Google 表格 IMPORTXML getRange 和 setRange 错误的“值”
【发布时间】:2020-01-24 19:31:45
【问题描述】:

我使用 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"),它仍然做同样的事情。这两个之间有什么不同可能导致这个问题?

【问题讨论】:

  • 您能否提供一个示例电子表格来复制您的问题?当然,请删除您的个人信息。

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-07
    • 2020-08-11
    • 1970-01-01
    相关资源
    最近更新 更多