2012-08-01 10 views
0

情況:彙總來自多個接收器Trixes的信息並嘗試將饋送器的結果填充到主Trix的一張表中。將數據從多個其他工作表中寫入主Google電子表格;覆蓋每個接料表的結果,而不是獲得所有結果

問題:我想寫下每個饋線trix的結果(用下面的get_data_from_feeders()函數收集)到Master Trix中的同一張紙上。但是,每個饋線陣列會覆蓋之前的饋線結果,因此只有最後一個饋線trix結果顯示在Master Trix中,而不是以下全部三種(write_data(數據)功能)。

問題:

1)如何讓每個饋線的結果集追加以前饋線TRIX結果,而不是覆蓋它們的? [這將每月運行,所以每個月都可以覆蓋上個月的表單內容]

2)如何對所有結果進行排序(我認爲我使用.sort()但我不確定在哪裏打電話)?

當前代碼:

function get_data_from_feeders() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var feeders = ss.getRangeByName('spokes').getValues(); 
    for (var i = 0; i <= feeders.length; i++) { 
    var feeder_id = feeders[i][0]; 
    var feeder_open = SpreadsheetApp.openById(feeder_id); 
    var dataPull = feeder_open.getRangeByName('dataPull').getValues(); 

    write_data(dataPull); 
    } 
} 

function write_data(data) { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var ws = ss.getSheetByName("Forecast_Aggregation"); 
    var dataDump = ss.getRangeByName("data_dump"); 

// I think the next line is where my code is incorrect - each feeder goes back to same cell instead of to the next blank row (hence, overwriting instead of appending) 

    ws.getRange(dataDump.getRowIndex(), 2, data.length, 20).setValues(data); 
} 

感謝您的幫助!

回答

0

也許嘗試:

function write_data(data) { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var ws = ss.getSheetByName("Forecast_Aggregation"); 
    var dataDump = ss.getRangeByName("data_dump").getRow(); 
    var nextRow = Math.max(dataDump, ws.getLastRow())+1; 
    ws.getRange(nextRow, 2, data.length, 20).setValues(data); 
} 
+0

謝謝,@AdamL!我昨天一直在努力,並提出了一個類似的解決方案,但我喜歡你如何保持命名範圍完好無損。我發現爲dataDump動態範圍而不是命名範圍更容易,因此我更改了代碼以刪除dataDump並將其替換爲:var firstEmptyRow = ws.getLastRow()+ 1和ws.getRange(firstEmptyRow, 2,data.length,data.length [0])。setValues(data);',哪些工作。 – khayes 2012-08-02 18:56:25

相關問題