javascript - 自动备份 Google 表格而不复制附在表格上的表格
问题描述
如何制作一个脚本,将 Google 表格作为备份复制到 Google 云端硬盘中的备份文件夹中,但不复制附加到表格的 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 多个副本。
解决方案
好问题。这对我的知识来说有点难,我明白了:)
无法在没有表单的情况下复制整个电子表格,因为它们被神奇地连接(神奇地 ==> 连接在任何公共 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]);
}
推荐阅读
- ruby-on-rails - Rails 5控制器中的范围嵌套关联
- r - R - rlm - R 中稳健回归后的 p 值和 R 平方
- react-native - React-native-document-picker 在 android 中不起作用
- php - 高级自定义字段专业转发器,使用引导滑块
- mongodb - MongoDB - 在记录属性中查找重复的元素
- android - 升级到支持 AndroidX 的 Nativescript 6 后,谷歌地图在 Android 中停止工作
- docker - 如何在 docker 中构建 go 模块?
- android - Android Studio 3.5 错误:无法解析“:app@debug/compileClasspath”的依赖关系
- google-app-maker - 如何使弹出数据反映选定的记录?
- python - CUDA 驱动程序版本对于 CUDA 运行时版本、CUDA 版本 10.0 不足