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

Google Sheets脚本报错:TypeError: Cannot read properties of undefined (reading 'source')

解决Google表格脚本“TypeError: Cannot read properties of undefined (reading 'source')”错误

错误原因

出现这个错误的核心原因是event对象未被正确传入:

  • onEdit作为Google Apps Script的简单触发器,只有用户手动编辑表格内容时,系统才会自动传递event参数;如果直接在脚本编辑器里手动运行函数,event会是undefined,自然无法读取event.source属性。

修正后的代码

以下是添加了防护逻辑、优化细节后的代码:

function onEdit(event) {
  // 防护:避免手动运行脚本时报错
  if (!event) {
    SpreadsheetApp.getUi().alert('请通过编辑表格触发此脚本,不要手动运行!');
    return;
  }

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = event.source.getActiveSheet();
  var r = event.range; // 直接使用event.range更高效

  // 注意:若表格第7列是布尔值(如勾选框),请将"True"改为true(小写无引号)
  if (s.getName() === "Followup" && r.getColumn() === 7 && r.getValue() === "True") {
    var row = r.getRow();
    var numColumns = s.getLastColumn();
    var targetSheet = ss.getSheetByName("Sheet8");
    
    // 处理目标表为空的情况,防止目标行号出错
    var targetRow = targetSheet.getLastRow() === 0 ? 1 : targetSheet.getLastRow() + 1;
    var target = targetSheet.getRange(targetRow, 1, 1, numColumns);
    
    s.getRange(row, 1, 1, numColumns).copyTo(target);
  }
}

关键注意事项

  • 必须通过在「Followup」工作表第7列输入"True"(或勾选布尔框,视实际数据类型调整)触发脚本,不要手动在编辑器中运行函数。
  • 确认「Sheet8」工作表名称拼写、大小写完全匹配代码中的设置,否则会找不到目标表。
  • 如果表格第7列使用的是勾选框(实际值为布尔型true/false),需将判断条件中的r.getValue() === "True"修改为r.getValue() === true。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 07:40:35