Google apps script 如何在有人使用Google脚本打开电子表格时发送警报 情况:

Google apps script 如何在有人使用Google脚本打开电子表格时发送警报 情况:,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我有一个电子表格,有15个工作表,20个用户登录并修改它 我有以下脚本,应该发送一封电子邮件,其中包含打开电子表格的用户电子邮件地址 所需的脚本函数: 当用户打开电子表格时发送电子邮件 问题: Session.getEffectiveUser()仅从脚本所有者处获取电子邮件,而未获取我的用户电子邮件 自2003年7月以来的Session.getEffectiveUser()应该从该用户处重新自动化。我执行以下说明,以便为其他用户重新批准脚本 测试用例: 当有人打开spreadhseet时,此脚本

我有一个电子表格,有15个工作表,20个用户登录并修改它

我有以下脚本,应该发送一封电子邮件,其中包含打开电子表格的用户电子邮件地址

所需的脚本函数:
  • 当用户打开电子表格时发送电子邮件
  • 问题: Session.getEffectiveUser()仅从脚本所有者处获取电子邮件,而未获取我的用户电子邮件

    自2003年7月以来的Session.getEffectiveUser()应该从该用户处重新自动化。我执行以下说明,以便为其他用户重新批准脚本

    测试用例: 当有人打开spreadhseet时,此脚本有一个触发器

        function LoginShift(){
          var ss = SpreadsheetApp.getActiveSpreadsheet();
             MailApp.sendEmail("xxxxxx@gmail.com", "Login Shift" , "Login UserName: " + Session.getEffectiveUser());
          }
    
  • 当我与脚本的所有者一起打开电子表格时,他们向我发送了一封电子邮件,其中包含打开电子表格的电子邮件地址
  • 当我与不是脚本所有者的其他用户打开电子表格时,脚本将运行并发送电子邮件,但使用所有者邮箱,而不是打开电子表格的用户的邮箱

  • 我还有另外一个Session.getEffectiveuser()脚本,但是onEdit运行良好。我不知道为什么此脚本无法从getEffectiveUser获取电子邮件地址。

    文档中描述了一些功能:

    可安装触发器

    • 打开电子表格或表单编辑器时。(请注意,当用户打开表单进行响应时,此触发器不会激活,而是在编辑器打开表单进行修改时激活。)与简单触发器onOpen不同,可安装触发器可以充当安装触发器的用户

    根据文档,您提到的行为与预期一致

    更新

    如果您有一个简单触发器(
    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
    
    getActiveUser(): owner_of_the_script
    getEffectiveUser(): owner_of_the_script
    
    getActiveUser(): 
    getEffectiveUser(): owner_of_the_script
    
    当脚本的所有者执行时,结果如下所示:

    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
    
    getActiveUser(): owner_of_the_script
    getEffectiveUser(): owner_of_the_script
    
    getActiveUser(): 
    getEffectiveUser(): owner_of_the_script
    
    当由另一个用户(不是脚本的所有者)执行时,
    ,结果如下:

    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
    
    getActiveUser(): owner_of_the_script
    getEffectiveUser(): owner_of_the_script
    
    getActiveUser(): 
    getEffectiveUser(): owner_of_the_script
    
    重要提示:阅读中简单触发器的限制

    如果您有如下可安装触发器,并将该功能添加到电子表格的事件
    onOpen

    function myOnOpen() {
      Logger.log('getActiveUser(): ' + Session.getActiveUser());
      Logger.log('getEffectiveUser(): ' + Session.getEffectiveUser());
    }
    
    当脚本的所有者执行时,结果如下所示:

    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
    
    getActiveUser(): owner_of_the_script
    getEffectiveUser(): owner_of_the_script
    
    getActiveUser(): 
    getEffectiveUser(): owner_of_the_script
    
    当由另一个用户(不是脚本的所有者)执行时,,结果如下:

    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
    
    getActiveUser(): owner_of_the_script
    getEffectiveUser(): owner_of_the_script
    
    getActiveUser(): 
    getEffectiveUser(): owner_of_the_script
    

    文档中描述了一些功能:

    可安装触发器

    • 打开电子表格或表单编辑器时。(请注意,当用户打开表单进行响应时,此触发器不会激活,而是在编辑器打开表单进行修改时激活。)与简单触发器onOpen不同,可安装触发器可以充当安装触发器的用户

    根据文档,您提到的行为与预期一致

    更新

    如果您有一个简单触发器(
    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
    
    getActiveUser(): owner_of_the_script
    getEffectiveUser(): owner_of_the_script
    
    getActiveUser(): 
    getEffectiveUser(): owner_of_the_script
    
    当脚本的所有者执行时,结果如下所示:

    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
    
    getActiveUser(): owner_of_the_script
    getEffectiveUser(): owner_of_the_script
    
    getActiveUser(): 
    getEffectiveUser(): owner_of_the_script
    
    当由另一个用户(不是脚本的所有者)执行时,
    ,结果如下:

    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
    
    getActiveUser(): owner_of_the_script
    getEffectiveUser(): owner_of_the_script
    
    getActiveUser(): 
    getEffectiveUser(): owner_of_the_script
    
    重要提示:阅读中简单触发器的限制

    如果您有如下可安装触发器,并将该功能添加到电子表格的事件
    onOpen

    function myOnOpen() {
      Logger.log('getActiveUser(): ' + Session.getActiveUser());
      Logger.log('getEffectiveUser(): ' + Session.getEffectiveUser());
    }
    
    当脚本的所有者执行时,结果如下所示:

    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
    
    getActiveUser(): owner_of_the_script
    getEffectiveUser(): owner_of_the_script
    
    getActiveUser(): 
    getEffectiveUser(): owner_of_the_script
    
    当由另一个用户(不是脚本的所有者)执行时,,结果如下:

    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
    
    getActiveUser(): owner_of_the_script
    getEffectiveUser(): owner_of_the_script
    
    getActiveUser(): 
    getEffectiveUser(): owner_of_the_script
    
    可能的重复可能的重复