Google apps script 如何获取所有用户';使用多个帐户登录时发送电子邮件?

Google apps script 如何获取所有用户';使用多个帐户登录时发送电子邮件?,google-apps-script,Google Apps Script,我有一个学校的Google Web应用程序,它有一个G套件的域名,即电子邮件是@theschool.org。该应用程序连接到一个电子表格,其中包含允许访问该应用程序的电子邮件地址(学校教师)的白名单。当页面加载时,所有其他人都会收到“拒绝访问”消息。脚本使用Session.getEffectiveUser().getEmail()获取用户的电子邮件并将其与列表进行比较 一些用户使用个人设备或Chromebook登录他们的个人gmail帐户和学校的域名帐户。一些实验表明,在这种情况下,Sessio

我有一个学校的Google Web应用程序,它有一个G套件的域名,即电子邮件是@theschool.org。该应用程序连接到一个电子表格,其中包含允许访问该应用程序的电子邮件地址(学校教师)的白名单。当页面加载时,所有其他人都会收到“拒绝访问”消息。脚本使用
Session.getEffectiveUser().getEmail()
获取用户的电子邮件并将其与列表进行比较

一些用户使用个人设备或Chromebook登录他们的个人gmail帐户和学校的域名帐户。一些实验表明,在这种情况下,
Session.getEffectiveUser().getEmail()
Session.getActiveUser().getEmail()
始终返回首先登录的帐户的电子邮件地址,这意味着即使用户(稍后)使用其白名单帐户登录,也会被拒绝访问。因此,他们必须注销所有帐户,然后登录学校帐户才能访问

我想获得用户当前登录的所有gmail地址的列表,这样我就可以检查其中是否有任何地址在白名单上,避免了注销和重新登录的需要。在应用程序脚本中是否有这样做的方法

Google关于User类和Session类的文档没有提到任何关于多个帐户的内容

我想获得用户当前登录的所有gmail地址的列表,这样我就可以检查其中是否有任何地址在白名单上,避免了注销和重新登录的需要。在应用程序脚本中是否有这样做的方法

答复: 使用应用程序脚本无法执行此操作

说明: GoogleApps脚本是一种基于JaveScript、基于云的语言,不在用户的本地计算机上运行。它无法访问本地会话中的任何信息,因此只能查看哪个用户是活动用户、登录并运行脚本

通过应用程序脚本提供的唯一会话信息是:

  • getActiveUser()
    -获取有关当前用户的信息
  • getActiveUserLocale()
    -以字符串形式获取当前用户的语言设置,例如,英语为en
  • getEffectiveUser()
    -获取有关在其权限下运行脚本的用户的信息
  • getScriptTimeZone()
    -获取脚本的时区
  • getTemporaryActiveUserKey()
    -获取活动用户唯一的临时密钥,但不会显示用户身份。
最后一点很重要-访问本地会话并获取用户身份信息是一个严重的隐私问题。因此,这是不可能的

参考资料:

这是一个两年前的应用程序脚本错误。请看:据我所知,应用程序脚本无法获取所有登录用户的帐户。当出现错误时,您最好尝试向用户显示一条消息。并向新用户解释情况。用户的另一个选择是以匿名模式打开另一个Chrome浏览器窗口,并登录到正确的帐户。明白。但在这种情况下,用户使用所需的帐户登录,但显然脚本是在他们的其他帐户下运行的。因此,也许有一个解决办法:如果我检测到getActiveUser不在白名单上,有没有办法强制使用Google登录屏幕或“选择帐户”屏幕?看起来我可以重定向到
https://drive.google.com/accounts?continueUrl=[my web app address]
,提供选择帐户或登录新帐户的选项,然后重定向回我的web应用。@AaronDuniganAtLee捕捉得好!消除了错误信息。