Использование API Google Places в таблицах Google

#google-sheets #google-places

#google-sheets #google-places

Вопрос:

Я использую этот учебник (https://scrapediary.com/find-local-leads-with-google-places-api-and-sheets /) для извлечения данных из API Google places в таблицу Google. Я скопировал код точно:

   var output = [ ["Name", "Place ID", "Latitude", "Longitude", "Types"]]
  var url = "https://maps.googleapis.com/maps/api/place/nearbysearch/json?types=foodamp;location=51.4977836,-0.1522502amp;radius=200amp;key=AIzaSyBtepY6mCTkHr3m4UCacxSkePkli5yEbCM";
  var response = UrlFetchApp.fetch(url)
  payload = JSON.parse(response)
  for (var x = 0; x < payload['results'].length; x  ){
    var inner = [ payload['results'][x]['name'], payload['results'][x]['place'],payload['results'][x]['latitude'],payload['results'][x]['longitude'],payload['results'][x]['types']]
    output.push(inner)}
}
 

и я пытаюсь запустить его в таблицах Google следующим образом:

=placeSearch("Golf Course","51.4977836","-0.1522502","20000","i_put_my_api_key_here")

и он показывает «Загрузку», а затем ничего не возвращает. Я дважды проверил, что сам URL-адрес работает, вставляя его в браузер, и он возвращает результаты в формате JSON. Я чувствую, что есть проблема с выводом результатов на лист, но я не могу его найти

Ответ №1:

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

Посмотрите мой точный код, который работал и возвращал данные в таблицах.

 function placesAPI(keyword,latitude,longitude,radius,api_key,depth) {
  var output = [ ["Name", "Place ID", "Latitude", "Longitude", "Types"]]
  var url = "https://maps.googleapis.com/maps/api/place/nearbysearch/json?types=foodamp;location=51.4977836,-0.1522502amp;radius=200amp;key=AIzaSyBtepY6mCTkHr3m4UCacxSkePkli5yEbCM";
  var response = UrlFetchApp.fetch(url)
  payload = JSON.parse(response);
  for (var x = 0; x < payload['results'].length; x  ){
    var inner = [ payload['results'][x]['name'], payload['results'][x]['place'],payload['results'][x]['latitude'],payload['results'][x]['longitude'],payload['results'][x]['types']]
    output.push(inner)}
  return(output); // added this code to put the value on the cell
}
 

При вызове функции сначала необходимо использовать ключ api в URL-адресе, чтобы установить соединение. В ходе тестирования я подтвердил, что если вы использовали другие ключи api при первом вызове функции, он ничего не вернет.

=placesAPI("Golf Course","51.4977836","-0.1522502","20000","AIzaSyBtepY6mCTkHr3m4UCacxSkePkli5yEbCM",20)

После этого он должен вернуть тот же результат, что и ниже. То же самое мы видим при посещении url вручную.

пример вывода

Комментарии:

1. Большое вам спасибо!!! Я новичок и очень ценю помощь!!

2. Я рад, что это сработало @emilyc, добро пожаловать. Не стесняйтесь также голосовать, если вы считаете, что это было полезно для вас.