在Google Spreadsheets中使用带有密钥的importxml从Directions API获取

时间:2016-10-21 18:23:26

标签: google-maps-api-3 google-sheets directions

我正在使用Google Spreadsheets填充地图上不同点之间的时间表,并使用importxml来执行此操作。

它作为测试工作正常,但我无法弄清楚如何附加我为Maps API获得的密钥。我在哪里插入代码行?或者我错过了什么?无法在网上找到任何使用样本。

对于随机单元格(在这种情况下为L9),代码本身看起来像这样:

=if(J10="","",if(J9="","",importxml("http://maps.googleapis.com/maps/api/directions/xml?origin=" & if(J9=1,vlookup($B$1,database!$A$1:$D,4,FALSE),vlookup(J9,database!$E$1:$H,4,FALSE)) & "&destination=" & vlookup(J10,database!$E$1:$H,4,FALSE) & "&sensor=false&alternatives=false","//leg/duration/value"))/1440/60)

3 个答案:

答案 0 :(得分:1)

这应该有效(如果用实际密钥替换“MY_KEY”):

 =if(J10="","",if(J9="","",importxml("http://maps.googleapis.com/maps/api/directions/xml?origin=" & if(J9=1,vlookup($B$1,database!$A$1:$D,4,FALSE),vlookup(J9,database!$E$1:$H,4,FALSE)) & "&destination=" & vlookup(J10,database!$E$1:$H,4,FALSE) & "&sensor=false&alternatives=false&key=MY_KEY","//leg/duration/value"))/1440/60)

如果您将密钥放在电子表格的单元格中,也可以在URL中包含该密钥(将其附加到URL,就像使用“&amp; origin =”和“&amp; destination =”一样)。< / p>

答案 1 :(得分:1)

我一直在搜索多种资源,但最终还是摸索了API本身的XML文档,从而找到了答案。答案是Google已重组XML文件,并且"//leg/duration/value"用于告诉Google我们需要加载XML文件的哪一部分。该字符串应更新为"DirectionsResponse/route/leg/step/duration/value",以适合当前的API。

此外,Distance Matrix API似乎更可靠,因此对于我的项目,使用以下内容更有意义:

=importxml("https://maps.googleapis.com/maps/api/distancematrix/xml?&origins="&E2&"&destinations="&F2&"&sensor=false&alternatives=false&key=AIzaSyAHUALge6qhYnk-CgEwXKXaNfIpyhaQzEA","/DistanceMatrixResponse/row/element/duration/value")/1000)

请注意,XML结构也有些不同:

"/DistanceMatrixResponse/row/element/distance/value"

答案 2 :(得分:0)

我使用了以下内容:

=importXML("https://maps.googleapis.com/maps/api/distancematrix/xml?units=imperial&origins="&AA$3&"&destinations="&$Y23&"&key=[my-api-key]","//distance/text")

它可以完美工作并返回值[657 mi],但是在它陷于加载之前,我一次只能拨打100次电话。