谷歌脚本Session.getActiveUser()。getEmail()不起作用

时间:2013-03-27 04:12:12

标签: google-apps-script

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

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

发布脚本后,我使用其他帐户登录并执行脚本。

然后页面显示:

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

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

但是Log中没有任何内容,页面也没有显示任何内容。

我只是不明白......

5 个答案:

答案 0 :(得分:1)

虽然在Session.GetActiveUser()的参考文档中没有明确说明,但我的测试确认您的Web应用程序需要以访问Web应用程序的用户身份执行才能访问getActiveUser()。我使用了下面的代码和logging library described here.

根据应用程序的使用情况,您可以create a library containing a centralized ScriptDB instance捕获活动用户电子邮件。然后,创建另一个与您的私人电子表格和相同的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);
}

答案 1 :(得分:1)

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

  • 为使该功能正常工作,应将Web应用程序作为“用户访问Web应用程序”执行,为此,应将Web应用程序配置为可以作为用户访问Web应用程序的方式执行
  • 请注意:将要求用户授权脚本访问,编辑和 管理它的驱动器还可以接收和发送邮件(对于大多数corse用户而言,这并不明显!!)。

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

在Google文档中没有提及此问题!

对于一个简单的函数,该函数以文本形式返回电子邮件地址以用作脚本或google html形式。等等:

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

     return optionsHtml;
}

答案 2 :(得分:0)

查看天然气问题论坛(谷歌)。它已被多次解决。基本上,如果您希望用户来自您的域外,则需要将其设置为用户访问应用时运行。更改该设置将根据所需的权限轻松破坏您的应用

答案 3 :(得分:0)

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

您可以在此处查看文档。

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

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

答案 4 :(得分:0)

如果您想访问用户的电子邮件,请确保您已在 "https://www.googleapis.com/auth/userinfo.email"

中添加了 appsscript .json 电子邮件访问策略

您可以在此处查看文档。

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