2017-12-02 4 views
0

Ich habe Probleme, ein 2D-Array am Ende eines anderen 2D-Arrays anzuhängen.Das Anhängen eines 2D-Arrays an ein anderes 2D-Array wird stattdessen als einzelne Zeile eingefügt.

Das erste Array namens array_from_sheet Ich konstruiere aus dem Lesen eines Bereichs von Zellen in Google-Blatt aus einem Bereich von 5 Spalten und 100 Zeilen. Das erste Array sieht im Debug-Fenster wie folgt aus: [["" 2017-12-02T16: 49: 48.9Z ", 1040036, 399.07, 0.01," verkaufen "], [" 2017-12-02T16: 49: 48.9Z " , 1040037, 399.08, 1.12907707, "verkaufen"], [....

Das zweite Array namens Trades kommt aus einer JSON-Zeichenfolge, die ich analysiert und im Debug-Fenster so aussieht (es hat 100 Zeilen und 5 Spalten) : [["2017-12-02T18: 06: 55.909Z", 1040574, "399.00000000", "1.12619681", "verkaufen"], ["2017-12-02T18: 06: 55.829Z", 1040573, "399.00000000 "," 1.31054161 "," verkaufen "], [...

Dies ist vor meinem Spleißbefehl: trades.splice (1, 0, array_from_sheet);

Nach meinem Spleiß Befehl, die Gewerke Array wie folgt aussehen im Debug-Fenstern: [[ "2017-12-02T18: 06: 55.909Z", 1.040.574, "399,00000000", "1,12619681", "verkaufen"], [["2017-12-02T16: 49: 48.9Z", 1040036, 399.07, 0.01, "verkaufen"], [...

Sie können sehen, die zweite Reihe beginnt jetzt mit einer doppelten Klammer, Problem, denke ich .

Das Debug-Fenster sagt, es hat jetzt 101 Zeilen, während es 200 hätte. Die zweite Zeile des neuen Arrays hat jetzt 100 Elemente, sieht aus wie array_from_sheet wurde hier anstatt in der gleichen Zeile eingefügt.

(habe ich versucht, den .push Befehl bekam aber gleiches Problem)

(array_from_sheet.length 100 zurück, so scheint es, 100 Zeilen zu sein)

Hier ist mein Code:

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); 

Antwort

0

gelöst:

ich diesen Befehl verwendet:

trades_new = array_f rom_sheet.concat (Handel);

Statt:

trades.splice (1, 0, array_from_sheet);

Jetzt Trades_new enthält die 2 Arrays von Ende zu Ende.

Verwandte Themen