Google Apps Script跨工作簿复制范围仅粘贴单个值求助
问题原因
你的代码里用了getValue()和setValue(),这两个方法只能处理单个单元格:
sourcesheet.getRange('A9:J35').getValue()只会返回A9(范围左上角第一个单元格)的值thisSheet.getRange('A7:J33').setValue(sourceCellValue)只会把值写入A7(目标范围左上角单元格)
修正方案
要批量复制范围数据,得替换成getValues()和setValues(),这两个方法专门处理多单元格范围,操作的是二维数组:
function copyValueandPaste() { var source = SpreadsheetApp.openById('ID'); // 源工作簿 var sourcesheet = source.getSheetByName('Payouts'); // 源数据所在工作表 // 用getValues()获取整个范围的二维数组数据 var sourceRangeValues = sourcesheet.getRange('A9:J35').getValues(); var thisBook = SpreadsheetApp.getActive(); // 当前活动工作簿 var thisSheet = thisBook.getSheetByName('Template'); // 目标工作表 // 用setValues()把二维数组写入目标范围 thisSheet.getRange('A7:J33').setValues(sourceRangeValues); }
关键说明
getValues()返回的是二维数组,结构对应源范围的行和列,比如[[A9,B9,...J9], [A10,B10,...J10], ..., [A35,B35,...J35]]setValues()要求传入的数组结构和目标范围完全匹配(行数、列数一致),你这里源范围A9:J35和目标A7:J33都是27行10列,刚好匹配,不需要额外调整
内容的提问来源于stack exchange,提问作者NoMoreGolfPencils
相关产品推荐
相关产品推荐

