追加一个二维数组到另一个二维数组,插入为一个单一的行而不是

追加一个二维数组到另一个二维数组,插入为一个单一的行而不是

问题描述:

我有问题要追加一个二维数组在另一个二维数组的末尾。追加一个二维数组到另一个二维数组,插入为一个单一的行而不是

第一个名为array_from_sheet的数组我通过从5列和100行的范围内读取Google工作表中的单元格范围来构建。调试窗口中的第一个阵列如下所示: [[“2017-12-02T16:49:48.9Z”,1040036,399.07,0.01,“sell”],[“2017-12-02T16:49:48.9Z” ,1040037,399.08,1.12907707,“卖”],[...

第二个称为交易的数组来自JSON字符串,我在解析窗口中看起来像这样(它有100行和5列) : [[“2017-12-02T18:06:55.909Z”,1040574,“399.00000000”,“1.12619681”,“卖”],[“2017-12-02T18:06:55.829Z”,1040573,“399.00000000 “,”1.31054161“,”卖“],[...

这是我的拼接命令之前:trades.splice(1,0,array_from_sheet);

经过我的拼接命令,交易数组在调试窗口中看起来像这样: [[“2017-12-02T18:06:55.909Z”,1040574,“399.00000000”,“1.12619681”,“sell”], [[“2017-12-02T16:49:48.9Z”,1040036,399.07,0.01,“卖”],[...

你可以看到第二行现在开始用双括号, 。

调试窗口说,它现在有101行,而它应该有200.新数组的第二行现在有100个元素,看起来像array_from_sheet插入在这里,而不是在同一行。

(我试过.push命令,但得到了同样的问题)

(array_from_sheet.length返回100,所以它似乎是100行)

这里是我的代码:

var ss = SpreadsheetApp.getActiveSpreadsheet(); 

    var first = ss.getSheetByName("trades"); 
    first.activate(); 

    //var sheet = SpreadsheetApp.openById('DEV_GDAX Order book and trades') 
    //var APIPullSheet = sheet.getSheetByName("APIPull"); 
    //first.getRange('A2:D19999').clearContent(); 

    // call the trades from GDAX into var parcedData- should add error handling here if server does not respond or return error code 
    var url = "https://api.gdax.com/products/ETH-EUR/trades" 
    var responseAPI = UrlFetchApp.fetch(url) 
    var parcedData = JSON.parse(responseAPI.getContentText()); 

    // creates new empty array trades, adds headers on first row, 
    var trades = new Array(); 
    //trades.push(['time', 'trade_id', 'price', 'size','side']) hll: i removed this line as i don't need headers, i have them on row1 in sheet 

    // create temp array for a row, read from parsedData, push to temp, repeat, then push to temp (more or less) 
    var keys = ['time', 'trade_id', 'price', 'size','side']; 
    for (var i in parcedData) { 
    var temp = []; 
    for (var j in keys) { 
     temp.push(parcedData[i][keys[j]]); 
    } 
    trades.push(temp); 
    //Logger.log(trades) 
    } 


    //here i should remove duplicates first before coyping to sheet trades 
    //load current trades on sheet in temp array 
    var lastRow = first.getLastRow(); 
    var array_from_sheet = first.getRange('A2:E' + lastRow).getValues(); 
    Logger.log("array-from-sheet: "); 
    Logger.log(array_from_sheet); 

    //append new trades array to array_from_sheet 
    trades.splice(1, 0, array_from_sheet); 

解决:

我用这个命令:

trades_new = array_f rom_sheet.concat(交易);代替

trades.splice(1,0,array_from_sheet);

现在trades_new包含2个数组首尾相连。