我一直在尝试制作一个能够在Google表格中显示最新河流水平的Google脚本。 我正在查看here
的XML文档这是一份非常长的文件,但我试图抓住的只是观察到的河流水位。
目前我有一个谷歌表设置,河流水平将收集所有数据。我最初使用XMLhttprequest
让它工作,但发现谷歌脚本不支持该功能。所以我一直试图使用UrlFetch service,但还没有好运。
我正在处理的代码如下:
function Rivers() {
var url = 'https://water.weather.gov/ahps2/hydrograph_to_xml.php?gage=llrw4&output=xml';
var xml = UrlFetchApp.fetch(url).getContentText();
var document = XmlService.parse(xml);
var txt = "";
path = "//site/observed/datum/primary"
var nodes = xml.evaluate(path, xml, null, XPathResult.ANY_TYPE, null);
var result = nodes.iterateNext();
while (result) {
txt += result.childNodes[0].nodeValue;
result = nodes.iterateNext();
}
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var cell = sheet.getRange('B:C');
}

当我尝试运行它时,我收到错误"Cannot find function evaluate"
我确定这与fetchurl
有关,但似乎无法找到它的修复程序。
任何有关工作的帮助将不胜感激。
答案 0 :(得分:0)
Google Apps脚本在Google服务器上运行。因此,您无权访问浏览器中可用的某些DOM / BOM功能或API。这包括用于导航xml文档的XPath。如果要使用Xpath,则必须编写自己的函数进行解析。以下是我找到https://coderwall.com/p/cq63og/extract-data-from-xpath-via-google-apps-script
的示例XmlService有自己的遍历xml文档的方法,可以使用而不是XPath。这是获取根元素的所有子节点的方法。
var url = 'https://water.weather.gov/ahps2/hydrograph_to_xml.php?gage=llrw4&output=xml';
var xml = UrlFetchApp.fetch(url).getContentText();
var document = XmlService.parse(xml);
var root = document.getRootElement();
var children = root.getChildren();
您收到错误是因为您正在调用字符串变量上的函数。
var xml = UrlFetchApp.fetch(url).getContentText();
var nodes = xml.evaluate(path, xml, null, XPathResult.ANY_TYPE, null);
UrlFetchApp.fetch()的返回类型是HttpResponse。调用HttpResponse的getContentText()方法返回一个字符串。更多相关内容https://developers.google.com/apps-script/reference/url-fetch/http-response。