Получите расстояние между двумя адресами в гугл листах в режиме транзита - PullRequest
0 голосов
/ 12 июня 2018

Я пытаюсь получить расстояние между 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")

Это говорит "URLнельзя назвать ".Я сижу над этой проблемой в течение некоторого времени, и я был бы признателен за любую помощь.

Кроме импорта XML и кода, в котором написано /json?origin Я не совсем понимаю проблему.

РЕДАКТИРОВАТЬ: Я нашел это в документе

<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>

Но я не уверен, как ввести его в строке выше.Я делаю все длинное и лат для пункта назначения и происхождения.

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

Итак, вы можете создать пользовательскую функцию для использования на вашем листе, в меню вашего листа выберите: Инструменты> Редактор сценариев и вставьте это:

/**
* @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) // Или ссылка на ячейку;

0 голосов
/ 12 июня 2018

вот ответ

 =importXML("https://maps.googleapis.com/maps/api/distancematrix/xml?&origins="& A4 & "&destinations=" & D4 & "&mode=transit&key=YOURKEYHERE"; "//distance/text")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...