Google Sheet复制粘贴脚本无法完整复制指定范围数据问题求助
问题排查步骤
- 先检查目标工作表「1st Week」的粘贴区域是否开启了筛选/隐藏列:筛选状态下粘贴仅会写入可见列,隐藏列也会导致对应位置内容无法正常显示,关闭筛选、取消列隐藏后重新运行脚本测试。
- 验证目标粘贴区域是否存在保护范围/合并单元格:若B2起始的右侧范围设置了编辑权限保护,或存在跨列合并单元格,会导致超出合并/保护范围的内容无法写入,解除保护、拆分合并单元格后重试。
- 确认源范围尺寸是否符合预期:在你的脚本中新增日志打印源范围的列数,运行后查看日志输出是否匹配你实际需要复制的列数,避免源范围配置笔误:
function copyANDpaste() { var spreadsheet = SpreadsheetApp.getActive(); var originSheet = spreadsheet.getSheetByName('Sheet1'); var listToCopy = originSheet.getRange('B9:AN26'); // 新增日志验证列数 Logger.log('源范围列数:' + listToCopy.getNumColumns()); Logger.log('源范围行数:' + listToCopy.getNumRows()); var destinationSheet = spreadsheet.getSheetByName('1st Week'); // 原代码中destinationColum变量未使用,可直接删除 listToCopy.copyTo(destinationSheet.getRange('B2'),{contentsOnly:true}); };
- 若上述排查都无问题,可以改为显式指定目标粘贴范围的尺寸,避免自动匹配异常,修改后代码如下:
function copyANDpaste() { var spreadsheet = SpreadsheetApp.getActive(); var originSheet = spreadsheet.getSheetByName('Sheet1'); var listToCopy = originSheet.getRange('B9:AN26'); var targetRows = listToCopy.getNumRows(); var targetCols = listToCopy.getNumColumns(); var destinationSheet = spreadsheet.getSheetByName('1st Week'); // 显式指定目标范围的行、列、尺寸,和源范围完全匹配 var targetRange = destinationSheet.getRange(2, 2, targetRows, targetCols); listToCopy.copyTo(targetRange, {contentsOnly: true}); };
内容的提问来源于stack exchange,提问作者mau
相关产品推荐
相关产品推荐

