0

我用大约 500 个 URL 和 Xpath 填写了一个谷歌电子表格。在发现 ImportXML 有一些缺点之后(即使只有 10 个左右的函数在运行,它也会出现永久加载错误)。我正在寻找另一种填充工作表的方法。我的第一次尝试是一个迭代脚本,它只是将 ImportXML 函数写入工作单元,然后写入每个 URL 的值。我认为一次只运行一个 ImportXML 就可以正常工作,但它仍然会出现永久加载错误。

样本表: https ://docs.google.com/spreadsheets/d/1QgW4LVkB_oraO9gdS5DsnNta3GVlqsH0_uC1QP0iE7w/edit?usp=sharing

(请注意,示例表实际上可以与迭代 ImportXML 脚本一起使用,仍然返回一些错误,但我认为历史 ImportXML 函数必须有一些限制,而不仅仅是工作表上的当前函数,因为我的主工作表现在只有几个处理问题)

是否有一个简单的脚本可以工作?我尝试过使用 URLFetch、xml.evaluate、xmlService 的变体,但由于我的知识有限,我无法让它工作。

非常感谢任何指导。谢谢!

4

1 回答 1

2

这是一种工作方法-我为您测试过:

将此功能添加到您当前在应用程序脚本中拥有的功能之上。

function importprice(url) {
  var found, html, content = '';
  var response = UrlFetchApp.fetch(url);
  if (response) {
    html = response.getContentText();
    if (html) content = html.match(/<span id="product_price" itemprop="price">(.*)<\/span>/gi)[0].match(/<span id="product_price" itemprop="price">(.*)<\/span>/i)[1];
  }
  return content;
}

然后替换当前如下所示的 importxml 函数:

 var cellFunction1 = '=IMPORTXML("' + sheet.getRange(row,4).getValue() + '?' + queryString + '","' + sheet.getRange(row,5).getValue() + '")';

有了这个:

var cellFunction1 = importprice(sheet.getRange(row,4).getValue());
于 2016-12-22T04:46:00.117 回答