Друзья, привет! Недавно мы решили научиться брать данные из API, предоставляющего прогноз погоды: https://openweathermap.org/api.
Ниже - строчка с фрагментом JSON, который возвращает API. Внутри «list» - строки с погодой по дням, из которых нам нужно было достать «dt» (unix date) и «day» (температура за день, °F). То, что достаем - выделено жирным.
{"cod":"200","message":0,"city":{"geoname_id":524901,"name":"Moscow","lat":55.7522,"lon":37.6156,"country":"RU","iso2":"RU","type":"city","population":0},"cnt":7,"list":[{"dt":1485766800,"temp":{"day":262.65,"min":261.41,
Мы написали простую пользовательскую функцию для парсинга, сейчас расскажем и покажем:
1. Сначала парсим JSON из введенной ссылки и превращаем его в object.
2. Затем - создаем пустой массив (arr) и заполняем его в цикле. Мы знаем расположение (ключи) всех значений, которые хотим вытащить. Количество строк (дней) с погодой мы определим с помощью data["list"].length. Цикл пройдется по каждой строке (row) в JSON, достанет нужные нам поля и вставит их в новый массив.
Первое поле каждой строки нового массива - название города (ключ: ["city"]["name"]).
Второе поле - unix date, которую мы приводим к формату даты (ключ: ["list"][row]["dt"]).
Третье поле - температура в градусах Фаренгейта, которые мы приводим к Цельсию, вычитая 273,15 (ключ: ["list"][row]["temp"]["day"]).
3. Возвращаем получившийся массив
Код целиком:
function parseWeatherJson(url){
var response = UrlFetchApp.fetch(url);
var json = response.getContentText();
var data = JSON.parse(json);
var arr = []
for(var row = 0; row<data["list"].length; row++){
arr = arr.concat([[
data["city"]["name"],
new Date(data["list"][row]["dt"]*1000),
data["list"][row]["temp"]["day"]-273.15]])
}
return arr
}
На скриншоте - как это работает в Таблице: