#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, добро пожаловать. Не стесняйтесь также голосовать, если вы считаете, что это было полезно для вас.