Как извлечь элемент из массива (в массиве?) В Json в Google Sheets - PullRequest
0 голосов
/ 15 января 2019

Пытается настроить электронную таблицу покемонов и не хочет вводить много точек данных.

Хотелось бы помочь или решить проблему, или если бы я мог указать, куда обратиться, чтобы научить себя, что также было бы действительно полезно.

Попытка получить отдельные точки данных из того, что я думаю, называется массивом в JSON (очевидно, мало опыта), и ввести их в Google Sheets.

В моем примере целью является извлечение base_stat скорости

Ниже приведен конец JSON (около 10 тыс. Строк); https://pokeapi.co/api/v2/pokemon/1/

Точка данных, которую мы хотим извлечь, находится в строке 3, но я не был уверен, сколько еще было ценно.

    "stats": [
{
  "base_stat": 45,
  "effort": 0,
  "stat": {
    "name": "speed",
    "url": "https://pokeapi.co/api/v2/stat/6/"
  }
},
{
  "base_stat": 65,
  "effort": 0,
  "stat": {
    "name": "special-defense",
    "url": "https://pokeapi.co/api/v2/stat/5/"
  }
},
{
  "base_stat": 65,
  "effort": 1,
  "stat": {
    "name": "special-attack",
    "url": "https://pokeapi.co/api/v2/stat/4/"
  }
},
{
  "base_stat": 49,
  "effort": 0,
  "stat": {
    "name": "defense",
    "url": "https://pokeapi.co/api/v2/stat/3/"
  }
},
{
  "base_stat": 49,
  "effort": 0,
  "stat": {
    "name": "attack",
    "url": "https://pokeapi.co/api/v2/stat/2/"
  }
},
{
  "base_stat": 45,
  "effort": 0,
  "stat": {
    "name": "hp",
    "url": "https://pokeapi.co/api/v2/stat/1/"
  }
}
  ],
  "types": [
    {
      "slot": 2,
      "type": {
        "name": "poison",
        "url": "https://pokeapi.co/api/v2/type/4/"
      }
    },
    {
      "slot": 1,
      "type": {
        "name": "grass",
        "url": "https://pokeapi.co/api/v2/type/12/"
      }
    }
  ],
  "weight": 69
}

поэтому, когда у JSON нет квадратных скобок, я успешно извлекаю данные с кодом, подобным

function GETSPEED(Name) {
  var myUrl = "https://pokeapi.co/api/v2/pokemon/" + Name;
  var jsonData = UrlFetchApp.fetch(myUrl);
  var jsonString = jsonData.getContentText();
  var jsonObject = JSON.parse(jsonString);
  var Value = (jsonObject.speed)
  return Value;
}

вывел, что у меня две проблемы;

1) «Значение = (jsonObject.speed)». Скорость не отделяется двоеточием от моего разыскиваемого ответа, и поэтому мой возможный запрос - неправильная вещь.

2) То, что я запрашиваю в строке, прежде чем все еще содержит много элементов (массивов?)

Для части 1 «base_stat» повторяется много, и я не знаю, как дифференцировать. Для части 2 я не знаю, с чего начать.

У меня был хороший гугл, чтобы найти ответ на этот вопрос, или место, где можно начать обучение, и я не нашел никакой точки, на которой можно было бы строить.

В любом случае, заранее благодарю за оказанную помощь или за время, потраченное на прочтение этого.

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