Google apps script 谷歌应用程序脚本doGet(e)获取用户电子邮件

Google apps script 谷歌应用程序脚本doGet(e)获取用户电子邮件,google-apps-script,web-applications,Google Apps Script,Web Applications,当前 我想收集访问我的Google Apps脚本webapp的用户的用户电子邮件 为了实现这一点,我将Execute设置为“我”,并且有权访问:“任何拥有谷歌账户的人” 函数doGet(e){ 让userEmail=Session.getActiveUser().getEmail() 返回HtmlService.createHtmlOutput( “电子邮件:“+userEmail+” ); } 然后,部署将创建一个EXEC链接: https://script.google.com/macro

当前

我想收集访问我的Google Apps脚本webapp的用户的用户电子邮件

为了实现这一点,我将Execute设置为“我”,并且有权访问:“任何拥有谷歌账户的人”

函数doGet(e){
让userEmail=Session.getActiveUser().getEmail()
返回HtmlService.createHtmlOutput(
“电子邮件:“+userEmail+”
);
}
然后,部署将创建一个EXEC链接:

https://script.google.com/macros/s/1234................56789/exec

问题

当用户在匿名窗口IE或Firefox中访问执行链接时,会要求用户登录Google

用户登录后,页面返回:

电子邮件:

我想要什么

  • 用户访问
    exec
    链接,并被提示登录谷歌
  • 登录google后,用户收到HTML:
  • 电子邮件:users@email.com

    注释

    我最近尝试添加:

      "oauthScopes": [
        "https://www.googleapis.com/auth/userinfo.email"
      ],
    

    但是这没有效果。

    我相信你的目标如下

    • 当用户登录Google并访问Web应用程序时,您希望检索该用户的电子邮件地址
    修改点:
    • 根据您的问题,我确认您将Web应用部署为
      执行为:Me
      谁有权访问该应用:任何拥有Google帐户的人。在这种情况下,为了实现您的目标,请按如下方式部署Web应用程序

      • 执行身份:访问web应用程序的用户
        和有权访问该应用程序的
        用户:任何拥有Google帐户的人
    • 此外,在这种情况下,请将Web应用程序重新部署为新版本

    将上述设置反映到Web应用程序后,请再次测试。在我的环境中,当不是Web应用所有者的用户访问Web应用时,用户的电子邮件可以通过脚本显示。但是,用户首次访问Web应用时,需要授权
    https://www.googleapis.com/auth/userinfo.email

    注:
    • 如果上述设置无法解决您的问题,作为测试,请删除
      “oauthScopes”:[“https://www.googleapis.com/auth/userinfo.email“],
      来自
      appsscript.json
      并再次测试它
    参考资料:

    不幸的是,我们目前无法使用
    执行为:用户访问web应用程序
    ,因为该应用程序使用库,而访问该应用程序的用户无权访问这些库。@Wronski感谢您的回复。从您的问题中,我没有注意到您使用了Web应用程序库。所以我在问题中回答了你的剧本。这是因为我的技术差。对此我深表歉意。在现阶段,当库用于Web应用时,还需要将库和Web应用的GAS项目共享给用户。如果你不想分享它们,那么把这个库合并到Web应用的GAS项目中怎么样?这样,具有上述设置的Web应用可以在不共享的情况下使用。如果这也不是您期望的方向,我再次道歉。由于脚本是公共的,因此无法与使用该脚本的用户共享。考虑到维护通用脚本的并行代码库的成本,我们无法将库脚本合并到现有的应用程序中。@Wronski感谢您的回复。我不得不为我糟糕的英语水平道歉。考虑到为常见脚本维护并行代码库的成本,我无法理解
    。我可以问一下它的细节吗?@Wronski顺便说一句,当Web应用程序使用
    executeas:Me
    时,Web应用程序的脚本由所有者运行。因此,我认为,当您想要检索每个用户的信息时,将
    设置为Execute as:user访问web app
    将接近目标。我认为这是当前使用Web应用程序的规范。