Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.10.2017, 23:34
Новичок на форуме
Отправить личное сообщение для Vasiliy83 Посмотреть профиль Найти все сообщения от Vasiliy83
 
Регистрация: 05.10.2017
Сообщений: 9

Открыть JONS в гугл таблице, с помощью googl script
Приветствую!
В связи с тем что стал разбираться с торговлей в сфере криптовалюты, возникла необходимость взять данные с публичного API Polonix и для удобства создания своего калькулятора перенести их в таблицу эксель или гугл в удобном виде.

На просторах интернета нашел решение как с помощью googl script можно конвертировать JONS формат (в нем сервер отдает инфу) в текстовый и потом с помощью парсинга разнести данные по ячейкам.

Я уперся в то как дальше данные из парсинга распределить по колонкам и строчкам.
Нужно чтобы была "шапка" таблицы в которой указано: last, lowestAsk .... и тд, ниже каждая строка начиналась с валютной пары, и под соотсетсвующей ячейкой шапки, выводились соответсвующие валюте данные.

Пожалуйста подскажите как дальше данные распределить.
Также нужно будет сделать авто обновление каждые 30 сек.
Данные с биржи беру по этой ссылке https://poloniex.com/public?command=returnTicker

В приложении скрины.
Изображения:
Тип файла: jpg скрипт гугл.jpg (100.0 Кб, 2 просмотров)
Тип файла: jpg должно быть.jpg (80.5 Кб, 0 просмотров)
Ответить с цитированием
  #2 (permalink)  
Старый 05.10.2017, 23:37
Новичок на форуме
Отправить личное сообщение для Vasiliy83 Посмотреть профиль Найти все сообщения от Vasiliy83
 
Регистрация: 05.10.2017
Сообщений: 9

Вот код из гугл скрипт:
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 
}

Последний раз редактировалось Vasiliy83, 06.10.2017 в 10:52.
Ответить с цитированием
  #3 (permalink)  
Старый 05.10.2017, 23:49
Профессор
Отправить личное сообщение для Rasy Посмотреть профиль Найти все сообщения от Rasy
 
Регистрация: 17.06.2016
Сообщений: 509

Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
Ответить с цитированием
  #4 (permalink)  
Старый 06.10.2017, 10:57
Новичок на форуме
Отправить личное сообщение для Vasiliy83 Посмотреть профиль Найти все сообщения от Vasiliy83
 
Регистрация: 05.10.2017
Сообщений: 9

Сделал.
Вот тут https://poloniexapi.wordpress.com/20...poloniexpart7/ добрый человек рассказывает как создать код чтобы вытягивать данные с полоникса по одной валютной паре. С помощью этой статьи я и написал этот код. Но мне нужны немного другие данные и я не знаю как их распределить в ячейки.
Ответить с цитированием
  #5 (permalink)  
Старый 06.10.2017, 14:22
Новичок на форуме
Отправить личное сообщение для Vasiliy83 Посмотреть профиль Найти все сообщения от Vasiliy83
 
Регистрация: 05.10.2017
Сообщений: 9

Друзья, хелп плиз! Понял одно что нужно создать шапку для колонок, и уже согласно названию этих колонок возвращать в ячейки данные, но как это сделать не понимаю пока.
Ответить с цитированием
  #6 (permalink)  
Старый 07.10.2017, 19:44
Новичок на форуме
Отправить личное сообщение для Vasiliy83 Посмотреть профиль Найти все сообщения от Vasiliy83
 
Регистрация: 05.10.2017
Сообщений: 9

Изучаю 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);

}


Помогите разобраться.
Ответить с цитированием
  #7 (permalink)  
Старый 07.10.2017, 20:05
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

Vasiliy83,
var asks = parcedData.btc_usd.asks;
Ответить с цитированием
  #8 (permalink)  
Старый 07.10.2017, 20:46
Новичок на форуме
Отправить личное сообщение для Vasiliy83 Посмотреть профиль Найти все сообщения от Vasiliy83
 
Регистрация: 05.10.2017
Сообщений: 9

Рони, СПАСИБО!!! Заработало)))!

Но выполз косяк, название столбцов опустились под столбцы, теперь. Немного по переставлял местами, но название столбцов на верх не вернулись. Максимом что получилось сделать, это опустить данные на одну строку и вручную вписать название столбцов.

Как вернуть название столбцов в первую строку?

Сейчас вот такой скрипт:
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);
}
Ответить с цитированием
  #9 (permalink)  
Старый 07.10.2017, 20:57
Новичок на форуме
Отправить личное сообщение для Vasiliy83 Посмотреть профиль Найти все сообщения от Vasiliy83
 
Регистрация: 05.10.2017
Сообщений: 9

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 строку.

Последний раз редактировалось Vasiliy83, 07.10.2017 в 21:00.
Ответить с цитированием
  #10 (permalink)  
Старый 07.10.2017, 21:01
Новичок на форуме
Отправить личное сообщение для Vasiliy83 Посмотреть профиль Найти все сообщения от Vasiliy83
 
Регистрация: 05.10.2017
Сообщений: 9

Приложение
Изображения:
Тип файла: jpg таблица.jpg (114.5 Кб, 3 просмотров)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
MathJax с помощью Google Script vladb314 Общие вопросы Javascript 0 22.01.2016 17:54
Динамическое создание iframe в Firefox mrbean11 Firefox/Mozilla 8 02.11.2012 21:23
Установка приложений с помощью Java Script zion87 Events/DOM/Window 2 28.11.2011 23:10
Сделать ссылку с картинки с помощью Java Script seasick Работа 3 27.07.2011 15:19