簡體   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