Открыть JONS в гугл таблице, с помощью googl script
Вложений: 2
Приветствую!
В связи с тем что стал разбираться с торговлей в сфере криптовалюты, возникла необходимость взять данные с публичного API Polonix и для удобства создания своего калькулятора перенести их в таблицу эксель или гугл в удобном виде. На просторах интернета нашел решение как с помощью googl script можно конвертировать JONS формат (в нем сервер отдает инфу) в текстовый и потом с помощью парсинга разнести данные по ячейкам. Я уперся в то как дальше данные из парсинга распределить по колонкам и строчкам. Нужно чтобы была "шапка" таблицы в которой указано: last, lowestAsk .... и тд, ниже каждая строка начиналась с валютной пары, и под соотсетсвующей ячейкой шапки, выводились соответсвующие валюте данные. :help: Пожалуйста подскажите как дальше данные распределить. Также нужно будет сделать авто обновление каждые 30 сек. Данные с биржи беру по этой ссылке https://poloniex.com/public?command=returnTicker В приложении скрины. |
Вот код из гугл скрипт:
function processXMRAPI() { // В скобках пишем идентификатор электронной таблицы var ss = SpreadsheetApp.openById('***************************************'); // показываем скрипту что нужно работать с листом APIPull var APIPullSheet = ss.getSheetByName ("Eth/Btc"); // Очистить столбцы A, B, C & D APIPullSheet.getRange('A2:K19999').clearContent(); //var создает переменную (поле AKA a), url - вызов переменной 'url'= "Http" сделать поле равным веб-адресу API Polo var url= "https://poloniex.com/public?command=returnTicker"; //Мы просто собираем данные, используя эти команды, в новые переменные, которые мы определяем. В первой строке мы создаем переменную с именем responseAPI и помещаем необработанные данные из URL Poloniex в это поле. Эти данные все еще находятся в формате JSON, и мы пока не можем использовать его в электронной таблице. var responseAPI = UrlFetchApp.fetch (url); // И затем мы берем эти форматированные данные JSON и анализируем (разбиваем) их на поля, которые мы можем использовать в электронной таблице. Данные помещаются в поле parcedData. var parcedData = JSON.parse (responseAPI.getContentText ()); // Определим массив asks и запишем его из данных, полученных parced data } |
Пожалуйста, отформатируйте свой код!
Для этого его можно заключить в специальные теги: js/css/html и т.п., например: [js] ... ваш код... [/js] О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting. |
Сделал.
Вот тут https://poloniexapi.wordpress.com/20...poloniexpart7/ добрый человек рассказывает как создать код чтобы вытягивать данные с полоникса по одной валютной паре. С помощью этой статьи я и написал этот код. Но мне нужны немного другие данные и я не знаю как их распределить в ячейки. |
Друзья, хелп плиз! Понял одно что нужно создать шапку для колонок, и уже согласно названию этих колонок возвращать в ячейки данные, но как это сделать не понимаю пока.
|
Изучаю js, чтобы разобраться. понял что в этом отвте:
{"btc_usd":{"asks":[[4395,0.65708663],[4395.889,0.01375108],[4395.9,0.05719853],[4398,0.0276714],[4398.0000002,0.1966488],[4399,0.00228519],[4399.0000002,0.02590756],[4400,0.0202041],[4400.00000033,0.00073159],[4400.7840001,0.00031471]],"bids":[[4392.00000001,0.06314765],[4384.23103792,0.0005761],[4376,0.00177915],[4375,0.00137914],[4374.99999,0.01695014],[4374.99900001,0.00499905],[4374.999,0.28674424],[4373.81781981,0.00053624],[4371.3027953,0.0001521],[4370,0.23018268]]}} Объект asks является вложенным. На сколько я понял путь к вложенному объекту можно указать так: var btc_usd.asks [] но гугл выдает следующую ошибку: Перед оператором отсутствует точка с запятой. (строка 9, файл Код). Чтото я опять не понял (((. вот код: function scriptBTCUSD() { var ss = SpreadsheetApp.openById('***********************************'); // В скобках пишем индентификатор электронной таблицы var APIPullSheet = ss.getSheetByName ("BTC/USD"); // показываем скрипту название листа APIPullSheet.getRange('A2:D11').clearContent(); // Очистить столбцы A, B, C & D var url = "https://yobit.net/api/3/depth/btc_usd?limit=10"; //var создает переменную (поле AKA a), url - вызов переменной 'url'= "Http" сделать поле равным веб-адресу API Polo var responseAPI = UrlFetchApp.fetch (url); //Мы просто собираем данные, используя эти команды, в новые переменные, которые мы определяем. В первой строке мы создаем переменную с именем responseAPI и помещаем необработанные данные из URL Poloniex в это поле. Эти данные все еще находятся в формате JSON, и мы пока не можем использовать его в электронной таблице. var parcedData = JSON.parse (responseAPI.getContentText ()); // И затем мы берем эти форматированные данные JSON и анализируем (разбиваем) их на поля, которые мы можем использовать в электронной таблице. Данные помещаются в поле parcedData. var btc_usd.asks = []; // Определим массив asks и запишем его из данных, полученных parced data asks.push(['Покупка','Объем']); // Создаем название столбцов для того чтобы поместить данные из аскс for(var key in parcedData.asks) { asks.push(parcedData.asks[key]); } askRange = APIPullSheet.getRange(1, 1, asks.length, 2); // Поместите данные «ask» в столбцы электронной таблицы A & B askRange.setValues(asks); var bids = []; // Определим массив bids и запишем его из данных, полученных parced data bids.push (['Продажа','Объем']); for ( var key in parcedData.bids ) { bids.push (parcedData.bids[key]); } bidRange = APIPullSheet.getRange (1, 3, bids.length, 2); // Получать данные «ставки» в столбцы электронной таблицы C & D bidRange.setValues (bids); } Помогите разобраться. |
Vasiliy83,
var asks = parcedData.btc_usd.asks; |
Рони, СПАСИБО!!! Заработало)))!
Но выполз косяк, название столбцов опустились под столбцы, теперь. Немного по переставлял местами, но название столбцов на верх не вернулись. Максимом что получилось сделать, это опустить данные на одну строку и вручную вписать название столбцов. Как вернуть название столбцов в первую строку? Сейчас вот такой скрипт: function scriptBTCUSD() { var ss = SpreadsheetApp.openById('**********************'); // В скобках пишем индентификатор электронной таблицы var APIPullSheet = ss.getSheetByName ("BTC/USD"); // показываем скрипту название листа APIPullSheet.getRange('A2:E20').clearContent(); // Очистить столбцы A, B, C & D var url = "https://yobit.net/api/3/depth/btc_usd?limit=10"; //var создает переменную (поле AKA a), url - вызов переменной 'url'= "Http" сделать поле равным веб-адресу API Polo var responseAPI = UrlFetchApp.fetch (url); //Мы просто собираем данные, используя эти команды, в новые переменные, которые мы определяем. В первой строке мы создаем переменную с именем responseAPI и помещаем необработанные данные из URL Poloniex в это поле. Эти данные все еще находятся в формате JSON, и мы пока не можем использовать его в электронной таблице. var parcedData = JSON.parse (responseAPI.getContentText ()); // И затем мы берем эти форматированные данные JSON и анализируем (разбиваем) их на поля, которые мы можем использовать в электронной таблице. Данные помещаются в поле parcedData. var asks = [] // Определим массив asks и запишем его из данных, полученных parced data var asks = parcedData.btc_usd.asks; // Показываю что asks вложенный объект в btc_usd asks.push(['Покупка','Объем']); // Создаем название столбцов для того чтобы поместить данные из аскс for(var key in parcedData.asks) {asks.push(parcedData.asks[key]);} askRange = APIPullSheet.getRange(1, 1, asks.length, 2); // Поместите данные «ask» в столбцы электронной таблицы A & B askRange.setValues(asks); var bids = []; // Определим массив bids и запишем его из данных, полученных parced data var bids = parcedData.btc_usd.bids; // Показываю что bids вложенный объект в btc_usd bids.push (['Продажа','Объем']); for ( var key in parcedData.bids ) {bids.push (parcedData.bids[key]);} bidRange = APIPullSheet.getRange (1, 4, bids.length, 2); // Получать данные «ставки» в столбцы электронной таблицы D & E bidRange.setValues (bids); } |
var bids = []; Строчка лишняя))). Вот так то же самое получается:
function scriptBTCUSD() { var ss = SpreadsheetApp.openById('*****************************************'); // В скобках пишем индентификатор электронной таблицы var APIPullSheet = ss.getSheetByName ("BTC/USD"); // показываем скрипту название листа APIPullSheet.getRange('A2:E20').clearContent(); // Очистить столбцы A, B, C & D var url = "https://yobit.net/api/3/depth/btc_usd?limit=10"; //var создает переменную (поле AKA a), url - вызов переменной 'url'= "Http" сделать поле равным веб-адресу API Polo var responseAPI = UrlFetchApp.fetch (url); //Мы просто собираем данные, используя эти команды, в новые переменные, которые мы определяем. В первой строке мы создаем переменную с именем responseAPI и помещаем необработанные данные из URL Poloniex в это поле. Эти данные все еще находятся в формате JSON, и мы пока не можем использовать его в электронной таблице. var parcedData = JSON.parse (responseAPI.getContentText ()); // И затем мы берем эти форматированные данные JSON и анализируем (разбиваем) их на поля, которые мы можем использовать в электронной таблице. Данные помещаются в поле parcedData. var asks = parcedData.btc_usd.asks; // Определим массив asks и запишем его из данных, полученных parced data указав asks вложенный объект в btc_usd asks.push(['Покупка','Объем']); // Создаем название столбцов для того чтобы поместить данные из аскс for(var key in parcedData.asks) {asks.push(parcedData.asks[key]);} // Поместите данные «ask» в столбцы электронной таблицы A & B askRange = APIPullSheet.getRange(2, 1, asks.length, 2); askRange.setValues(asks); // Определим массив bids и запишем его из данных, полученных parced data указав bids вложенный объект в btc_usd var bids = parcedData.btc_usd.bids; // Показываю что bids вложенный объект в btc_usd bids.push (['Продажа','Объем']); for ( var key in parcedData.bids ) {bids.push (parcedData.bids[key]);} bidRange = APIPullSheet.getRange (2, 4, bids.length, 2); // Получать данные «ставки» в столбцы электронной таблицы D & E bidRange.setValues (bids); } И в этом скрипте я сдвинул данные на одну строчку в низ, но название столбцов не поднимается на 1 строку. |
Вложений: 1
Приложение
|
Часовой пояс GMT +3, время: 20:28. |