我有一个问题,我需要将单元格数据从一张纸传输到另一张纸。最后,我要实现的目标是,如果我单击一个按钮,它将把我的数据从一张工作表导入到我当前正在使用的工作表中。
我的原始代码如下:
function C2() {
var sourceSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("C2");
var destSheet = SpreadsheetApp.getActiveSpreadsheet()
sourceSheet.getRange("A1:I43").copyTo(destSheet.getRange("A1:I43"), {contentsOnly:true});
}
但是,这不适用于我所做的新修改。它会擦除下一张工作表中单元格中的公式,并将其替换为公式所产生的上一张工作表中的值。
我尝试使用此公式,选择了我要传输的所有区域,但是会导致“找不到范围”错误消息。
function C1() {
var sourceSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("C1");
var destSheet = SpreadsheetApp.getActiveSpreadsheet()
sourceSheet.getRange("A2,A4:B16,A21,A23,A25,A27,D3:D22,E4:E22,F3:H22,C24,C26:E31,F25,L1").copyTo(destSheet.getRange("A2,A4:B16,A21,A23,A25,A27,D3:D22,E4:E22,F3:H22,C24,C26:E31,F25,L1"), {contentsOnly:true});
}
如果可以挑选需要的单元格并将其转移到所需的工作表上,而不是仅使用较大范围的单元格(例如“ A1:I43”),那将是理想的选择。任何帮助都将不胜感激。
答案 0 :(得分:0)
如果只想复制值,getValues()和setValues()将是对您有用的方法:
function myFunction() {
var spreadsheet=SpreadsheetApp.getActiveSpreadsheet();
var sourceSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("C2");
var destSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
var rangeList=sourceSheet.getRangeList(["A2","A4:B16","A21","A23","A25","A27","D3:D22","E4:E22","F3:H22","C24","C26:E31","F25","L1"]);
var rangeList2=destSheet.getRangeList(["A2","A4:B16","A21","A23","A25","A27","D3:D22","E4:E22","F3:H22","C24","C26:E31","F25","L1"]);
for (var i=0;i<rangeList.getRanges().length;i++){
rangeList2.getRanges()[i].setValues(rangeList.getRanges()[i].getValues());
}
}