我正在使用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)
答案 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次电话。