如何使用Google Apps Script创建电子表格编辑日志



我希望创建一个在特定工作表中发生的操作日志。

这个脚本工作得很好,但是有一个主要问题:

我没有收到"TheUser"的值除了我自己的邮件。有可能收到别人的邮件吗?他们以编辑者的身份登录,使用gmail。

function onEdit(e) {
var sName = e.source.getActiveSheet().getSheetName();
if(sName !== "Recent_Changes") {
var theUser = Session.getActiveUser().getEmail();
var value;
var mA1 = e.range.getA1Notation().split(":")[0];
var time = new Date();
if(typeof(e.value) == 'string') {
var aCell = e.source.getRange(mA1);
value = aCell.getValue();
var form = "'" + aCell.getFormula();
} else {
value = e.value;
}
var data = [sName, mA1, time, value, form, theUser];
e.source.getSheetByName("Recent_Changes").appendRow(data);
}
}

经过测试,如果用户在相同的工作空间组织下,则getActiveUser()函数可以工作。然而,当用户不在同一组织中并且只是使用他们的个人gmail时,即使电子表格直接共享给他们,情况也不是这样。这将返回一个空字符串。详细文档:getActiveUser()

如果开发人员自己运行脚本或与用户属于相同的Google Workspace域,则这些限制通常不适用。

您可能会在相同的场景中看到这种情况:如何获得安装了onEdit触发器的活跃用户电子邮件?

此外,在简单触发器文档中的限制部分中指出

它们可能无法确定电流的身份用户,取决于一组复杂的安全限制。

相关内容

最新更新