使用Google Sheets脚本跨表复制数据触发TypeError错误咨询
报错原因排查
错误TypeError: Cannot call method "getRange" of null的核心是pasteSheet变量为null,也就是ss.getSheetByName("Sheet 2")没有匹配到当前表格里的工作表,常见触发场景如下:
- 工作表名称拼写错误,注意名称里的空格、大小写、全半角符号都要完全匹配,比如如果实际表名是
Sheet2(没有空格)或者sheet 2(小写s)都会匹配失败 - 目标工作表已经被删除,或者你当前运行脚本的Google Sheet文件里根本没有新建过名为
Sheet 2的工作表 - 如果是在绑定其他文件的脚本里运行,也可能是当前激活的表格不是你预期的操作文件
解决步骤
- 打开你要操作的Google Sheet,核对底部工作表标签的名称,确认是否存在
Sheet 2,且名称和代码里的字符串完全一致 - 增加容错判断,避免空值调用方法
- 可按需追加边界判断,避免源范围数据为空、目标行超出表格限制的问题
修正后可运行代码
function copyInfo() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var copySheet = ss.getSheetByName("Sheet 1"); var pasteSheet = ss.getSheetByName("Sheet 2"); // 增加空值判断,避免找不到表时报错 if (!copySheet || !pasteSheet) { throw new Error("找不到对应的工作表,请核对表名拼写"); } // 获取源数据范围 var source = copySheet.getRange(2,1,38,17); // 获取目标粘贴范围 var destination = pasteSheet.getRange(pasteSheet.getLastRow()+1,1,38,17); // 仅复制数值到目标范围 source.copyTo(destination,{contentsOnly: true}); }
内容的提问来源于stack exchange,提问作者vivek chauhan
相关产品推荐
相关产品推荐

