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

如何解决Google Apps Script报sheet.getDataRange is not a function错误

问题根源

你的报错来自参数传递逻辑错误:

  • autoSort 函数要求传入的参数是单个工作表(Sheet)实例,只有 Sheet 实例才有 getDataRange 方法
  • 但你在 onOpen 触发函数里调用 autoSort 时,传入的是 event.source,这个是整个电子表格文件(Spreadsheet)实例,该实例没有 getDataRange 方法,因此触发类型错误
  • 额外的逻辑漏洞:你已经在 onOpen 里通过 getSheetByName 获取了目标工作表 sheet,但完全没有用到这个变量

修正方案

修改 onOpen 函数的传参逻辑,同时增加容错判断,避免目标工作表被重命名/删除时触发报错,修正后完整代码如下:

function autoSort(sheet) {
  var SORT_COLUMN_INDEX = 15;
  var ASCENDING = true;
  var NUMBER_OF_HEADER_ROWS = 1;
  var range = sheet.getDataRange();
  if (NUMBER_OF_HEADER_ROWS > 0) {
    range = range.offset(NUMBER_OF_HEADER_ROWS, 0);
  }
  range.sort( {
    column: SORT_COLUMN_INDEX,
    ascending: ASCENDING
  } );
}

function onOpen(event) {
  var sheet = SpreadsheetApp.getSheetByName("Form Responses 1");
  // 非空判断,避免工作表不存在时报错
  if (sheet) {
    // 传入获取到的工作表对象,而非整个电子表格文件对象
    autoSort(sheet);
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 05:42:02