Google apps script 将最近更新的单元格从工作表1复制到工作表2
我有一个谷歌表,我需要每天更新一些统计数据:每天我在最后一个下面的单元格中键入一个新的数字。我希望能够在同一工作簿的第二页上显示最近的6个条目 因此,我希望表2始终只包含表1中的最后6个单元格,并在我将每天的数字放入表1时进行更新 现在我想我已经做了一半了,onEdit我把特定的单元格从第1页复制到第2页,但是当我每天添加一个新的数字时,这是不好的。我在脚本中指定静态单元格,这是错误的:我需要脚本只拾取最近的6个单元格 在论坛上似乎找不到任何答案,因此感谢您的帮助。到目前为止,我的代码是:Google apps script 将最近更新的单元格从工作表1复制到工作表2,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我有一个谷歌表,我需要每天更新一些统计数据:每天我在最后一个下面的单元格中键入一个新的数字。我希望能够在同一工作簿的第二页上显示最近的6个条目 因此,我希望表2始终只包含表1中的最后6个单元格,并在我将每天的数字放入表1时进行更新 现在我想我已经做了一半了,onEdit我把特定的单元格从第1页复制到第2页,但是当我每天添加一个新的数字时,这是不好的。我在脚本中指定静态单元格,这是错误的:我需要脚本只拾取最近的6个单元格 在论坛上似乎找不到任何答案,因此感谢您的帮助。到目前为止,我的代码是: fu
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));
}
下面的代码段将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);
};
};
}
请查看您的代码:r.getRow上的条件至少应大于6,并且您可以反转copyValues中的列和行(1116而不是通常的1161)。r.getRow()引用了两个标题行,而不是实际内容。假设OP不会重新启动,所以行号小于6+标题行数时的情况不包括在内。更新了我的答案,也包括了这个角落的案例。行和列不是反转的-复制工作如预期的那样。谢谢你,很抱歉范围上的混乱,这是我从未使用过的方法…关于所有其他方法使用行-列-列-列-列顺序,因此我的错误。不管怎样,你的代码现在更清晰了,谢谢。