我的工作表中有一个“编辑者”列。因此,我想输入编辑相关行的人员的电子邮件地址。
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受到一些限制,是否还有其他功能或一般的其他方式,这使我将编辑者的电子邮件放在“编辑者”列中?
答案 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,因此其他人将自己安装并授予权限。