Коллекции загружаются
#фанфикс_знает_все
Господа программеры, поможите, люди добрые! Ковыряю гуглескрипт для вставки в гуглетаблицы. Нашёл пример, который тырит из урла https://api.binance.com/api/v3/ticker/price?symbol=BTCUSDT вывод И берёт из него значение price. Мне нужно сделать так, чтобы из вот такого урл https://test.deribit.com/api/v2/public/get_index_price?index_name=btc_usd Из вот этого вывода скрипт возвращал значение index_price 18 октября 2020
|
Вот что у меня получилось:
https://pastebin.com/b4PF6fN4 Проблема, что взять result неоткуда, там вложенность. Но я жабаскрипт вообще не знаю, по-обезьяньи модифицирую. Явно нужно не data.result, а что-то типа data.result.index_price (не точно, конечно, но как-то должен уметь синтаксис. |
ReFeRy Онлайн
|
|
Чисто по синтаксису: return data.result.index_price
Обычное обращение к элементу многомерного массива (или тут объект). 1 |
ReFeRy
Я тож так подумал - но хренушки. Почему-то в итоге в ячейку таблицы ничего не выводится. Если поставлю data.jsonrpc - послушно выводит 2.0 |
ReFeRy Онлайн
|
|
Вообще, там не валидный json. В json все значения должны быть в двойных кавычках. Похоже json.parse как-то по другому такой json обрабатывает. В случае работы с обычным скриптом, все было бы просто, тестовый вывод куда надо и видишь, что там внутри переменной, а вот, что можно сделать в скрипте для гугл-таблиц, я понятия не имею.
|
А если просто data вывести что будет?
|
Verity Mage
Хез, оно в табличку суёт. А в чём это хню можно отладить? Пробовал как есть сунуть в jsfiddle - ничего не выдает. Ну и в ячейку гуглетаблицы тоже. Mikie Попробовал. Выдаёт в ячейку "undefined" Алерт пробовал сунуть и туда и jsfiddle - что-то не выдает ничего. |
вместо window.alert можно попробовать console.log
должно выплюнуть в консоль (которая в dev tools) в крайнем случае попробуй просто в ячейку положить response.getContentText() и посмотреть, что там оказывается т.е. просто return response.getContentText() если в ячейке окажется что-то правильное, можно сравнить это правильное с результатом JSON.stringify(JSON.parse(json)) и с результатом String(JSON.parse(json)) я бы отлаживал так А, ну и да там ещё надо не забыть внутрь result зайти т.е. не data.index_price, а data.result.index_price upd function DERIBIT_PRICE(coinpair) { var url = "https://test.deribit.com/api/v2/public/get_index_price?index_name="+coinpair.toLowerCase() var response = UrlFetchApp.fetch(url, {'muteHttpExceptions': true}); var json = response.getContentText(); var data = JSON.parse(json); return String(data.result.index_price) } |
Mikie
Показать полностью
Код выдает в гуглетаблицах: Ошибка TypeError: Cannot read property 'index_price' of undefined (строка 6). Кстати, а после строки с var url нужны или нет ; ? Без него работает, но всё-таки. А можно как-то сделать, чтобы было, например так: 1. Берётся полученное с урла и попадает в переменную Json. 2. Это дело парсится и попадает в переменную data 3. Переменная парсится тоже как-то и содержимое вложенных скобок попадает в, допустим, переменную result. function DERIBIT_PRICE(coinpair) { var url = "https://test.deribit.com/api/v2/public/get_index_price?index_name="+coinpair.toLowerCase() var response = UrlFetchApp.fetch(url, {'muteHttpExceptions': true}); var json = response.getContentText(); var data = JSON.parse(json); var result = JSON.parse(data); return String(result.index_price); } Ну это я так для примера, так как всё ещё почти ничего не понимаю. |
попробуй всё-таки поотлаживать
что находится в ячейке при такой функции? function DERIBIT_PRICE(coinpair) { И да, точку с запятой забывать не надо:)var url = "https://test.deribit.com/api/v2/public/get_index_price?index_name="+coinpair.toLowerCase(); var response = UrlFetchApp.fetch(url, {'muteHttpExceptions': true}); return response.getContentText(); } Поясняю. Он говорит, что Cannot read property 'index_price' of undefined это говорит о том, что data.result - почему-то undefined. Это значит, что либо data не имеет внутри себя result, либо сама data - undefined. Второй случай рассыпается на два: либо JSON.parse(json) почему-то не может распарсить и выдаёт undefined, либо внутри json уже лежит undefined. |
Mikie
В общем, "слишком сложнааааааа". Я же не настоящий сварщик :) |
Таки затянул меня обратно, да? :)
1 |
И, кстати, теперь горжусь собой :)
|
ReFeRy Онлайн
|
|
Styx
О_о |
ReFeRy, та да... :)
|
Добро пожаловать в программирование. С инициацией тебя!
|
Mikie
Спасибо! До сих пор досадую от глупости ошибки. Это при том, что если бы я скопипастил то, что собственноручно написал в комменте, было бы все норм. |