在HtmlService网页中获取活跃用户邮箱的方法求助
问题解决:Google Apps Script异步获取用户邮箱返回null的问题
问题原因
google.script.run是异步执行的,你当前的客户端代码试图同步将它的返回值赋值给user变量,但此时服务端请求还未完成,所以user会是null。必须通过withSuccessHandler的回调函数来处理服务端返回的结果。
修改后的客户端代码
把需要使用用户邮箱的逻辑全部放在成功回调函数内:
google.script.run.withSuccessHandler(function(userEmail) { console.log('User: ' + userEmail); // 在这里执行保存数据的操作,将userEmail作为操作用户邮箱记录 // 示例:调用保存数据的服务端函数 // google.script.run.saveUserData(userEmail, 其他需要保存的数据); }).getUser();
如果是绑定到保存按钮的点击事件,代码可以这样写:
// 假设保存按钮的id是saveBtn document.getElementById('saveBtn').addEventListener('click', function() { google.script.run.withSuccessHandler(function(userEmail) { console.log('正在保存数据,操作用户:' + userEmail); // 执行保存逻辑,把用户邮箱传入服务端保存函数 google.script.run.saveData(userEmail, /* 你的表单数据等 */); }).getUser(); });
服务端代码保持不变
你的服务端代码是正常的,无需修改:
function getUser(){ const user = Session.getActiveUser().getEmail(); console.log('Active User: ' + user) return user; }
内容的提问来源于stack exchange,提问作者onit
相关产品推荐
相关产品推荐

