繁体   English   中英

在 Google 表格中使用 Apps 脚本解析来自 XML 的 Google 地图数据时出错

[英]Error Parsing Google Maps Data from XML using Apps Script in Google Sheets

我正在尝试从使用 Google 地图 API 创建的 XML 中提取“格式化地址”。我无法通过代码的 XML 部分。 我收到错误“异常:错误请求:http://0(第 176 行)”。 有什么我想念的吗? 我该如何修改这个? 任何指导表示赞赏。 第 176 行是“var extractXml = UrlFetchApp.fetch(addUrl);” 这个想法是查找一个“草率”的地址并在 Google 表格的另一个单元格中返回一个 Google 标准化版本。 当我粘贴 URL 时,该片段是在浏览器中看到的 XML。“格式化地址”部分是我要返回的内容。 谷歌表格截图

   function addressFormat() {
   var ss = SpreadsheetApp.getActive();
   var sss = ss.getSheetByName("format");
   var addr = sss.getRange(1,1,).getValue();
   var apiKey = "API Key Here";
   var  addUrl = "https://maps.googleapis.com/maps/api/geocode/xml?address=" & addr & "&key=" & apiKey;
   var extractXml = UrlFetchApp.fetch(addUrl);
   var contentsXml = extractXml.getContentText;
   var xmlAdd = XmlService.parse(contentsXml);
   var response = xmlAdd.getRootElement();
   var records = response.getChild('GeocodeResponse');
   var recordList = records.getChild('result');
   var formattedAddd = recordList('formatted_address')

   return formattedAddd.getValue;

}

XML 片段

修改点:

  • 我认为var addUrl = "https://maps.googleapis.com/maps/api/geocode/xml?address=" & addr & "&key=" & apiKey; 应该是var addUrl = "https://maps.googleapis.com/maps/api/geocode/xml?address=" + encodeURIComponent(addr) + "&key=" + apiKey; var addUrl = `https://maps.googleapis.com/maps/api/geocode/xml?address=${encodeURIComponent(addr)}&key=${apiKey}`; .

  • 请将()添加到var contentsXml = extractXml.getContentText; .

  • 从您的脚本中,我认为您可能想要检索formatted_address的值。 在这种情况下,需要修改脚本以从 XML 数据中检索值。

当这些点都体现在你的脚本中时,下面的修改怎么样?

修改脚本:

function addressFormat() {
  var apiKey = "API Key Here"; // Please set your API key.

  var ss = SpreadsheetApp.getActive();
  var sss = ss.getSheetByName("format");
  var addr = sss.getRange(1, 1).getValue();
  var addUrl = "https://maps.googleapis.com/maps/api/geocode/xml?address=" + encodeURIComponent(addr) + "&key=" + apiKey; // or var addUrl = `https://maps.googleapis.com/maps/api/geocode/xml?address=${encodeURIComponent(addr)}&key=${apiKey}`;
  var extractXml = UrlFetchApp.fetch(addUrl);
  var contentsXml = extractXml.getContentText();
  var xmlAdd = XmlService.parse(contentsXml);
  var root = xmlAdd.getRootElement();
  var ns = root.getNamespace();
  var formatted_address = root.getChild("result", ns).getChild("formatted_address", ns).getValue();
  return formatted_address;
}

笔记:

  • 从你的展示图片,我猜你的API密钥可以用于API。请注意这一点。

参考:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM