Привет. Имеется скрипт который через API торгового терминала выгружает данные о сделках. Скрипт выгружает все сделки в виде текста, в одну ячейку таблицы. По каждой сделке передается множество параметров и получается так, что в связи с ограничением на 50000 символов в ячейке, через API я могу выгрузить не более 10 последних сделок. Каждая сделка при этом разделена фигурными скобками, а параметры внутри сделки разделены запятыми.
Подскажите пожалуйста, каким образом можно выгружать данные которые приходят из API не в одну ячейку, а в разные, для каждой сделки? Используя фигурные скобки как разделитель сделок\ячеек. Тем самым обходя это ограничение на кол-во символов в одной ячейке и выгружая полную историю сделок разом.
Сейчас используется код такого вида: [vba]
Код
function commas() { var key = 'api'; var secret = 'secret';
var baseUrl = "https://exchange.com"; var endPoint = "/public/api/ver1/smart_trades"; var pointParams = "?account_id=xxx&scope=finished"; var queryString = endPoint + pointParams; var signature = Utilities.computeHmacSha256Signature(queryString, secret); signature = signature.map(function(e) {return ("0" + (e < 0 ? e + 256 : e).toString(16)).slice(-2)}).join("");
var data = UrlFetchApp.fetch(baseUrl + queryString , hparams).getContentText(); Logger.log(data) var ss = SpreadsheetApp.getActive(); var sheet = ss.getSheetByName("rates"); var raw = sheet.getRange(13,1).setValue(data) }
[/vba]
Привет. Имеется скрипт который через API торгового терминала выгружает данные о сделках. Скрипт выгружает все сделки в виде текста, в одну ячейку таблицы. По каждой сделке передается множество параметров и получается так, что в связи с ограничением на 50000 символов в ячейке, через API я могу выгрузить не более 10 последних сделок. Каждая сделка при этом разделена фигурными скобками, а параметры внутри сделки разделены запятыми.
Подскажите пожалуйста, каким образом можно выгружать данные которые приходят из API не в одну ячейку, а в разные, для каждой сделки? Используя фигурные скобки как разделитель сделок\ячеек. Тем самым обходя это ограничение на кол-во символов в одной ячейке и выгружая полную историю сделок разом.
Сейчас используется код такого вида: [vba]
Код
function commas() { var key = 'api'; var secret = 'secret';
var baseUrl = "https://exchange.com"; var endPoint = "/public/api/ver1/smart_trades"; var pointParams = "?account_id=xxx&scope=finished"; var queryString = endPoint + pointParams; var signature = Utilities.computeHmacSha256Signature(queryString, secret); signature = signature.map(function(e) {return ("0" + (e < 0 ? e + 256 : e).toString(16)).slice(-2)}).join("");
var data = UrlFetchApp.fetch(baseUrl + queryString , hparams).getContentText(); Logger.log(data) var ss = SpreadsheetApp.getActive(); var sheet = ss.getSheetByName("rates"); var raw = sheet.getRange(13,1).setValue(data) }
var data = chunk(UrlFetchApp.fetch(baseUrl + queryString , hparams).getContentText(),5000); Logger.log(data) var ss = SpreadsheetApp.getActive(); var sheet = ss.getSheetByName("rates"); var raw = sheet.getRange(13,1).offset(0, 0, data.length).setValue(data) } function chunk(a,b){ return Array.apply(null, new Array(Math.ceil(a.length/b))). map(function (c, d) {return [a.substr(d*b,b)];}); }
[/vba]или делим строку по скобкам [vba]
Код
var data = BtwBraces(UrlFetchApp.fetch(baseUrl + queryString , hparams).getContentText());
[/vba] [vba]
Код
function BtwBraces(a){ return a.split(/[{}]/g). filter(function(a){return a;}). map(function (a){return [a];}) }
[/vba]
тупо делим на куски по 5к символов [vba]
Код
function commas() { var key = 'api'; var secret = 'secret';
var baseUrl = "https://exchange.com"; var endPoint = "/public/api/ver1/smart_trades"; var pointParams = "?account_id=xxx&scope=finished"; var queryString = endPoint + pointParams; var signature = Utilities.computeHmacSha256Signature(queryString, secret); signature = signature.map(function(e) {return ("0" + (e < 0 ? e + 256 : e).toString(16)).slice(-2)}).join("");
var data = chunk(UrlFetchApp.fetch(baseUrl + queryString , hparams).getContentText(),5000); Logger.log(data) var ss = SpreadsheetApp.getActive(); var sheet = ss.getSheetByName("rates"); var raw = sheet.getRange(13,1).offset(0, 0, data.length).setValue(data) } function chunk(a,b){ return Array.apply(null, new Array(Math.ceil(a.length/b))). map(function (c, d) {return [a.substr(d*b,b)];}); }
[/vba]или делим строку по скобкам [vba]
Код
var data = BtwBraces(UrlFetchApp.fetch(baseUrl + queryString , hparams).getContentText());
[/vba] [vba]
Код
function BtwBraces(a){ return a.split(/[{}]/g). filter(function(a){return a;}). map(function (a){return [a];}) }
В первом варианте выдает 200 одинаковых строк с первыми 5000 символов сделок из API. т.е. в каждую новую строку вставляет первую и последующие сделки в одинаковом порядке. Во втором варианте появляется 1500 одинаковых строк с единственным символом [ внутри.
Спасибо за ответ.
В первом варианте выдает 200 одинаковых строк с первыми 5000 символов сделок из API. т.е. в каждую новую строку вставляет первую и последующие сделки в одинаковом порядке. Во втором варианте появляется 1500 одинаковых строк с единственным символом [ внутри.Greedy