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

Google Sheets使用Apps Script提交表单到外部表格报lastRow Null错误

错误原因

  • 核心错误1:你通过shUserForm.getDataRange().getValues()拿到的srcData是二维值数组,并非Range或Sheet对象,数组没有getRange()方法,调用该方法会直接抛出异常
  • 核心错误2:调用外部表getSheetByName("Mastersheet")时如果找不到对应名称的工作表(比如大小写拼写错误、工作表被删除/重命名),会返回null值,此时调用getLastRow()就会触发你遇到的Null错误
  • 小问题:日期格式字符串末尾多了无效冒号,会导致格式显示异常

修正后代码

function submitData() {
  // 引用当前表的表单工作表
  var myGoogleSheet = SpreadsheetApp.getActiveSpreadsheet();
  var shUserForm = myGoogleSheet.getSheetByName('MasterSheet');
  if (!shUserForm) {
    SpreadsheetApp.getUi().alert("当前文档找不到名为MasterSheet的工作表");
    return;
  }

  // 打开外部存储表
  var extSS = SpreadsheetApp.openById("1U9SmfPCH9v8maqh6XL0dmRL85TJZfckUV7SAEGM3pQo");
  var datasheet = extSS.getSheetByName("Mastersheet");
  // 校验外部工作表是否存在,避免Null错误
  if (!datasheet) {
    SpreadsheetApp.getUi().alert("外部文档找不到名为Mastersheet的工作表,请检查表名拼写");
    return;
  }

  var ui = SpreadsheetApp.getUi();
  var response = ui.alert("提交", "是否确认提交数据?", ui.ButtonSet.YES_NO);
  if (response == ui.NO) {
    return;
  }

  if (validateEntry() == true) {
    var blankRow = datasheet.getLastRow() + 1;
    // 直接从表单工作表取对应单元格值,不要用数组调用getRange
    datasheet.getRange(blankRow, 1).setValue(shUserForm.getRange("C7").getValue()); // 录入编号
    datasheet.getRange(blankRow, 2).setValue(shUserForm.getRange("C9").getValue()); // 部门
    datasheet.getRange(blankRow, 3).setValue(shUserForm.getRange("C11").getValue()); // 坐席姓名
    datasheet.getRange(blankRow, 4).setValue(shUserForm.getRange("C13").getValue()); // 枢纽位置
    datasheet.getRange(blankRow, 9).setValue(shUserForm.getRange("C15").getValue()); // 订单ID
    datasheet.getRange(blankRow, 10).setValue(shUserForm.getRange("C20").getValue()); // 录入类型
    datasheet.getRange(blankRow, 5).setValue(Session.getActiveUser().getEmail()); // 提交人邮箱自动获取
    datasheet.getRange(blankRow, 7).setValue(new Date()).setNumberFormat('yyyy-mm-dd h:mm');
    datasheet.getRange(blankRow, 8).setValue(new Date()).setNumberFormat('yyyy-mm-dd h:mm');
    datasheet.getRange(blankRow, 6).setValue(shUserForm.getRange("C17").getValue()); // 备注

    ui.alert('新数据已保存 - 录入编号 #' + shUserForm.getRange("C7").getValue());

    // 清空表单
    shUserForm.getRange("C7").clear();
    shUserForm.getRange("C9").clear();
    shUserForm.getRange("C11").clear();
    shUserForm.getRange("C13").clear();
    shUserForm.getRange("C15").clear();
    shUserForm.getRange("C17").clear();
  }
}

额外注意事项

如果运行时依然提示权限相关错误,需要先给脚本授权访问外部表格的权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 01:54:04