Я пытаюсь получить данные из API карты Google и поместить их в листы Google, я создал al oop
, чтобы получить данные со следующей страницы токена.
Первая функция заключается в получить местоположение из ячейки на листе
вторая функция - получить первую страницу и l oop - на следующие страницы
третья функция - l oop на следующих страницах
но, похоже, проблема в третьей функции, может быть, причина в том, что fetch не читает Url. Я не знаю, почему
результаты: я получил первые 20 строк, а затем код (Исключение: число строк в диапазоне должно быть хотя бы 1.)
может кто-нибудь дать мне несколько советов или исправить то, что я сделал не так, пожалуйста? заранее спасибо
function APIfromLoc(){
var ss = SpreadsheetApp.openById('1kiecwnIEHNvTz3VD8AjPT0CK8HvqmzCi86vXRyrU4lc');
var sheet = ss.getSheetByName('Sheet1');
var location = sheet.getRange(1,1).getValue();
callAPIinit(location);
}
// function to call the first page api
function callAPIinit(location) {
var ss = SpreadsheetApp.openById('1kiecwnIEHNvTz3VD8AjPT0CK8HvqmzCi86vXRyrU4lc');
var sheet = ss.getSheetByName('Sheet2');
var API_key = '';
//var location = ' ' ;
var Url = 'https://maps.googleapis.com/maps/api/place/textsearch/json?location='+location+'&raduis=50000&type=restaurant&key='+API_key;
var response = UrlFetchApp.fetch(Url);
// Parse the JSON reply
var json = response.getContentText();
var data = JSON.parse(json);
var results = data["results"];
var token = data["next_page_token"];
var output = []
results.forEach(function(elem,i) {
output.push([elem["formatted_address"],elem["geometry"]["location"]["lat"],elem["geometry"]["location"]["lng"],elem["geometry"]["viewport"]["northeast"]["lat"],elem["geometry"]["viewport"]["northeast"]["lng"],elem["geometry"]["viewport"]["southwest"]["lat"],elem["geometry"]["viewport"]["southwest"]["lng"],elem["id"],elem["name"],elem["place_id"],elem["plus_code"]["compound_code"],elem["plus_code"]["global_code"],elem["rating"],elem["reference"],elem["types"][0],elem["types"][1],elem["types"][2],elem["types"][3],elem["price_level"],elem["user_ratings_total"]]);
// sheet.setRowHeight(i,65);
});
// adds an index number to the array
output.forEach(function(elem,i) {
elem.unshift(i + 1);
});
var len = output.length;
// paste in the values
sheet.getRange(2,1,len,21).setValues(output);
sheet.getRange(1,1).setValue(token);
Next_pages(Url);
}
/**
--------------------------------------------------------------------------------------------------------------------------------------------------------------
*/
// function to call the next pages using first page token
function Next_pages(Url) {
var ss = SpreadsheetApp.openById('1kiecwnIEHNvTz3VD8AjPT0CK8HvqmzCi86vXRyrU4lc');
var sheet = ss.getSheetByName('Sheet2');
var token = sheet.getRange(1,1).getValue();
Url = Url + "&pagetoken=" + token;
Logger.log(Url)
//loop to get all pages
do{
//var location = ' ' ;
// var Url = Url+'&pagetoken='+token;
var response = UrlFetchApp.fetch(Url);
var json = response.getContentText();
var data = JSON.parse(json);
Logger.log(data)
var results = data["results"];
token = [];
token = data["next_page_token"];
var output = []
results.forEach(function(elem,i) {
output.push([elem["formatted_address"],elem["geometry"]["location"]["lat"],elem["geometry"]["location"]["lng"],elem["geometry"]["viewport"]["northeast"]["lat"],elem["geometry"]["viewport"]["northeast"]["lng"],elem["geometry"]["viewport"]["southwest"]["lat"],elem["geometry"]["viewport"]["southwest"]["lng"],elem["id"],elem["name"],elem["place_id"],elem["plus_code"]["compound_code"],elem["plus_code"]["global_code"],elem["rating"],elem["reference"],elem["types"][0],elem["types"][1],elem["types"][2],elem["types"][3],elem["price_level"],elem["user_ratings_total"]]);
// sheet.setRowHeight(i,65);
});
// adds an index number to the array
output.forEach(function(elem,i) {
elem.unshift(i + 1);
});
var len = output.length;
// paste in the values
sheet.getRange(sheet.getLastRow()+1,1,len,21).setValues(output);
sheet.getRange(1,1).clearContent();
} while(token != Null)
}