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

Google Sheets根据选中单元格动态复制行至另一工作表脚本报错求助:TypeError: targetSheet.getrange is not a function

解决Google Sheets脚本复制行的错误问题

嘿,我来帮你搞定这个脚本问题!你遇到的TypeError其实是两个小细节出错了,咱们一步步修正:

错误原因分析

  1. 方法名大小写错误:Google Apps Script的方法名是严格区分大小写的,你写的getrange应该是getRange(注意R是大写),这是直接触发报错的原因。
  2. 获取的不是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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 13:32:28