我有一个包含15个工作表和20个用户登录并修改它的电子表格。
我有以下脚本,应该发送一封电子邮件,其中包含打开电子表格的用户电子邮件地址。
Session.getEffectiveUser()只收到来自脚本所有者的电子邮件,而不是收到我的用户电子邮件。
自7月23日起,Session.getEffectiveUser()应该从用户那里获得重新自动化。我执行以下注释以重新批准其他用户Script and Google Account
的脚本当有人打开spreadhseet时,此脚本会触发。
function LoginShift(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
MailApp.sendEmail("xxxxxx@gmail.com", "Login Shift" , "Login UserName: " + Session.getEffectiveUser());
}
我有其他脚本与Session.getEffectiveuser()但onEdit,并且工作正常。我不知道为什么这个脚本没有从getEffectiveUser获取电子邮件地址。
答案 0 :(得分:1)
文档中描述了一些功能:
...
可安装触发器
...
...
根据文档,您提到的行为符合预期。
<强>更新强>
如果您有简单触发器(onInstall
,onOpen
,onEdit
),则如下所示:
function onOpen() {
Logger.log('getActiveUser(): ' + Session.getActiveUser());
Logger.log('getEffectiveUser(): ' + Session.getEffectiveUser());
}
由脚本所有者执行时,结果如下:
getActiveUser(): owner_of_the_script
getEffectiveUser(): owner_of_the_script
当另一个用户(不是脚本的所有者)执行时,结果如下:
getActiveUser():
getEffectiveUser(): user_activates_the_trigger
重要提示:请阅读documentation 中简单触发器的限制。
如果您有可安装触发器,请按以下步骤添加该功能:
onOpen
由脚本所有者执行时,结果如下:
function myOnOpen() {
Logger.log('getActiveUser(): ' + Session.getActiveUser());
Logger.log('getEffectiveUser(): ' + Session.getEffectiveUser());
}
当另一个用户(不是脚本的所有者)执行时,结果如下:
getActiveUser(): owner_of_the_script
getEffectiveUser(): owner_of_the_script