我开发了一个带有谷歌脚本的网络应用程序,并在我的gs中编码。
var email = Session.getActiveUser().getEmail();
Logger.log(email);
// then do something to render the Email address on the page
发布脚本后,我使用其他帐户登录并执行脚本。
然后页面显示:
此应用程序是由其他用户创建的,而不是由Google创建的。
此应用程序可以访问以下个人信息:电子邮件地址。
但是Log中没有任何内容,页面也没有显示任何内容。
我只是不明白......
答案 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)
我进行了一些测试,因为我正在寻找有关同一问题的解决方案,因此得出以下结论:
最后,它取决于您将使用它的用途。
在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