Google表格上的ImportXML问题

时间:2016-12-21 00:25:01

标签: javascript google-apps-script web-scraping google-sheets google-sheets-importxml

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

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

(注意样本表实际上与迭代的ImportXML脚本一起正常工作,仍然会返回一些错误,但我认为历史上的ImportXML函数必须有一些限制,而不仅仅是工作表上的当前函数,因为我的主表只有处理一个问题的真正问题现在很少)

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

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

1 个答案:

答案 0 :(得分:0)

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

将此功能添加到您当前在应用脚本中的功能上方。

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());