Установить ключ API Карт в редакторе скриптов

Насколько я понимаю, для отслеживания использования квот нам необходимо предоставить ключ API для службы приложений Google для службы, которую мы планируем использовать.

В моем случае у меня есть таблица с исходной и конечной точками, а также пользовательская функция для расчета расстояния между ними.

Я столкнулся с проблемой соблюдения квоты при вызове .getDirections():

Ошибка: служба вызывается слишком много раз в течение одного дня: маршрут. (линия **).

Пример кода:

 function getDirections_(origin, destination) {
  var directionFinder = Maps.newDirectionFinder();
  directionFinder.setOrigin(origin);
  directionFinder.setDestination(destination);
  var directions = directionFinder.getDirections();  
  return directions;
}

Итак, я прочитал, что если я назначу ключ API своему проекту, я смогу увидеть использование и насколько я близок к бесплатной квоте.

В редакторе скриптов я включил все API в меню "Ресурсы" / "Расширенные службы Google". Затем я зашел в консоль разработчиков Google и там не увидел никаких записей о том, сколько раз моя пользовательская функция вызывала API Карт Google или какое-либо использование API.

Логически я думаю, что в моем скрипте мне нужно установить свой ключ API Google, чтобы мои скрипты начали вызывать API под моим именем пользователя и подсчитывать количество раз, когда я использовал определенный API. Думаю, прямо сейчас я использую API Карт Google как анонимный, и поскольку всей компании назначен один и тот же IP-адрес, мы исчерпали разрешенные номера для вызова этой функции.

Нижняя строка, пожалуйста, ответьте, если вы знаете способ подключить мою простую функцию электронной таблицы к имеющемуся у меня ключу доступа к общедоступному API.

Спасибо, Пол


person Paul Krat    schedule 09.03.2015    source источник
comment
Вы должны иметь возможность отслеживать использование квоты в Google Developers Console. Когда вы включили расширенные службы Google, он должен был создать ProjectId.   -  person Rivero    schedule 11.03.2015
comment
Это ограничения квоты для сценария приложения: developers.google.com/apps- скрипт / руководства / услуги / квоты   -  person Rivero    schedule 11.03.2015
comment
Я получаю похожие отчеты от своих пользователей. @Rivero: 1) когда я перехожу в консоль разработчика (используя ссылку в электронной таблице), в консоли не записывается использование. Я включил API маршрутов. Пол: не нужно включать расширенные службы Google. 2) ссылка с ограничениями квот не включает квоты, относящиеся к Картам (маршруты и геокодирование).   -  person wivku    schedule 23.03.2015
comment
Имея ту же проблему. Озадачены тем, как реализовать API-ключ.   -  person Jheasly    schedule 07.05.2015
comment


Ответы (4)


Я также давно хотел найти этот ответ и рад сообщить, что нашел его. Похоже, что Google только что сделал это доступным около 14 октября 2015 года на основе даты эта страница была обновлена.

Вы можете использовать UrlFetchApp, чтобы добавить свой ключ API. Ссылка, которую я разместил выше, должна помочь с получением этого ключа.

function directionsAPI(origin, destination) {
 var Your_API_KEY = "Put Your API Key Here";
 var serviceUrl = "https://maps.googleapis.com/maps/api/directions/json?origin="+origin+"&destination="+destination+
"&mode="+Maps.DirectionFinder.Mode.DRIVING+"&alternatives="+Boolean(1)+"&key="+Your_API_KEY;

 var options={
  muteHttpExceptions:true,
  contentType: "application/json",
 };

 var response=UrlFetchApp.fetch(serviceUrl, options);
  if(response.getResponseCode() == 200) {
   var directions = JSON.parse(response.getContentText());
    if (directions !== null){
     return directions;
     }
    }
  return false;
 }

Итак, пройдемся по коду ... сначала введите свой ключ API. Затем выберите свои параметры в var serviceUrl. Я добавил дополнительные параметры (режим и альтернативы), чтобы показать, как их можно добавить. Если они вам не нужны, удалите их.

С UrlFetch вы можете добавлять параметры. Я использовал muteHttpExceptions, чтобы выборка не вызывала исключение, если код ответа указывает на сбой. Таким образом, мы можем выбрать тип возвращаемого значения для функции вместо того, чтобы генерировать исключение. Я использую JSON для типа контента, поэтому мы можем использовать тот же формат для отправки и получения запроса. Код ответа 200 означает успех, поэтому инструкции будут анализироваться и действовать как объект, возвращаемый getDirections (). Функция вернет false, если UrlFetch не был успешным (другой код ответа) или если объект имеет значение NULL.

Вы сможете видеть запросы в режиме реального времени в консоли разработчика, если заглянете в Google Maps Directions API. Убедитесь, что выставление счетов включено, и с вас будет взиматься плата, как только вы превысите квоты.

person JP Carlin    schedule 02.11.2015
comment
Хорошая штука, JP. Еще я рекомендую поместить ключи API в свойствах скрипта. Таким образом, если вы поместите свой код в систему контроля версий, вы не рискуете их раскрыть. Вы можете сделать это, перейдя в ФайлСвойства проекта и добавив пару" ключ-значение "на вкладке" Свойства скрипта ". Затем в вашем коде используйте PropertiesService.getScriptProperties().getProperty(keyName), чтобы получить доступ к ключу. - person JD Maresco; 03.11.2015


По состоянию на 13.07.2017 г. мне удалось заставить API работать, включив API Таблиц как в меню «Расширенные службы Google» (изображения 1 и 2), так и в консоли разработчика Google. Если вы вошли в Google Таблицы с тем же адресом электронной почты, функция извлечения не требуется.

[В меню "Ресурсы" выберите "Расширенные службы Google".] [1]

[В расширенных службах Google убедитесь, что API Google Таблиц включен.] [2]

[1]: [2]:

person ChrisBuck    schedule 13.07.2017

Слава богу, JP Carlin! Спасибо за ответ выше. Ответ JP также объясняет его код. Просто чтобы поделиться, без объяснения кода (просто посмотрите выше объяснение JP Carlin), ниже моя версия. Вы увидите, что у меня также есть параметр leave_time, чтобы я мог получить расстояние и время в пути для определенной даты и времени. Я также добавил вызов в журнал ошибок (для просмотра в разделе «Просмотр / Журналы»):

Примечание. Служба поддержки Google сообщила мне, что использование вашего ключа API для Карт Google (например, с «API маршрутов») с Google Таблицами не поддерживается. Приведенный ниже код работает, но не поддерживается. По состоянию на 11/4/2018 у Google есть внутренний запрос на добавление поддержки API Карт Google в Google Таблицы, но нет графика для добавления этой функции.

/********************************************************************************
 * directionsAPI: get distance and time taking traffic into account, from Google Maps API
********************************************************************************/
function directionsAPI(origin, destination, customDate) {
        var Your_API_KEY = "<put your APK key here between the quotes>";
        var serviceUrl = "https://maps.googleapis.com/maps/api/directions/json?origin="+origin+"&destination="+destination+"&departure_time="+customDate.getTime()+"&mode="+Maps.DirectionFinder.Mode.DRIVING+"&key="+Your_API_KEY;

        var options={
          muteHttpExceptions:true,
          contentType: "application/json",
         };

        var response=UrlFetchApp.fetch(serviceUrl, options);
          if(response.getResponseCode() == 200) {
           var directions = JSON.parse(response.getContentText());
            if (directions !== null){
             return directions;
             }
            }
      Logger.log("Error: " + response.getResponseCode() + " From: " + origin + ", To: " + destination + ", customDate: " + customDate + ", customDate.getTime(): " + customDate.getTime() );
      return false;
      }
person PatrickDHolmes    schedule 05.11.2018