我正在尝试在Google应用程序脚本中创建一个函数,用于解析特定值并将该值放入我的Google电子表格中
问题描述:
下面是我编写的代码,旨在让Google的地理编码API在应用程序脚本中工作。我正在尝试在Google应用程序脚本中创建一个函数,用于解析特定值并将该值放入我的Google电子表格中
我需要输入是Sheets中的另一个单元格,并且输出只是来自XML的格式化地址标记的值。
[17-08-08 11:49:17:996 PDT] <?xml version="1.0" encoding="UTF-8"?>
<GeocodeResponse>
<status>OK</status>
<result>
<type>establishment</type>
<type>point_of_interest</type>
<formatted_address>Bouwmeestersstraat 3, 2000 Antwerpen, Belgium</formatted_address>
<address_component>
<long_name>3</long_name>
<short_name>3</short_name>
<type>street_number</type>
</address_component>
<address_component>
<long_name>Bouwmeestersstraat</long_name>
<short_name>Bouwmeestersstraat</short_name>
<type>route</type>
</address_component>
<address_component>
<long_name>Antwerpen</long_name>
<short_name>Antwerpen</short_name>
<type>locality</type>
<type>political</type>
</address_component>
<address_component>
<long_name>Antwerpen</long_name>
<short_name>AN</short_name>
<type>administrative_area_level_2</type>
<type>political</type>
</address_component>
<address_component>
<long_name>Vlaanderen</long_name>
<short_name>Vlaanderen</short_name>
<type>administrative_area_level_1</type>
<type>political</type>
</address_component>
<address_component>
<long_name>Belgium</long_name>
<short_name>BE</short_name>
<type>country</type>
<type>political</type>
</address_component>
<address_component>
<long_name>2000</long_name>
<short_name>2000</short_name>
<type>postal_code</type>
</address_component>
<geometry>
<location>
<lat>51.2078120</lat>
<lng>4.3962135</lng>
</location>
<location_type>ROOFTOP</location_type>
<viewport>
<southwest>
<lat>51.2064630</lat>
<lng>4.3948645</lng>
</southwest>
<northeast>
<lat>51.2091610</lat>
<lng>4.3975625</lng>
</northeast>
</viewport>
</geometry>
<place_id>ChIJf011FwP3w0cR6vrD7_qIwas</place_id>
</result>
</GeocodeResponse>
function GEOCODE(input) {
var response =
UrlFetchApp.fetch('https://maps.googleapis.com/maps/api/geocode/xml?
address='
+ encodeURIComponent(input)
+'&key=AIzaSyA6yDgoz3ENOEAks0ghXR5hJ3EHdXJ66-E');
Logger.log(response.getContentText());
var xml = response.getContentText();
return XmlService.parse(xml);
return getattribute('formatted_address')
}
答
尝试下面的代码来获取formatted_address
属性的值,然后后来的价值附加到片
function GEOCODE(input) {
var response = UrlFetchApp.fetch('https://maps.googleapis.com/maps/api/geocode/xml?address='+ encodeURIComponent(input)+'&key=AIzaSyA6yDgoz3ENOEAks0ghXR5hJ3EHdXJ66-E');
var document = XmlService.parse(response.getContentText().trim());
var root = document.getRootElement();
//Logger.log(root.getChild('result').getChild('formatted_address').getText())
var ss = SpreadsheetApp.openById("<<SPREADSHEET ID>>").getSheetByName("<<SHEET NAME>>")
ss.appendRow([root.getChild('result').getChild('formatted_address').getText()])
//return root.getChild('result').getChild('formatted_address').getText();
}
这样做可以帮助您? – Ritz
它的工作原理与大约一半的地址类似,然后我得到两个错误之一。 TypeError:无法调用null的方法“getChild”。 (第10行).'或'服务在很短的时间内被调用太多次:exec qps。尝试调用之间的Utilities.sleep(1000)。 (第0行)。“我知道这与api每天有2,500个免费电话的上限有关。感谢您的帮助 – sun