Google apps script 有没有办法获取目前正在电子表格上工作的人的电子邮件地址?

Google apps script 有没有办法获取目前正在电子表格上工作的人的电子邮件地址?,google-apps-script,google-sheets,google-sheets-api,google-apps,Google Apps Script,Google Sheets,Google Sheets Api,Google Apps,我的工作表中有一个“编辑人”列。所以我想输入编辑相关行的人的电子邮件地址 function onEdit(e){ var activeCell = e.range; var r = activeCell.getRow(); var c = activeCell.getColumn(); var sheetName = ws.getSheetName(); ws.getRange(r, colName2colNumber(sheetName,"Edited by")).setV

我的工作表中有一个“编辑人”列。所以我想输入编辑相关行的人的电子邮件地址

function onEdit(e){
  var activeCell = e.range;
  var r = activeCell.getRow();
  var c = activeCell.getColumn();
  var sheetName = ws.getSheetName();
  ws.getRange(r, colName2colNumber(sheetName,"Edited by")).setValue(Session.getActiveUser().getEmail());
}
当我(电子表格的所有者)在工作时,上面的代码块工作正常。然而,它对我与编辑privilages共享该工作表的其他人不起作用。我认为OneEdit函数对共享电子表格有一些限制

所以首先我想知道为什么onEdit不能在共享电子表格上工作


如果onEdit有一些限制,是否有其他一些功能或其他一些方式,使我将编辑器的电子邮件放在“编辑人”列上?

尝试使用可安装的触发器,而不是简单的触发器

function myfunction(e){
  e.range.getSheet().getRange(e.range.rowStart,e.range.getSheet().getRange(1,1,1,e.range.getSheet().getLastColumn()).getValues()[0].indexOf("Edited by")).setValue(Session.getActiveUser().getEmail());//This assumes that the header row is the top row
}
如图所示:

getActiveUser()

获取有关当前用户的信息。如果安全策略没有 允许访问用户的身份,user.getEmail()返回空白 绳子

在这种情况下,简单触发器onEdit()不会运行脚本,因为用户无法为其授予显式权限。也无法解决问题


一个选项是创建触发器,这样其他人就可以在他们身边安装它并向它授予权限。

它说可安装触发器以创建触发器的用户的身份运行。是的。因此,每个用户都可以选择是否进行身份验证。所以你不能在他们不知道的情况下获取他们的数据。