Google Apps Script复制区域并粘贴为值报错问题求助
问题分析与解决办法
报错原因
copyValuesToRange() 方法的参数要求并非直接传入目标Range对象,它的正确参数签名为:copyValuesToRange(sheet, columnStart, columnEnd, rowStart, rowEnd)
你直接传入了target_range(一个Range对象),不符合方法的参数格式要求,因此抛出参数不匹配的异常。
解决方法
方法1:正确使用copyValuesToRange()
按照方法要求的参数结构,提取目标区域的行、列信息传入:
function copyRange() { var sheet = SpreadsheetApp.openById("16S3INZFMQDY3yguNZ2QHvzMQXI1Kf97DkSvcYyZeiHM").getSheets()[1]; var source_range = sheet.getRange("D12:M12"); var target_range = sheet.getRange("D10:M10"); source_range.copyValuesToRange( sheet, target_range.getColumn(), target_range.getLastColumn(), target_range.getRow(), target_range.getLastRow() ); }
方法2:更直观的取值赋值方式
直接获取源区域的数值数组,再赋值给目标区域,逻辑更清晰易懂:
function copyRange() { var sheet = SpreadsheetApp.openById("16S3INZFMQDY3yguNZ2QHvzMQXI1Kf97DkSvcYyZeiHM").getSheets()[1]; var source_range = sheet.getRange("D12:M12"); var target_range = sheet.getRange("D10:M10"); target_range.setValues(source_range.getValues()); }
补充说明
- 两种方法均仅复制数值,不会携带公式、格式等额外内容,完全满足你的需求。
- 方法1适合批量复制到多区域的场景,方法2更简洁,适用于一对一的区域复制。
内容的提问来源于stack exchange,提问作者nick
相关产品推荐
相关产品推荐

