Я получаю данные Yahoo Finance в виде файла JSON (через python API YahooFinancials), и я хотел бы иметь возможность разумно анализировать данные для подачи в Google Sheet.
Для этогоНапример, я заинтересован в получении переменной «cash» под вложенной структурой «date».Но, как вы увидите, иногда нет переменной «cash» под первой датой, поэтому я бы хотел, чтобы скрипт / формула перешел и получил переменную «cash», которая находится под структурой второй даты.
Вот пример 1 кода JSON:
{ "balanceSheetHistoryQuarterly": {
"ABBV": [
{
"2018-12-31": {
"totalStockholderEquity": -2921000000,
"netTangibleAssets": -45264000000
}
},
{
"2018-09-30": {
"intangibleAssets": 26625000000,
"capitalSurplus": 14680000000,
"totalLiab": 69085000000,
"totalStockholderEquity": -2921000000,
"otherCurrentLiab": 378000000,
"totalAssets": 66164000000,
"commonStock": 18000000,
"otherCurrentAssets": 112000000,
"retainedEarnings": 6789000000,
"otherLiab": 16511000000,
"goodWill": 15718000000,
"treasuryStock": -24408000000,
"otherAssets": 943000000,
"cash": 8015000000,
"totalCurrentLiabilities": 15387000000,
"shortLongTermDebt": 1026000000,
"otherStockholderEquity": -2559000000,
"propertyPlantEquipment": 2950000000,
"totalCurrentAssets": 18465000000,
"longTermInvestments": 1463000000,
"netTangibleAssets": -45264000000,
"shortTermInvestments": 770000000,
"netReceivables": 5780000000,
"longTermDebt": 37187000000,
"inventory": 1786000000,
"accountsPayable": 10981000000
}
},
{
"2018-06-30": {
"intangibleAssets": 26903000000,
"capitalSurplus": 14596000000,
"totalLiab": 65016000000,
"totalStockholderEquity": -3375000000,
"otherCurrentLiab": 350000000,
"totalAssets": 61641000000,
"commonStock": 18000000,
"otherCurrentAssets": 128000000,
"retainedEarnings": 5495000000,
"otherLiab": 16576000000,
"goodWill": 15692000000,
"treasuryStock": -23484000000,
"otherAssets": 909000000,
"cash": 3547000000,
"totalCurrentLiabilities": 17224000000,
"shortLongTermDebt": 3026000000,
"otherStockholderEquity": -2639000000,
"propertyPlantEquipment": 2787000000,
"totalCurrentAssets": 13845000000,
"longTermInvestments": 1505000000,
"netTangibleAssets": -45970000000,
"shortTermInvestments": 196000000,
"netReceivables": 5793000000,
"longTermDebt": 31216000000,
"inventory": 1580000000,
"accountsPayable": 10337000000
}
},
{
"2018-03-31": {
"intangibleAssets": 27230000000,
"capitalSurplus": 14519000000,
"totalLiab": 65789000000,
"totalStockholderEquity": 3553000000,
"otherCurrentLiab": 125000000,
"totalAssets": 69342000000,
"commonStock": 18000000,
"otherCurrentAssets": 17000000,
"retainedEarnings": 4977000000,
"otherLiab": 17250000000,
"goodWill": 15880000000,
"treasuryStock": -15961000000,
"otherAssets": 903000000,
"cash": 9007000000,
"totalCurrentLiabilities": 17058000000,
"shortLongTermDebt": 6024000000,
"otherStockholderEquity": -2630000000,
"propertyPlantEquipment": 2828000000,
"totalCurrentAssets": 20444000000,
"longTermInvestments": 2057000000,
"netTangibleAssets": -39557000000,
"shortTermInvestments": 467000000,
"netReceivables": 5841000000,
"longTermDebt": 31481000000,
"inventory": 1738000000,
"accountsPayable": 10542000000
}
}
]
}
}
Структура первой даты (под 2018-12-31) не содержит переменную cash.Поэтому я бы хотел, чтобы в Google лист и те же данные шли в 2018-09-30, а если нет, то и в 2018-06-30.ИЛИ просто просканируйте даты вложенных структур и извлеките первое найденное «денежное» вхождение.
По сути, я хотел бы знать, как пропустить имя переменной даты (т.е. 201-12-12-31) какэто на самом деле не имеет значения, и просто заставьте формулу искать первую доступную переменную «cash».
Основные вопросы, резюмируя
- Как пропустить упоминание точного имени вложенного уровня исканировать что внутри?
- Как продолжать сканирование, пока не найдете нужную переменную со значением, которое не является «нулевым» (это может произойти)?
- Какая будет вся формула для достижения следующей логики: СканированиеJSON-файл до тех пор, пока вы не найдете значение>, если значение не найдено, откат к этой функции IMPORTXML, которая вызывает внешний API.
Дайте мне знать, если вам нужно больше контекста о проблеме, и спасибо заранее заваша помощь:)
РЕДАКТИРОВАТЬ: это формула IMPORTJSON
, которую я сейчас использую в ячейке таблицы.
=ImportJSON("https://api.myjson.com/bins/8mxvi", "/financial/balanceSheetHistoryQuarterly/ABBV/2018-31-12/cash", "noHeaders")
Очевидно, что эта возвращает ошибку, поскольку ничего нетпод этой датой.JSON также является действующей ссылкой, которую я использую только сейчас.