|  #фанфикс_знает_все  Господа программеры, поможите, люди добрые! Ковыряю гуглескрипт для вставки в гуглетаблицы. Нашёл пример, который тырит из урла 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 Спасибо! До сих пор досадую от глупости ошибки. Это при том, что если бы я скопипастил то, что собственноручно написал в комменте, было бы все норм. | |