google-apps-script - Google Scripts Editor - 覆盖备份文件
问题描述
我正在使用 Google 脚本编辑器。我的脚本的目的是将电子表格从 Google 表格备份到我的本地作为 csv。我希望每个新备份都覆盖以前的备份文件。目前,该脚本会导致后续备份文件具有相同的名称但作为副本(例如文件名(1).csv 和文件名(2).csv)任何覆盖方面的帮助将不胜感激。
function myFunction() {// UPDATE THE FOLDER ID for e.g. "My Drive > Docs > Backups"
var backupFolder = DriveApp.getFolderById("foldername");
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var spreadsheetId = spreadsheet.getId();
var file = Drive.Files.get(spreadsheetId);
var url = file.exportLinks[MimeType.CSV];
// UPDATE THE SHEET-NAME TO BE EXPORTED - e.g. sheetName = "Malawi Ops"
// -- LEAVE IT BLANK TO EXPORT THE ENTIRE SPREADSHEET - i.e. sheetName = ""
var sheetName = "";
if (sheetName.length) {
var sheet = spreadsheet.getSheetByName(sheetName);
var sheetId = sheet.getSheetId();
url += "&gid=" + sheetId;
}
var token = ScriptApp.getOAuthToken();
var options = { headers: { Authorization: "Bearer " + token } };
var response = UrlFetchApp.fetch(url, options);
var doc = response.getBlob();
var backupDate = Utilities.formatDate(new Date(), "GMT", "yyyy-MM-dd' 'HH-mm-ss");
var backupName = spreadsheet.getName() + ".csv";
var tempFile = DriveApp.createFile(doc).setName(backupName);
tempFile.makeCopy(backupName, backupFolder);
tempFile.setTrashed(true);
}
解决方案
我了解到您正在使用您的代码对表格进行 CSV 备份,并且您希望每个新备份都覆盖旧备份。如果我理解得很好,那么你离目标很近了。
复制新备份后,只需删除旧备份即可。这不是直接覆盖,但具有相同的结果。创建新的 CSV 后,您可以立即搜索旧的并 File.isTrashed()
在其上使用。请不要犹豫,问我任何疑问。
推荐阅读
- php - 如何在 laravel 5.6 中使用带有集合的 chunk() 从数据库中获取产品类别
- xml - 从 xml 字符串创建石英作业
- r - Loop R 的更好替代方案
- python - 给定一个 int 列表,打印一个长度为原来的两倍的新列表,其中最后一个元素与原始列表相同,并且所有其他元素都为 0
- python - Cplex Python 错误在基础行状态中出现错误
- laravel - Laravel 5.6 会话超时自动注销
- php - 如何快速创建多行数据的excel表?
- django - 在查询过程中检索记录的属性列表
- sql-server - 每次在同一日期列中更改价格时,如何选择第一个日期和最后一个日期(加上一天)?
- html - 使 div 响应 div 中心的 div 内容