自从过去几天以来,我一直在努力解决一个非常基本的问题,这就是我想要实现的目标。 我有一个与团队共享的谷歌表。每个团队成员将在工作表中添加一行或多行。工作表中有一列应记录进行更改的人员的电子邮件ID。这就是我试图实现这个目标的方法 -
我创建了一个自定义菜单,并要求用户在继续之前单击该菜单,并且在自定义菜单的操作中我首先强制用户通过使用进行身份验证 SpreadsheetApp.openById(SpreadsheetApp.getActiveSpreadsheet()。getId());尝试然后尝试了以下事项 -
我创建了一个可执行文件" onEdit"通过每个用户的代码触发。这工作了几次,但是当我与另一个用户登录时 这种行为非常难以预测,我无法得出结论 发生在这里。 (有时会收到用户的电子邮件,有时会收到电子邮件 所有者)
我在尝试进行身份验证并将其保存在userProperties中时获取用户电子邮件。然后我尝试在" onEdit"中取出它。但又来了 切换用户时行为不一致。
我也尝试了另一个线程中提到的方法。但这又是行不通的。这是该代码的代码:
function getUserEmail() {
var protection=SpreadsheetApp.getActive().getRange("B2").protect();
var userEmail='';
Session.getEffectiveUser();
protection.removeEditors(protection.getEditors());
var editors=protection.getEditors();
var user1=editors.pop().toString()
if(editors.length==1){
var owner=SpreadsheetApp.getActive().getOwner().getEmail();
if(owner==user1){
userEmail=editors.pop().toString()
}else{
userEmail = user1
}
}else{
userEmail = user1
}
protection.remove();
return userEmail;
}
<小时/> 我真的没有在这里的想法和失去我的希望,任何建议都非常感谢。
请注意 - 我可以强制用户在会话期间对菜单项进行身份验证或按一次,但在此之后,它应该在编辑任何内容时自动获取电子邮件ID。
感谢。