3

我用谷歌脚本开发了一个网络应用程序,并在我的 gs 中编写了代码。

var email = Session.getActiveUser().getEmail();
Logger.log(email);
// then do something to render the Email address on the page

发布脚本后,我用另一个帐户登录并执行脚本。

然后页面显示如下:

此应用程序是由其他用户而非 Google 创建的。

此应用程序可以访问以下个人信息:电子邮件地址。

但日志中仍然没有任何内容,页面也没有显示任何内容。

我只是不明白...

4

5 回答 5

3

尽管 Session.GetActiveUser() 的参考文档中没有明确说明,但我的测试确认您的 Web 应用程序需要在用户访问 Web 应用程序时执行才能访问 getActiveUser()。我使用了下面的代码和这里描述的日志库。

根据您的应用程序的用例,也许您可​​以创建一个包含集中式 ScriptDB 实例的库来捕获活动用户电子邮件。然后,创建另一个与您的私人电子表格和相同 scriptDB 库一起使用的项目。

var LOG_FILENAME = 'your-log-doc'
var LOG_PATH = 'folder/subfolder/third-folder'


function doGet() {
  //Change variable above to a good path and filename for you
  var x = LogLibrary.InitializeLogging(LOG_PATH, LOG_FILENAME)
  Logger.log(x)

  var email = Session.getActiveUser().getEmail();
  Logger.log("Start email logging")
  Logger.log(email);
  LogLibrary.fnSaveLog()  //Write the save and flush the logger content

  // then do something to render the Email address on the page
  var HTMLToOutput = '<html><h1>A header</h1><p>' + email + '</p></html>';
  return HtmlService.createHtmlOutput(HTMLToOutput);
}
于 2013-03-29T01:04:08.357 回答
1

我进行了一些测试,因为我正在寻找关于同一问题的解决方案,我得出的结论是:

  • 为了使功能可以工作,网络应用程序应作为“用户访问网络应用程序”执行,为此,网络应用程序应配置为可以作为访问网络应用程序的用户执行
  • 请注意:用户将被要求授权脚本访问、编辑和管理它的驱动器以及接收和发送邮件(这对于大多数 corse 用户来说并不明显!!)。

最后,这取决于您将使用它的目的。

在谷歌文档中没有提到这个问题!

对于将电子邮件地址作为文本返回以用作脚本或在 google html 表单中的简单函数.. 等:

function OnOpen(){
var emailName = Session.getActiveUser().getEmail();
var optionsHtml =  emailName.toString().split(",");

     return optionsHtml;
}
于 2020-06-13T11:04:51.423 回答
0

如果您的应用程序是 2013 年 6 月 25 日之前的应用程序,并且您正在使用 getEffectiveUser() 或 getUser() 方法,则由于新的授权体验,您将需要重新授权脚本。

您可以在此处查看文档。

https://developers.google.com/apps-script/scripts_google_accounts#understandingPermissions

并且不要忘记在部署之前执行脚本。

于 2013-10-02T14:11:23.573 回答
0

查看气体问题论坛(谷歌)。它已经解决了很多次。基本上,如果您希望来自域外的用户,您需要将其设置为以访问应用程序的用户身份运行。更改该设置很可能会破坏您的应用程序,具体取决于它需要的权限

于 2013-03-30T05:12:09.827 回答
0

如果您想访问用户的电子邮件,请确保您已将"https://www.googleapis.com/auth/userinfo.email"电子邮件访问策略添加到appsscript .json

您可以在此处查看文档。

https://developers.google.com/apps-script/reference/base/session#authorization

于 2021-06-01T16:58:44.230 回答