运行 Apps 脚本代码 - 无法获取已授予访问权限的其他编辑者的电子邮件

问题描述 投票:0回答:1
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 列上,目前它仅适用于我,但不显示我授予权限的第二个编辑者的电子邮件

google-sheets google-apps-script
1个回答
0
投票

此问题之前已由用户 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

© www.soinside.com 2019 - 2024. All rights reserved.