自定义脚本“一天中调用的服务太多次:路由”错误

时间:2019-09-16 11:13:09

标签: javascript google-maps google-apps-script google-sheets-api

我正在Google电子表格上使用以下功能来查找两个位置之间的交通数据或邮政编码的出行时间。

输入参数来自位置,目的地,到达时间(介于6AM或8AM之间)相同的脚本,具有不同的定义时间

基于我的Google脚本函数中的上述输入参数,它应该返回旅行时间,但我收到一个错误,即Service一天调用了太多次:路线。 (第40行)。我正在使用下面的自定义函数,我的工作表中有40行。有什么办法可以使它成为数组公式吗?这样有助于避免不必要的通话吗?

function GetDuration(location1, location2, mode) {
  //var arrive = new Date(new Date().getTime() + (10 * 60 * 60 * 1000));//arrive in ten hours from now
 // var arrive=new Date(2019, 09, 07, 06);// 7th of September 2019 06:00 am
  var arrive = new Date();
  arrive.setHours(6,0,0,0);
  var directions  = Maps.newDirectionFinder().setArrive(arrive)
  .setOrigin(location1)
  .setDestination(location2)
  .setMode(Maps.DirectionFinder.Mode[mode])
  .getDirections();
  // Get a script lock, because we're about to modify a shared resource.
  var lock = LockService.getScriptLock();
  // Wait for up to 30 seconds for other processes to finish.
  lock.waitLock(20000);
  Utilities.sleep(1000);
 return directions.routes[0].legs[0].duration.text;

1 个答案:

答案 0 :(得分:1)

您应该看看Distance Matrix Service。它允许在多个位置之间执行基本的路线搜索,它不会返回详细的路线,但是它具有关于路线的基本信息,我认为这对您来说足够了。

您需要记住,位置服务是付费的,而配额则取决于此。我提供的链接还包括有关此内容以及如何设置的信息。