Как верно задать путь в скрипте IMPORTJSON

114
09 ноября 2019, 13:40

Есть скрипт Google Apps Script

function IMPORTJSON(url, xpath) {
  try {
    var res = UrlFetchApp.fetch(url);
    var content = res.getContentText();
    var json = JSON.parse(content);
    var patharray = xpath.split('/');
    // Logger.log(patharray);
    for (var i = 0; i < patharray.length; i++) {
      json = json[patharray[i]];
    }
    // Logger.log(typeof(json));
    if (typeof json === 'undefined') {
      return 'Node Not Available';
    } else if (typeof json === 'object') {
      var tempArr = [];
      for (var obj in json) {
        if (json.hasOwnProperty(obj)) tempArr.push([obj, json[obj]]);
      }
      return tempArr;
    } else if (typeof json !== 'object') {
      return json;
    }
  } catch (err) {
    return 'Error getting data';
  }
}

Он работает прекрасно, но столкнувшись с JSON массивом, он перестает работать. Пример: https://api.iextrading.com/1.0/stock/aapl/dividends/ytd

Я подозреваю что это из за скобок []

Пример: [{"exDate":"2018-02-09","paymentDate":"2018-02-15","recordDate":"2018-02-12","declaredDate":"2018-02-01","amount":0.63,"flag":"","type":"Dividend income","qualified":"Q","indicated":""}]

Как заставить его работать с такими данными ?

Answer 1

Укажите позицию элемента в массиве

= IMPORTJSON(
  "https://api.iextrading.com/1.0/stock/aapl/dividends/ytd";
  "0"
)
|       A      |        B        |
|:------------:|:---------------:|
| exDate       | 2018-02-09      |
| paymentDate  | 2018-02-15      |
| recordDate   | 2018-02-12      |
| declaredDate | 2018-02-01      |
| amount       | 0.63            |
| flag         |                 |
| type         | Dividend income |
| qualified    | Q               |
| indicated    |                 |
= IMPORTJSON(
  "https://api.iextrading.com/1.0/stock/aapl/dividends/ytd";
  "0/paymentDate"
)
|      A     |
|:----------:|
| 2018-02-15 |
READ ALSO
Вызов стандартного окна валидации

Вызов стандартного окна валидации

Можно-ли с помощью JS,искусственно вызвать в поле вот такое окно:

119
Node.JS минификаторы

Node.JS минификаторы

Рендерю все страницы для юзеров на сервере, так вот мне нужно минифицировать все html, css, и jsНо есть проблема, некоторые html содержат в себе так-же...

104
Почему не работает метод в JavaScript? [дубликат]

Почему не работает метод в JavaScript? [дубликат]

На данный вопрос уже ответили:

127