0

状況:複数のフィーダー Trix からの情報を集約し、フィーダーからの結果をマスター Trix の 1 シートに入力しようとしています。

問題: 各フィーダー trix (以下の get_data_from_feeders() 関数で収集) の結果をマスター トリックスの同じシートに書き込みたい。ただし、各フィーダー アレイは以前のフィーダー結果を上書きするため、マスター トリックスには 3 つすべてではなく、最後のフィーダー trix の結果のみが表示されます (以下の write_data(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);
}

ご協力いただきありがとうございます!

4

2 に答える 2

0

あなたも私のブログを見直したいと思うかもしれません。 http://blog.ditoweb.com/2012/01/consolidate-spreadsheet-sheets-with.html

于 2012-08-03T06:41:25.683 に答える
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 に答える