Google表格-当用户仅编辑表格的一部分时,在编辑时添加注释

时间:2019-02-12 20:23:49

标签: google-sheets

这可能是一个简单的答案,我是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());
  }}

1 个答案:

答案 0 :(得分:0)

OP希望在其中已编辑单元格在B26:H35范围内(包括2到8列)的任何工作表的L24单元格中创建一个注释。

OP自己的代码可以在已编辑的单元格中创建注释,但仅针对“ B26”范围内的编辑进行配置。但是,大多数逻辑都已就位,只需要进行适度的更改即可。

此答案中要注意的要点是:

  • 在已编辑工作表的单元格“ L24”中输入注释;通过定义变量noterange,可以更轻松地完成此操作。
  • 已编辑范围的行号和列号已分配给变量;这使得在构建IF语句时更容易使用。
  • 已编辑的范围已分配给变量;这简化了在注释中显示单元格引用。
  • IF语句分为两部分:它测试i)编辑后的行是否在26到35之间以及ii)编辑后的列在2到8之间。
  • 通过使用getA1Notation简化了注释中的单元格引用。
  • 我保留了OP所使用的日期,但这可以缩短/简化
  • 我在范围参考和“修改日期”之间插入了一个换行符,以方便阅读
  • 我创建了一个可安装的onEdit触发器

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文档中。