0

情况:聚合来自多个馈线 Trix 的信息,并尝试将馈线的结果填充到主 Trix 的一张表中。

问题: 我想将每个 feeder trix 的结果(与下面的 get_data_from_feeders() 函数一起收集)写入 Master Trix 中的同一张表。但是,每个馈线阵列都会覆盖之前的馈线结果,因此只有最后一个馈线矩阵结果显示在 Master Trix 中,而不是全部三个(下面的 write_data(data) 函数)。

问题:

1)如何使每个馈线结果集附加以前的馈线矩阵结果而不是覆盖它们?[这将每月运行一次,因此每个月都可以覆盖上个月工作表上的内容]

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

谢谢你的帮助!

4

2 回答 2

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);
}
于 2012-08-01T22:41:23.017 回答
0

您可能还想查看我的博客。 http://blog.ditoweb.com/2012/01/consolidate-spreadsheet-sheets-with.html

于 2012-08-03T06:41:25.683 回答