简体   繁体   English

Google Scripts Editor - 覆盖备份文件

[英]Google Scripts Editor-Overwrite backup file

I am working with Google Scripts Editor.我正在使用 Google 脚本编辑器。 The purpose of my script is to backup a spreadsheet from Google Sheets to my local as a csv.我的脚本的目的是将电子表格从 Google 表格备份到我的本地作为 csv。 I would like each new backup to overwrite the previous backup file.我希望每个新备份都覆盖以前的备份文件。 Currently the script results in subsequent backup files as the same name but as a copy (Ex. filename (1).csv and filename (2).csv) Any help in overwriting would be appreciated.目前,该脚本会导致后续备份文件名称相同但作为副本(例如文件名 (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);

}

I understood that you are using your code to make CSV backups of your Sheets, and you want each new backup to override the old one.我了解到您正在使用您的代码对表格进行 CSV 备份,并且您希望每个新备份都覆盖旧备份。 If I understood it well, you are very close from reaching your goal.如果我理解得很好,那么你离目标很近了。

After copying the new backup, you only need to delete the old one.复制新备份后,只需删除旧备份即可。 This isn't directly overwriting , but has the same result.这不是直接覆盖,但具有相同的结果。 Immediately after you created your new CSV, you can search for the old one and use File.isTrashed() on it.创建新的 CSV 后,您可以立即搜索旧的并在其上使用File.isTrashed() Please, don't hesitate to ask me any doubts.请不要犹豫,问我任何疑问。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM