Google Apps Script获取登录用户用户名报错求助
解决Google Apps Script中substring调用报错的问题
嘿,这个问题我之前也碰到过,其实核心原因就是你拿到的“邮箱”看起来是字符串,但本质上是个对象,不是真正的String类型,所以调用substring方法才会报错。咱们一步步来解决:
1. 先搞清楚你获取邮箱的方式
大概率你是用了Session.getActiveUser()来获取用户信息对吧?这个方法返回的是一个User对象,不是直接的邮箱字符串——虽然它在打印的时候会显示成邮箱格式,但它本身是个带方法的对象,没有substring这个字符串方法。
2. 修正代码的正确姿势
你需要先调用User对象的getEmail()方法,拿到真正的字符串邮箱,之后再用substring截取用户名:
function getusername() { // 先获取字符串格式的邮箱 const userEmail = Session.getActiveUser().getEmail(); if (userEmail) { // 截取@之前的部分作为用户名 const username = userEmail.substring(0, userEmail.indexOf('@')); // 这里可以把username返回给Google Sites显示 return username; } else { return "无法获取用户信息"; } }
3. 如果是其他来源的邮箱对象
如果你是从Google Sites的其他元素或者数据源拿到的“邮箱”,也可能是类似的对象类型。这种情况下可以用String()强制转换成字符串后再操作:
// 假设email是你拿到的对象 const emailStr = String(email); const username = emailStr.substring(0, emailStr.indexOf('@'));
4. 验证类型的小技巧
你可以用typeof来确认变量类型,比如在代码里加一行日志:
Logger.log(typeof userEmail);
如果输出是string,就说明可以正常调用字符串方法;如果是object,那就要先转成字符串或者调用对应方法获取字符串值。
内容的提问来源于stack exchange,提问作者user9534711
相关产品推荐
相关产品推荐

