使用模式转换获取Google工作表中两个地址之间的距离

时间:2018-06-12 12:51:28

标签: google-maps google-sheets maps

我试图通过模式传输获得A和B之间的距离。

这是我在Google工作表(excel)上的代码

=importXML("http://maps.googleapis.com/maps/api/directions/json?origin="& A4  & "&destinations=" & D4 & "&mode=transit&arrival_time=1391374800&key=MYKEYHERE"; "//distance/text")

它说“无法调用网址”。 我有一段时间坐在这个问题上,我将不胜感激。

然后导入XML,然后在代码中说/json?origin我真的不明白这个问题。

编辑:我在Doc

中找到了这个
<travel_mode>TRANSIT</travel_mode>
    <start_location>
     <lat>40.7563670</lat>
     <lng>-73.9907530</lng>
    </start_location>
    <end_location>
     <lat>40.8179080</lat>
     <lng>-74.0656630</lng>

但我不知道如何在上面的行中输入它。 我为目的地和起源做了所有的长期和纬度。

3 个答案:

答案 0 :(得分:2)

这是答案

 =importXML("https://maps.googleapis.com/maps/api/distancematrix/xml?&origins="& A4 & "&destinations=" & D4 & "&mode=transit&key=YOURKEYHERE"; "//distance/text")

答案 1 :(得分:1)

好吧,您可以构建一个自定义函数以在工作表上使用, 在工作表菜单上,选择:工具>脚本编辑器,并将其粘贴:

/**
* @customFunction
*/
function getDistanceBetween(originLat, originLong, destLat, destLong) {
    var directions, route;

    // Create a new Direction finder using Maps API available on Google Apps Script
    directions = Maps.newDirectionFinder()
    .setOrigin(originLat, originLong)
    .setDestination(destLat, destLong)
    .setMode(Maps.DirectionFinder.Mode.DRIVING)
    .getDirections(); // Direction Object

    // The path may have some segments so it sum it all
    if(directions.routes[0]){
        route = directions.routes[0].legs.reduce(function(acc, currentRow){
            acc.dist += currentRow.distance.value/1000;
            acc.dur += currentRow.duration.value/60;
            return acc;
        },{dist:0,dur:0});

        // This will return data to fill 2 columns. 
        // First with de distance
        // Second with a link to view the path on map's site;
        return [[route.dist, "https://www.google.com/maps/dir/"+originLat+","+originLong+"/"+destLat+","+destLong+"/"]];
    } else {
        return [["", ""]];
    }
}

然后在工作表上将其设置为单元格:

=getDistanceBetween(-23.319937, -51.166299, -23.310565, -51.165488) //或单元格引用;

答案 2 :(得分:0)

我还一直在寻找一种实现此目的的方法,以前从未在工作表上使用过自定义的google函数,却发现:要旨https://gist.github.com/whatterz/4ea2e87815747bf14d1d247181248512

几乎可以立即使用了,唯一复杂的部分是将其添加到工作表中。

要使用它:

  1. 打开工作表文件,然后转到Tools> Script Editor
  2. 填写所需的项目名称
  3. 将要点复制到code.gs
  4. 点击保存
  5. 在Google表格中,只要您想使用该功能,就致电=GOOGLEDISTANCE()

例如:

=GOOGLEDISTANCE(A1, A2, "diriving", "minutes")
=GOOGLEDISTANCE("100 Someplace", "200 otherplace", "driving", "minutes")
=GOOGLEDISTANCE("22.5985, 47.6767", "45.3545, 23.44545", "walking", "minutes")

请务必根据要点的实际位置自定义语言环境。例如UK> US