【发布时间】:2023-04-03 10:52:01
【问题描述】:
我一直在尝试仅将电子表格的内容(没有公式,例如 =IMPORTRANGE)复制到新的电子表格中。我找到了解决方案,但我想知道是否有更简单的方法来做到这一点?
我最终遍历原始电子表格中的每个工作表,获取每个工作表的数据范围,获取这些值,使用 .copyTo 将每个工作表复制到新电子表格中,删除使用新电子表格创建的“Sheet1”,然后遍历新电子表格并将值粘贴到电子表格中的每个新工作表。
function copySpreadsheetContent() {
var ss1 = SpreadsheetApp.getActiveSpreadsheet();
var sheetNums = ss1.getNumSheets();
var ssNew = SpreadsheetApp.create('Test Spreadsheet').getId();
var ss2 = SpreadsheetApp.openById(ssNew);
var ss2Nums = ss2.getNumSheets();
var sheetVals = [];
for(var i = 0; i < sheetNums; i++){
var sheet = ss1.getSheets()[i];
sheetVals[i] = sheet.getDataRange().getValues();
var newSheet = sheet.copyTo(ss2);
newSheet.setName(sheet.getName());
}
var sheet1 = ss2.getSheetByName("Sheet1");
ss2.deleteSheet(sheet1);
for(var j = 0; j <= ss2Nums; j++){
var ss2Sheet = ss2.getSheets()[j];
ss2Sheet.getDataRange().setValues(sheetVals[j]);
}
}
据我所知,这提供了预期的结果,但它似乎是一种非常迂回的做事方式,我希望有人能够指出我更有效或更直接的方法。
感谢您的帮助
【问题讨论】:
标签: google-apps-script google-sheets