将最近更新的单元格从表格1复制到表格2

时间:2014-08-14 15:43:55

标签: google-apps-script google-sheets

我有一张谷歌表,我需要每天更新一些统计数据:每天我在最后一个下面的单元格中键入一个新数字。我希望能够在同一工作簿的第二张纸上显示,只显示最近的6个条目。

所以我希望Sheet 2始终只包含Sheet 1中的最后6个单元格,并且每当我将每一天的数字放入Sheet 1时它都会更新。

目前我认为我已经有一半了,在编辑中我将特定单元格从表格1复制到表格2,但是当我每天添加一个新图形时,这并不好。我在我的脚本中指定了静态单元格,这是错误的:我需要脚本只能获取最近的6个单元格。

似乎无法在论坛上找到任何答案,所以任何帮助都会感激不尽。到目前为止我的代码:

function onEdit() { 
  var ss = SpreadsheetApp.getActiveSpreadsheet(); 
  var target = SpreadsheetApp.openById("15ih18G5WCnmPTwo1SCSj0tvw0ZVyi-hXUP4qrFyQOi4"); 
  var source_sheet = ss.getSheetByName("Sheet1");
  var target_sheet = target.getSheetByName("Most Recent");
  var source_range = source_sheet.getRange("C10:C15");
  var target_range = target_sheet.getRange("B5:B10");
  source_range.copyTo(target_range);
  var last_row = target_sheet.getLastRow();
  target_sheet.insertRowAfter(last_row);
  var target_range = target_sheet.getRange("A"+(last_row+1)+":G"+(last_row+1)); 
}

1 个答案:

答案 0 :(得分:0)

下面的代码片段在Sheet1中的每个编辑事件中将Sheet1的底部六个单元格复制到Sheet2中

 function onEdit() {

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var destination = ss.getSheetByName("Sheet2");
  var origin = SpreadsheetApp.getActiveSheet();

  if (origin.getName() == "Sheet1") { 
    var r = origin.getActiveCell();
    var row = r.getRow();
    var numberOfCol = 3;
    if( row > 1) { 
      var numberOfRows = row >= 7 ? 6 : row - 1;
      var startRow = row >= 7 ? row - numberOfRows + 1 : 2;
      range = origin.getRange(startRow, 3, numberOfRows, numberOfCol);
      range.copyValuesToRange(destination, 1, numberOfCol, 1, numberOfRows);
    };
  };
}