我试图为使用单元格注释的工作表构建一个简单的日志。
不知何故,我不能包含触发onEdit-event
的用户的电子邮件。
function onEdit(e){
var email = Session.getActiveUser().getEmail();
var date = String(Utilities.formatDate(new Date(), 'Europe/Berlin', 'HH:mm dd/MM/yy'));
var range = e.range;
range.setNote(email + " @ " + date);
}
注释显示在单元格上,但电子邮件为空。这可能与缺少权限有关吗?我假设如果我的代码出现问题,那么该单据中所编辑的单元格上的注释就不会出现...
答案 0 :(得分:2)
以下是Google文档中有关Session类
的内容Session类提供对会话信息的访问,例如 用户的电子邮件地址(在某些情况下)和语言设置。
关于'getActiveUser()'方法,它说明了
如果安全策略不允许访问 用户的身份,User.getEmail()返回一个空字符串。该 电子邮件地址可用的情况有所不同:for 例如,用户的电子邮件地址在任何上下文中都不可用 允许脚本在没有该用户授权的情况下运行,例如 简单的onOpen(e)或onEdit(e)触发器,Google中的自定义功能 表格,或部署为“以我身份执行”的Web应用程序(即授权 由开发人员而不是用户)。但是,这些限制 如果开发者和用户属于,通常不适用 相同的G Suite域名。
因为你使用简单的触发器 - onEdit() - 除非用户明确授权,否则代码将不会执行。对于可安装的触发器,这意味着从脚本编辑器手动执行该函数。
您可以将项目发布为工作表加载项。在这种情况下,将要求用户授予在附加清单中声明的权限。
更多信息https://developers.google.com/apps-script/reference/base/session