API для Google листов - невозможно получить данные - PullRequest
1 голос
/ 21 апреля 2020

Я пытаюсь получить данные через API на листах Google, я могу получить "NewConfirmed" и несколько других полей, но не могу получить данные "Страны". Пожалуйста, помогите.

function Covid19() {
  
  // Call the COVID19 API
  var response = UrlFetchApp.fetch("https://api.covid19api.com/summary");
  
  // Parse the JSON reply
  var json=response.getContentText();
  var data=JSON.parse(json);
  var sheet = SpreadsheetApp.getActiveSheet();
  var i = 2;

  for each (var info in data)
    {
      sheet.getRange(i,1).setValue([info['NewConfirmed']]);
      sheet.getRange(i,2).setValue([info['Country']]);
     
      i = i + 1;
  }

1 Ответ

0 голосов
/ 21 апреля 2020

Если вы регистрируете данные, вы увидите

{Страны = [{CountryCode = AX, TotalRecovered = 0.0, NewDeaths = 0.0, Slug = ala-aland-Islands, Страна = ALA Aland Islands , NewRecovered = 0.0, Date = 2020-04-21T12: 32: 01Z, NewConfirmed = 0.0, ...

Таким образом, для получения Country и NewConfirmed необходимо определить

var data=JSON.parse(json).Countries, а затем вам нужно выполнить итерацию по всем записям в пределах al oop.

Пример на основе вашего кода:

function Covid19() {
  var response = UrlFetchApp.fetch("https://api.covid19api.com/summary");
  var json=response.getContentText();
  var data=JSON.parse(json).Countries;
  var sheet = SpreadsheetApp.getActiveSheet();
  for(var i = 0; i < data.length; i++)
    {
      sheet.getRange(i+2,1).setValue([data[i]['NewConfirmed']]);
      sheet.getRange(i+2,2).setValue([data[i]['Country']]);
  }
}

Sidenote:

Не рекомендуется использовать getRange(...).setValue(..) во время каждой итерации l oop. Было бы лучше записать данные в массив и назначить массив со всеми данными на лист после завершения итерации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...