You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:21:05