javascript - 将特定单元格数据从工作表传输到工作表
问题描述
我有一个问题,我需要将单元格数据从一张纸转移到另一张纸上。我最终想要实现的是,如果我点击一个按钮,它会将我的数据从一张表导入到我当前使用的表中。
我的原始代码如下所示:
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”),那将是理想的。非常感谢任何和所有帮助。
解决方案
您需要定义一个RangeList并遍历所有包含的范围。
如果您只想复制值,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());
}
}