【问题标题】:Is there a way to get the email adresses of people currently working on spreadsheet?有没有办法获取当前使用电子表格的人员的电子邮件地址?
【发布时间】:2019-12-02 23:44:45
【问题描述】:

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

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有一些限制,是不是还有一些其他的功能,或者一般的其他方式,让我把editors email放在“Edited by”一栏?

【问题讨论】:

    标签: google-apps-script google-sheets google-sheets-api google-apps


    【解决方案1】:

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

    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
    }
    

    【讨论】:

    • developers.google.com/apps-script/guides/services/… 它表示可安装触发器以创建触发器的用户身份运行。
    • 是的。因此,每个用户都可以选择是否要进行身份验证。这样您就无法在他们不知情的情况下获取他们的数据。
    【解决方案2】:

    正如您在documentation 中看到的:

    getActiveUser()

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

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

    一个选项是创建一个Add-on,这样其他人会在他们身边安装它并授予它权限。

    【讨论】:

      猜你喜欢
      • 2018-03-29
      • 1970-01-01
      • 2015-10-21
      • 1970-01-01
      • 1970-01-01
      • 2021-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多