首页 > 解决方案 > 如何获取最后修改每个单元格的用户的电子邮件

问题描述

尝试在每个单元格添加“滚动”更改注释,包括用户电子邮件、时间、旧值和新值,因此我编写了以下脚本:

/**
 * 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;
  var row = range.getRow();
  var column = range.getColumn();

  // Get the email address of the person running the script.
   var email = Session.getActiveUser().getEmail();

  Logger.log("data changed");
  range.setNote(range.getNotes().concat('Last modified at: ' + new Date() + ' by: ' + email + ' from: ' + String(e.oldValue) + ' to: ' + range.getValue() + "\n"));
}

我有以下注释,这不是我所期望的:

  1. 用户电子邮件根本不显示,
  2. 如果我复制/粘贴了多个单元格,则旧值显示为未定义,所有单元格的新值仅显示第一个单元格的新值。

我的工作表可以在这里打开

标签: google-apps-scriptgoogle-sheetstriggers

解决方案


您添加的信息已经被自动记录并通过右键单击单元格并选择相应的菜单项可用,无论如何,与可安装的编辑触发器相比,简单的编辑触发器非常有限,但Session.getActiveUser().getEmail()只有在脚本是通过使用 G Suite 帐户或由电子表格/脚本的所有者或用户创建的可安装的编辑触发器运行的,该触发器调用该脚本。不知何故,这已经记录在官方文档中。

参考

有关的


推荐阅读