我在整个互联网上进行了搜索,似乎无法提出解决方案。现在,我只是使用脚本来制作整个电子表格的副本并移动电子表格。该电子表格大约有10张纸,但我不想复制整个电子表格,我只想复制三张特定的纸,理想情况下,每张纸都是自己的电子表格。
我将需要设置一个触发器来每天11:00 AM运行此脚本。因此,每天我都会备份这三张纸。
这是我当前正在使用的代码。它只是复制整个电子表格。我看不到如何实现上面提到的目标。这样的事情可能吗?
我研究了试图将整个电子表格重复三次,然后只是从重复中删除不需要的工作表。但是我似乎无法弄清楚如何从重复的文件中删除工作表。
任何帮助将不胜感激。
谢谢
function duplicateSheet(parameters) {
var formattedDate = Utilities.formatDate(new Date(), "GMT-5", "yyyy-MM-dd");
var name = formattedDate + " Daily Manager's Conference Call";
var destination = DriveApp.getFolderById("Folder ID");
var file = DriveApp.getFileById(SpreadsheetApp.getActiveSpreadsheet().getId())
file.makeCopy(name, destination);
}
答案 0 :(得分:0)
您可以使用copyTo()将单个工作表复制到另一个电子表格,如下所示:
var sheetToCopy = oldSpreadsheet.getSheetByName("your_sheet_name");
var newSpreadsheet = SpreadsheetApp.create("new_spreadsheet");
sheetToCopy.copyTo(newSpreadsheet);
如果要将电子表格复制到某个文件夹,则可以使用:
var file = DriveApp.getFileById(newSpreadsheet.getId());
DriveApp.getFolderById('your_folder_id').addFile(file);
答案 1 :(得分:0)
将多个工作表复制到单个电子表格
要使用此功能,只需为它提供要复制到新电子表格的文件名数组。我可以更改输入参数以满足您的需求。只要让我知道你想要什么。
function copySheetsToSpreadsheets(sheetNameArray) {
var sheetNameArray=sheetNameArray||["Sheet1","Sheet2","Sheet3"];
var ss=SpreadsheetApp.getActive();
var des=DriveApp.getFolderById("Destination Folder Id");
for(var i=0;i<sheetNameArray.length;i++) {
var ssFileName=Utilities.formatString('DailyManagersConferenceCall-%s-%s',sheetNameArray[i],Utilities.formatDate(new Date(),"GMT-5","yyyy-MM-dd"));
var file=SpreadsheetApp.create(ssFileName);
var f=DriveApp.getFileById(file.getId());
var fi=f.makeCopy(f.getName(), des);
var newss=SpreadsheetApp.openById(fi.getId());
var sh=ss.getSheetByName(sheetNameArray[i])
var newsh=sh.copyTo(newss);
newss.deleteSheet(newss.getSheets()[0]);
newsh.setName(sheetNameArray[i]);
}
}