google-apps-script - 如何获取最后修改每个单元格的用户的电子邮件
问题描述
尝试在每个单元格添加“滚动”更改注释,包括用户电子邮件、时间、旧值和新值,因此我编写了以下脚本:
/**
* 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"));
}
我有以下注释,这不是我所期望的:
- 用户电子邮件根本不显示,
- 如果我复制/粘贴了多个单元格,则旧值显示为未定义,所有单元格的新值仅显示第一个单元格的新值。
我的工作表可以在这里打开
解决方案
您添加的信息已经被自动记录并通过右键单击单元格并选择相应的菜单项可用,无论如何,与可安装的编辑触发器相比,简单的编辑触发器非常有限,但Session.getActiveUser().getEmail()
只有在脚本是通过使用 G Suite 帐户或由电子表格/脚本的所有者或用户创建的可安装的编辑触发器运行的,该触发器调用该脚本。不知何故,这已经记录在官方文档中。
参考
有关的
推荐阅读
- mongodb - 在 VS Code 中安装 mongo/mongodb
- html - 使用带有 1 个按钮的 nodejs 更新文件
- c++ - Where to put using directives in C++ header files
- javascript - 如何使用 Webpack 从 Vue 路由器生成 sitemap.xml?
- jasper-reports - 如何在 Jasper 中缩放子报表?
- angular - 此条件将始终返回 'false',因为类型 'boolean' 和 '1' 没有重叠
- c# - 只取包含字符串并跳过剩余字符串 C#
- html - how to implement floating label
- django - 如何使用两个模型创建单个字段多个图像上传?
- javascript - Highchart 范围选择器不显示