如何创建一个脚本,将Google工作表作为备份复制到Google Drive中的备份文件夹中,而不是复制附加到工作表上的Google表单?
function backUp() {
var formattedDate = Utilities.formatDate(new Date(), "GMT", "yyyy-MM-dd' 'HH:mm:ss");
var name = SpreadsheetApp.getActiveSpreadsheet().getName() + " Copy " + formattedDate;
var destination = DriveApp.getFolderById("1NNhZESRq_0_DVBwzA8fvxSYGMpOa6KC_");
var file = DriveApp.getFileById(SpreadsheetApp.getActiveSpreadsheet().getId())
file.makeCopy(name, destination);
}
它会自动将原始文件复制到备份文件夹中,但也会复制链接到它的Google表单……所以在它保存后,我每天都会得到10+的拷贝。
发布于 2018-05-28 23:32:55
问得好。这对我的知识来说有点难,我抓住了它:)
无法在没有表单的情况下复制整个电子表格,因为它们神奇地连接在一起(神奇的==>连接在任何公共API下)。
您可以使用copy sheet to another spreadsheed
功能。
我试过了,它不能创建表单的副本,耶!
但是对于这种情况,有Script & Drive笨重的API。结果看起来太老套了:
function backUp() {
//Open old spreadsheet
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
//Prepare new name
var formattedDate = Utilities.formatDate(new Date(), "GMT", "yyyy-MM-dd' 'HH:mm:ss");
var name = spreadsheet.getName() + " Copy " + formattedDate;
//Prepare file system objects
var oldfile = DriveApp.getFileById(spreadsheet.getId());
var destination = DriveApp.getFolderById("1NNhZESRq_0_DVBwzA8fvxSYGMpOa6KC_");
//create new spreadsheet
var newSpreadsheet = SpreadsheetApp.create(name);
//move to destination folder (yep, it's hacky)
var newFile = DriveApp.getFileById(newSpreadsheet.getId());
var parents = newFile.getParents();
while (parents.hasNext()) {
var parent = parents.next();
parent.removeFile(newFile); //remove from default folder
}
destination.addFile(newFile);
//copy all sheets to new spreadsheet
var sheets = spreadsheet.getSheets();
sheets.forEach(function(sheet) {
sheet.copyTo(newSpreadsheet);
});
//remove empty sheet (created with new spreadsheet)
newSpreadsheet.deleteSheet(newSpreadsheet.getSheets()[0]);
}
https://stackoverflow.com/questions/50549311
复制相似问题