function onEdit(e) {
const range = e.range;
const sheet = range.getSheet();
const editedColumn = range.getColumn();
const editedRow = range.getRow();
// Check if the edit is in column A
if (editedColumn === 1) {
// If content is deleted in column A, clear the corresponding cell in column F
if (range.isBlank()) {
sheet.getRange(editedRow, 6).clearContent(); // Clear content in column F
} else if (editedRow > 1) { // Avoid clearing header row
// Get the email of the editor
const editorEmail = e.user.email;
// Update the corresponding cell in column F with the editor's email
sheet.getRange(editedRow, 6).setValue(editorEmail);
}
}
}
一旦在 Google 表格的 A 列中进行更改 - 编辑者的电子邮件应自动显示在 F 列上,目前它仅适用于我,但不显示我授予权限的第二个编辑者的电子邮件
此问题之前已由用户 Anton Dementiev here 回答过,也适用于 e.user.email。
这是 Google 文档中关于 Session 类的说明
Session 类提供对会话信息的访问,例如 用户的电子邮件地址(在某些情况下)和语言设置。
关于“getActiveUser()”方法,它指出
如果安全策略不允许访问用户的身份, User.getEmail() 返回一个空字符串。在什么情况下 可用的电子邮件地址有所不同:例如,用户的电子邮件地址 在任何允许脚本运行的上下文中都不可用 该用户的授权,例如简单的 onOpen(e) 或 onEdit(e) 触发器、Google 表格中的自定义函数或部署到的网络应用程序 “以我的身份执行”(即由开发者授权,而不是由开发者授权) 用户)。然而,如果以下情况,这些限制通常不适用: 开发者和用户属于同一个 G Suite 域。
因为您使用简单的触发器 - onEdit() - 代码不会 除非用户明确授权,否则执行。对于可安装的 触发器,这意味着从 脚本编辑器。
您可以将项目发布为工作表插件。在这种情况下,用户 将被要求授予附加清单中声明的权限。
更多信息 https://developers.google.com/apps-script/reference/base/session