2017-08-08 11 views
0

下面是我编写的代码,旨在让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') 
} 

回答

1

尝试下面的代码来获取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(); 
} 
+0

这样做可以帮助您? – Ritz

+0

它的工作原理与大约一半的地址类似,然后我得到两个错误之一。 TypeError:无法调用null的方法“getChild”。 (第10行).'或'服务在很短的时间内被调用太多次:exec qps。尝试调用之间的Utilities.sleep(1000)。 (第0行)。“我知道这与api每天有2,500个免费电话的上限有关。感谢您的帮助 – sun

相关问题