简体   繁体   中英

Google Maps API In Apps Script Keeps Failing

I'm using google apps script to code a distance finder for Google Maps. I've found examples of such, but they keep failing, so I thought I'd code my own. Sadly, this is failing with the same error:

TypeError: Cannot read property "legs" from undefined. (line 16).

It seems to be that it's sometimes working, and sometimes not. I have a few (3) places in my sheet that are calling the same functions, and at times one or more will return a valid response.

I saw elsewhere that people were suggesting using an API key to make sure that you get a good response, so that's what I've implemented below. (api keys redacted! is there a good way to tell if they've been recognised?)

Any ideas what might be going awry?!

Thanks in advance,

Mike

function mikeDistance(start, end){
  start = "CV4 8DJ";
  end = "cv4 9FE";

  var maps = Maps;
  maps.setAuthentication("#####", "#####");
  var dirFind = maps.newDirectionFinder();
  dirFind.setOrigin(start);
  dirFind.setDestination(end);

  var directions = dirFind.getDirections();
  var rawDistance = directions["routes"][0]["legs"][0]["distance"]["value"];
  var distance = rawDistance/1609.34;
  return distance;
}

Here's my short term solution while the issue is being fixed.

Not ideal, but at least reduces using your API limit as much as possible.

function getDistance(start, end) {

 return hackyHack(start, end, 0);
}

function hackyHack(start, end, level) {
  if (level > 5) {
    return "Error :(";
  }
  var directions = Maps.newDirectionFinder()
     .setOrigin(start)
     .setDestination(end)
     .setMode(Maps.DirectionFinder.Mode.DRIVING)
     .getDirections();
  var route = directions.routes[0];

  if (!route) return hackyHack(start, end, level+1); // Hacky McHackHack

  var distance = route.legs[0].distance.text;
  // var time = route.legs[0].duration.text;
  return distance;
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM