Google Sheets根据选中单元格动态复制行至另一工作表脚本报错求助:TypeError: targetSheet.getrange is not a function
解决Google Sheets脚本复制行的错误问题
嘿,我来帮你搞定这个脚本问题!你遇到的TypeError其实是两个小细节出错了,咱们一步步修正:
错误原因分析
- 方法名大小写错误:Google Apps Script的方法名是严格区分大小写的,你写的
getrange应该是getRange(注意R是大写),这是直接触发报错的原因。 - 获取的不是Range对象:
sourceSheet.getActiveCell().getRow()返回的是一个数字(选中单元格的行号),而copyTo方法只能被Range对象调用,所以你需要把行号转换成对应的整行区域。
修正后的完整代码
function copyRowsWithCopyTo() { // 获取当前活动的表格 let spreadSheet = SpreadsheetApp.getActiveSpreadsheet(); // 源工作表(要复制的行所在表) let sourceSheet = spreadSheet.getSheetByName('Todays'); // 1. 获取选中单元格的行号 let activeRowNumber = sourceSheet.getActiveCell().getRow(); // 2. 转换为该行的完整Range:行号、起始列(1)、行数(1行)、列数(源表总列数) let sourceRange = sourceSheet.getRange(activeRowNumber, 1, 1, sourceSheet.getLastColumn()); // 目标工作表(要粘贴到的表) let targetSheet = spreadSheet.getSheetByName('Sheet8'); // 找到目标表的第一个空白行(避免覆盖已有数据,可选) let targetFirstEmptyRow = targetSheet.getLastRow() + 1; // 执行复制粘贴 sourceRange.copyTo(targetSheet.getRange(targetFirstEmptyRow, 1)); }
额外说明
- 如果你的需求是覆盖目标表的第一行,可以把
targetFirstEmptyRow那行删掉,直接用targetSheet.getRange(1, 1)。 - 要是需要复制格式、公式等内容,可以给
copyTo加参数,比如:// 复制所有内容(值、格式、公式等) sourceRange.copyTo(targetSheet.getRange(targetFirstEmptyRow, 1), SpreadsheetApp.CopyPasteType.PASTE_ALL); - 记得确认
'Todays'和'Sheet8'这两个工作表名称完全正确,大小写也要匹配哦!
内容的提问来源于stack exchange,提问作者faf
相关产品推荐
相关产品推荐

