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

Google Apps Script表格自动邮件脚本getRange为null报错求助

错误根因

你遇到的TypeError: Cannot read property 'getRange' of null错误是因为sheet变量返回了空值,问题出在这行代码:

var sheet = ss.getSheetByName('sheet1');

getSheetByName()会严格匹配工作表名称,参数和实际名称有任何出入(大小写差异、多/少空格、名称完全不符)都会返回null,后续调用getRange自然报错。Google表单默认生成的响应工作表通常命名为「表单回应 1」(或英文环境下的Form Responses 1),和你代码里写的sheet1不一致是最常见的诱因。

修复步骤
  • 第一步:打开绑定脚本的电子表格,查看底部工作表栏的实际名称,完全复制名称替换代码里的'sheet1'即可,比如如果实际名称是表单回应 1,代码就改成:
    var sheet = ss.getSheetByName('表单回应 1');
    
  • 第二步(可选优化):不要通过getLastRow()拿最新提交的数据,高并发提交时容易拿错行,直接用表单提交事件对象获取当前提交的数据更稳妥,对应修改后的代码如下:
    // 需要设置表单提交触发器触发该函数,触发时会自动传入e事件对象
    function emailConfirmation(e) {
      // 拿当前提交的一行数据,不需要读取整个工作表
      const submitData = e.values;
      // 注意数组下标从0开始,原代码拿第2列是收件人,对应下标1;第4列是姓名对应下标3
      const recipient = submitData[1];
      const name = submitData[3];
      const resno = e.range.getRow(); // 拿当前提交行的行号,用来判断是否是前5位
      const subject = '[Khóa học viết luận học bổng] Xác nhận đăng ký tham gia';
      let body;
      if (resno <= 5) {
        // 注意原代码Xin chào后面缺了空格,已补充
        body = `Xin chào ${name}, \r\n Cảm ơn bạn đã đăng ký tham gia Khóa học viết luận học bổng. Chúc mừng bạn đã trở thành 1 trong 5 người điền đơn đầu tiên. Phương thức thanh toán cho khóa học là chuyển khoản.`;
      } else {
        body = `Xin chào ${name}, \r\n Cảm ơn bạn đã đăng ký tham gia Khóa học viết luận học bổng. Phương thức thanh toán cho khóa học là chuyển khoản.`;
      }
      MailApp.sendEmail(recipient, subject, body);
    }
    

    注意:使用事件对象版本的代码时,不要直接在脚本编辑器点击运行测试,手动运行不会自动传入提交事件参数,会触发报错,提交一次表单即可验证效果。

  • 第三步:设置脚本触发器,触发来源选「电子表格」,触发事件选「表单提交时」,保存后按照提示完成脚本授权即可。

内容的提问来源于stack exchange,提问作者adrenaline245

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 19:39:04