什么是ImportXML的JavaScript等价物?

时间:2016-06-26 14:15:46

标签: javascript google-apps-script google-sheets

ImportXML的等效JavaScript是什么?

拥有10,000行的Google电子表格,每行包含一个城市和州。要查找邮政编码neither the ImportXML formula nor LibreOffice's FilterXML have worked

1 个答案:

答案 0 :(得分:2)

好的,为了回答你的问题我有两个简单的应用程序脚本来获取你想要的数据,还有一个更简单的importxml调用,它可以选择只返回1个或全部:

对于importxml它说50个调用但老实说我曾经使用importxml来处理所有内容而且你可以加载更多,它们只是在数据返回时加载,所以不按顺序但你可以轻松地做到50以上

首先简化导入xml,这是对url字符串构造的修改:

=SUBSTITUTE("https://tools.usps.com/go/ZipLookupResultsAction!input.action?resultMode=1&city="&E2&"&state="&F2," ","+")

如果你想要代替%20,你仍然可以使用+,但我只是因为那是usps网站的默认设置而切换它,我测试了两者,但两者都有效。

我在这里使用而不是连接你可以&有效地做同样的事情,但更容易阅读。然后,您可以使用替换来包装整个事物,以捕获连接数据中的任何和所有空格。

在下面添加一个图像,您可以按顺序查看输出:

以一个单元格中分隔的分号拉入列表:

=JOIN(";",IMPORTXML(SUBSTITUTE("https://tools.usps.com/go/ZipLookupResultsAction!input.action?resultMode=1&city="&E2&"&state="&F2," ","+"),"//*[@class='zip']"))

仅获取列出的第一个邮政编码:

=SPLIT(IMPORTXML(SUBSTITUTE("https://tools.usps.com/go/ZipLookupResultsAction!input.action?resultMode=1&city="&E2&"&state="&F2," ","+"),"//*[@class='zip']/text()")," ")

能够提取所有相关的邮政编码(作为清单):

=IMPORTXML(SUBSTITUTE("https://tools.usps.com/go/ZipLookupResultsAction!input.action?resultMode=1&city="&E2&"&state="&F2," ","+"),"//*[@class='zip']")

最后如果你真的想继续使用它作为app脚本,这是一个简单的方法:

  function zipcodes(url) {
  var found, html, content = '';
  var response = UrlFetchApp.fetch(url);
  if (response) {
    html = response.getContentText();
    if (html) content = html.match(/<span class="zip" style="">(\d+)<\/span><span class="zip/gi)[0].match(/zip" style="">(\d+)<\/span>/i)[1];
  }
  return content;
}

enter image description here