有没有办法获取当前在电子表格上工作的人的电子邮件地址?

时间:2019-12-02 23:44:45

标签: 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")).setValue(Session.getActiveUser().getEmail());
}

当我(电子表格的所有者)在工作表上工作时,以上代码块工作正常。但是,它不适用于我通过编辑权限与工作表共享的其他人。我认为onEdit函数对共享电子表格有一些限制。

首先,我想知道为什么onEdit在共享电子表格上不起作用吗?

如果onEdit受到一些限制,是否还有其他功能或一般的其他方式,这使我将编辑者的电子邮件放在“编辑者”列中?

2 个答案:

答案 0 :(得分:0)

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

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
}

答案 1 :(得分:0)

如您在documentation中所见:

  

getActiveUser()

     

获取有关当前用户的信息。如果没有安全策略   允许访问用户的身份,User.getEmail()返回一个空白   字符串。

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

一个选项将创建一个Add-on,因此其他人将自己安装并授予权限。