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
相关产品推荐
相关产品推荐

