【问题标题】:Using importxml with key in Google Spreadsheets to fetch from Directions API在 Google 电子表格中使用 importxml 和键从 Directions API 中获取
【发布时间】:2016-10-21 18:23:25
【问题描述】:

我正在使用 Google 电子表格来填充地图上不同点之间的时间表,并且正在使用 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)

【问题讨论】:

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


    【解决方案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,就像使用“&origin=”和“&destination=”一样)。

    【讨论】:

    • Ty,但我之前尝试过这个,由于某种原因,它只在单元格中返回“错误:导入的内容为空”。我不知道出了什么问题——要么我不能像那样使用密钥,要么根本不使用这个功能,或者......不知道。
    【解决方案2】:

    我一直在搜索多个资源,但最终通过摸索 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"
    

    【讨论】:

      【解决方案3】:

      我使用了以下内容:

      =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 次电话,然后才会卡在加载中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-01
        • 1970-01-01
        • 2014-04-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多