Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.08.2016, 14:11
Новичок на форуме
Отправить личное сообщение для Johnny1500 Посмотреть профиль Найти все сообщения от Johnny1500
 
Регистрация: 16.08.2016
Сообщений: 8

Не работает DirectionServece Google Apps Script
Привет, всем
Недавно начал изучать Javascript.

Написал вот код в Google Apps Script для определения расстояния между городами и времени пути. Однако уже в строке var directionsService = new google.maps.DirectionsService() появляется ошибка Объект google не определен. Хотя я подключил Google Maps Directions API в консоли. В чем может быть ошибка? Подскажите, пожалуйста.

Вот код:

function determineRoutsef() {
  
  var directionsService = new google.maps.DirectionsService();
  
  var request = {
  
    origin:"Москва",
    destination:"Екатеринбург",
    travelMode: google.maps.TravelMode.DRIVING
    
  };
  
 directionsService.route(request, function(result, status) {
 
  if (status == google.maps.DirectionsStatus.OK) {
    var routes = result.routes;
    var leg = routes[0].legs;
  
    var lenght = leg[0].distance.text;
    Logger.log(lenght); 
   
    var duration = leg[0].duration.text;
    Logger.log(duration);  
   
  }
 })
 
  
}
Ответить с цитированием
  #2 (permalink)  
Старый 16.08.2016, 14:26
Профессор
Отправить личное сообщение для Manyasha Посмотреть профиль Найти все сообщения от Manyasha
 
Регистрация: 21.09.2015
Сообщений: 196

Johnny1500, здравствуйте.
Сообщение от Johnny1500 Посмотреть сообщение
Хотя я подключил Google Maps Directions API в консоли
это как?
Ваш код работает:
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&signed_in=true"></script>
<script>
function determineRoutsef() {
   
  var directionsService = new google.maps.DirectionsService();
   
  var request = {
   
    origin:"Москва",
    destination:"Екатеринбург",
    travelMode: google.maps.TravelMode.DRIVING
     
  };
   
 directionsService.route(request, function(result, status) {
  
  if (status == google.maps.DirectionsStatus.OK) {
    var routes = result.routes;
    var leg = routes[0].legs;
   
    var lenght = leg[0].distance.text;
    //Logger.log(lenght); 
    
    var duration = leg[0].duration.text;
    //Logger.log(duration);  
	alert(lenght + "\n" + duration);
    
  }
 })
  
   
}
determineRoutsef()
</script>
Ответить с цитированием
  #3 (permalink)  
Старый 16.08.2016, 15:57
Новичок на форуме
Отправить личное сообщение для Johnny1500 Посмотреть профиль Найти все сообщения от Johnny1500
 
Регистрация: 16.08.2016
Сообщений: 8

Проблема в этом:

<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&signed_in=true"></script>

У меня ContainerBound скрипт связанный с листом GoogleSheet и нет отдельной HTML-страницы. Можно ли получить ссылку на объект внутри функции? Т.е. у меня есть одна функция, я хочу с помощью google.maps высчитать расстояние между городами, приравнять к переменной, а переменную приравнять к значению ячейки на листе.

Знаю, что мои рассуждения крайне нубские, но и Javascript для меня новый язык.
Ответить с цитированием
  #4 (permalink)  
Старый 17.08.2016, 14:07
Профессор
Отправить личное сообщение для Manyasha Посмотреть профиль Найти все сообщения от Manyasha
 
Регистрация: 21.09.2015
Сообщений: 196

Johnny1500,
вот так получилось:
function getGoogleData(address1, address2) {
  var url = "http://maps.googleapis.com/maps/api/directions/json?origin="
  url+=address1
  url+="&destination="
  url+=address2
  var response = UrlFetchApp.fetch(url);
  
  if (response.getResponseCode() == 200){
    var data = JSON.parse( response.getContentText() );
    var lenght = data.routes[0].legs[0].distance.text;
    var duration = data.routes[0].legs[0].duration.text;
    return [lenght, duration];
  }
}
Ответить с цитированием
  #5 (permalink)  
Старый 18.08.2016, 13:39
Новичок на форуме
Отправить личное сообщение для Johnny1500 Посмотреть профиль Найти все сообщения от Johnny1500
 
Регистрация: 16.08.2016
Сообщений: 8

Сообщение от Manyasha
вот так получилось:
Спасибо, помогло.
Ответить с цитированием
  #6 (permalink)  
Старый 29.08.2016, 14:26
Новичок на форуме
Отправить личное сообщение для Johnny1500 Посмотреть профиль Найти все сообщения от Johnny1500
 
Регистрация: 16.08.2016
Сообщений: 8

Все же можно ли определить расстояние между городами через службу DirectionsService Google, а не UrlFetch?
Как я понимаю должна работать программа:
1) На листе GoogleSheet запускается estimateViaDistance
2) Создается шаблон из Index.html
3) Получается ссылка на Googlemaps
4) Через скриплет запускается функция determineRoutes.
Но у меня выскакивает ошибка "Объект google не определен", хотя Google Maps Directions API я в Developers Console подключил и учетные данные создал (Browser Key). В чем может быть причина? Подскажите, пожалуйста. Вот код:
function onOpen(e) {
  
  SpreadsheetApp.getUi()
   .createMenu('Distance and time')
   .addItem('Estimate via DistanceService', 'estimateViaDistance')
   .addToUi();
  
}


function determineRoutes() {
    
    var directionsService = new google.maps.DirectionsService;
    
    var request = {
    
    origin:"Москва",
    destination:"Екатеринбург",
    travelMode: google.maps.TravelMode.DRIVING
    
    };
    
    directionsService.route(request,function(result, status){
    
    if(status == google.maps.DirectionsStatus.OK){
    var routes = result.routes;
    var leg = routes[0].legs;
    
    var lenght = leg[0].distance.text;
    Logger.log(lenght);
      
    var duration = leg[0].duration.text;
    Logger.log(duration);
      
          
    }
    
    });
    
       
}

function estimateViaDistance(){

 return HtmlService.createTemplateFromFile('Index.html')
  .evaluate()
  .setSandboxMode(HtmlService.SandboxMode.IFRAME);

}


Index.html:
<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
     <script src="https://maps.googleapis.com/maps/api/js?key=ПОЛУЧЕННЫЙ_КЛЮЧ&signed_in=true"async defer></script>
      <?!=determineRoutes();?>
     
   </body>
</html>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает JS в Google Chrome,IE9, Safari wolfus Opera, Safari и др. 1 05.04.2012 22:01
Google Chrome: не выполняется JavaScript который нормально работает в IE8 JavaCommando Opera, Safari и др. 5 05.10.2011 17:51
Не работает код внутри циклов DZHETIGAPA Events/DOM/Window 1 21.06.2011 01:03
Динамическая HTML форма (FireFox - работает, IE - не работает) dm1tr1y Общие вопросы Javascript 10 11.12.2009 15:59
Почему в FF не исполняется клонированный тэг script? NT Man Firefox/Mozilla 0 15.11.2009 16:00