Google表格脚本求助:选中单元格复制至同工作表指定位置代码失效
问题分析与解决方案
你的代码无法正常运行的核心原因是:你直接调用了Selection对象的copyTo方法,但Selection类本身并没有这个方法——copyTo是Range(单元格范围)对象的专属方法,所以必须先从选中的区域信息里提取出对应的Range实例才行。
修正后的代码
function kopieerDag() { var sheet = SpreadsheetApp.getActiveSheet(); Logger.log(sheet); // 获取选中的区域对象,再从中提取实际的单元格范围 var selection = sheet.getSelection(); var selectedRange = selection.getActiveRange(); // 这是修复的关键步骤! Logger.log(selectedRange); // 使用Range对象执行复制操作 selectedRange.copyTo(sheet.getRange(1, 1), {contentsOnly: true}); }
关键细节说明
sheet.getSelection()返回的Selection对象,只是用来描述用户选中的区域状态,不能直接执行复制、修改这类操作。- 如果是选中了多个不连续的单元格区域,可以改用
selection.getRangeList()获取所有选中范围,再遍历每个Range执行复制逻辑。 - 注意目标范围
sheet.getRange(1,1)的尺寸要能容纳选中区域的内容,否则可能出现数据溢出的报错。
内容的提问来源于stack exchange,提问作者Brecht Parmentier
相关产品推荐
相关产品推荐

