这可能是一个简单的答案,我是Google表格中的脚本编辑器的新手。
我大约有8张纸供个人用户输入数据。我想要一个注释,显示8张纸中每张纸上的单元格范围的最后修改日期。 8张纸中的每张纸都在布局上相同。使用下面的代码,我能够在第2列第26行获得最新的日期注释,并且效果很好。但是,我不知道如何扩展它以包括第2-7列和第26-35行。我假设只在range.getRow()下输入2:7即可,但是没有用。
关于如何实现此目标的任何建议?更好的是,理想情况下,工作表上的单个单元格中只有一个注释(以L24为例),它显示了第2-8列和第26-35行之间编辑的任何单元格的最后修改日期?
我的目标实际上只是确定用户最后一次修改该指定范围内的任何单元格的时间。
任何建议将不胜感激。该脚本如下。
/**
* The event handler triggered when editing the spreadsheet.
* @param {Event} e The onEdit event.
*/
function onEdit(e) {
// Set a comment on the edited cell to indicate when it was changed.
var range = e.range;
if(range.getRow() == 26 && range.getColumn() == 2){
range.setNote('ROW: ' + range.getRow() + " COLUMN: "+ e.range.getColumn());
range.setNote('Last modified: ' + new Date());
}}
答案 0 :(得分:0)
OP希望在其中已编辑单元格在B26:H35范围内(包括2到8列)的任何工作表的L24单元格中创建一个注释。
OP自己的代码可以在已编辑的单元格中创建注释,但仅针对“ B26”范围内的编辑进行配置。但是,大多数逻辑都已就位,只需要进行适度的更改即可。
此答案中要注意的要点是:
noterange
,可以更轻松地完成此操作。 getA1Notation
简化了注释中的单元格引用。 function so54658181(e) {
// setup spreadsheet
var ss = SpreadsheetApp.getActiveSpreadsheet();
// get the active sheet
var eactiveSheet = e.source.getActiveSheet();
// set the location for the Note
var noterange = eactiveSheet.getRange("L24");
// get the edited cell and find the row and column numbers
var erange = e.range;
var editedRow = erange.getRow();
var editedColumn = erange.getColumn()
// if the row is between 26 and 35, and the column is between 2 and 8, then set the note
if ((editedRow >= 26 && editedRow <= 35) && (editedColumn >= 2 && editedColumn <= 8)) {
noterange.setNote("Cell " + erange.getA1Notation() + String.fromCharCode(10) + "Last modified: " + new Date());
}
}
格式化日期
在IF
语句上方的任意位置添加这两行
// set date format
var curDate = Utilities.formatDate(new Date(), "GMT+1", "E, MMM dd yyyy");
编辑IF语句的以下行;请注意,它现在引用了curDate
noterange.setNote("Latest edit: Cell " + erange.getA1Notation() + String.fromCharCode(10) + "On: " + curDate);
指向最新Date and Time Patterns的链接包含在Google文档中。