我在我的Google SpreadSheet中有一个脚本,它将我的Google表保存为XLSX格式的每次编辑。它工作正常,但它正在创建一个同名的新文件(许多文件同名,而不是覆盖在同一个文件夹中)。
我想删除旧文件并保存新版本,或者只是覆盖使用相同名称的文件。
我的代码是:
function getGoogleSpreadsheetAsExcel(){
try {
var ss = SpreadsheetApp.getActive();
var url = "https://docs.google.com/feeds/download/spreadsheets/Export?key=" + ss.getId() + "&exportFormat=xlsx";
var params = {
method : "get",
headers : {"Authorization": "Bearer " + ScriptApp.getOAuthToken()},
muteHttpExceptions: true
};
var blob = UrlFetchApp.fetch(url, params).getBlob();
blob.setName(ss.getName() + ".xlsx");
// set the folder where I am working using the id
var folder = DriveApp.getFolderById(“FOLDER_ID");
var xname = “blablabla.xlsx"; //set the file name
var existing = folder.getFilesByName(xname);
if (existing.hasNext()) {
Browser.msgBox(‘file exists, delete to save the new version after.', Browser.Buttons.OK);
// 'DELETE THE OLD FILE FROM GOOGLE DRIVE' CODE GOES HERE
Browser.msgBox(‘file deleted.', Browser.Buttons.OK);
var arquivo = folder.createFile(blob); //save the new version
Browser.msgBox(‘new version was saved.', Browser.Buttons.OK);
}
else {
Browser.msgBox(‘file does not exists, saving.', Browser.Buttons.OK);
var arquivo = folder.createFile(blob); //save the file
Browser.msgBox(‘file saved.', Browser.Buttons.OK); //file saved
}
} catch (f) {
Logger.log(f.toString());
}
}帮助我从Google删除或改写旧版本
发布于 2019-10-26 06:05:24
blablabla.xlsx的文件存在于FOLDER_ID的特定文件夹中时,您希望覆盖blablabla.xlsx的文件。blablabla.xlsx的文件存在于FOLDER_ID的特定文件夹中时,您希望删除现有文件并将其创建为新文件。如果我的理解是正确的,这次修改怎么样?请把这看作是几个答案中的一个。
在使用此修改后的脚本之前, 请在高级谷歌服务中启用驱动器API。
模式1:
在这种模式中,现有文件被blob覆盖。
修改脚本:
当您的脚本被修改,请修改如下。
发自:
if (existing.hasNext()) {
Browser.msgBox(‘file exists, delete to save the new version after.', Browser.Buttons.OK);
// 'DELETE THE OLD FILE FROM GOOGLE DRIVE' CODE GOES HERE
Browser.msgBox(‘file deleted.', Browser.Buttons.OK);
var arquivo = folder.createFile(blob); //save the new version
Browser.msgBox(‘new version was saved.', Browser.Buttons.OK);
}至:
var arquivo; // Added
if (existing.hasNext()) {
Browser.msgBox('file exists, delete to save the new version after.', Browser.Buttons.OK);
Browser.msgBox('file deleted.', Browser.Buttons.OK);
var id = Drive.Files.update({}, existing.next().getId(), blob).id; // Modified
arquivo = DriveApp.getFileById(id); // Modified
Browser.msgBox('new version was saved.', Browser.Buttons.OK);
}模式2:
在此模式中,删除现有文件,并将blob创建为新文件。
修改脚本:
当您的脚本被修改,请修改如下。
发自:
if (existing.hasNext()) {
Browser.msgBox(‘file exists, delete to save the new version after.', Browser.Buttons.OK);
// 'DELETE THE OLD FILE FROM GOOGLE DRIVE' CODE GOES HERE
Browser.msgBox(‘file deleted.', Browser.Buttons.OK);
var arquivo = folder.createFile(blob); //save the new version
Browser.msgBox(‘new version was saved.', Browser.Buttons.OK);
}至:
var arquivo; // Added
if (existing.hasNext()) {
Browser.msgBox('file exists, delete to save the new version after.', Browser.Buttons.OK);
Browser.msgBox('file deleted.', Browser.Buttons.OK);
Drive.Files.remove(existing.next().getId()); // Modified
arquivo = folder.createFile(blob); // Modified
Browser.msgBox('new version was saved.', Browser.Buttons.OK);
}注意:
‘用作单引号。在这种情况下,会发生错误。请修改为'。请小心这个。参考文献:
如果我误解了你的问题,而这不是你想要的方向,我道歉。
https://stackoverflow.com/questions/58567608
复制相似问题