尽管 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);
}