У меня есть сценарий в моей электронной таблице Google, который сохраняет мою таблицу 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 Диска
1 ответ
- Когда файл
blablabla.xlsx
существует в определенной папкеFOLDER_ID
, вы хотите перезаписать файлblablabla.xlsx
. - Или, когда файл
blablabla.xlsx
существует в определенной папкеFOLDER_ID
, вы хотите удалить существующий файл и создать его как новый файл.
Если мое понимание верно, как насчет этой модификации? Пожалуйста, подумайте об этом как об одном из нескольких ответов.
Прежде чем использовать этот модифицированный скрипт, включите Drive API на уровне Advanced. Службы Google.
Схема 1:
В этом шаблоне существующий файл перезаписывается большим двоичным объектом.
Измененный скрипт:
При изменении вашего сценария измените его следующим образом.
Из: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:
В этом шаблоне существующий файл удаляется, а большой двоичный объект создается как новый файл.
Измененный скрипт:
При изменении вашего сценария измените его следующим образом.
Из: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);
}
Заметка:
- В модифицированных выше скриптах при запуске скрипта существующий файл перезаписывается блобом и/или удаляется. Поэтому, пожалуйста, будьте осторожны.
- В вашем скрипте
‘
используется как одинарная кавычка. В этом случае возникает ошибка. Пожалуйста, измените на'
. Пожалуйста, будьте осторожны с этим.
Ссылки:
Если я неправильно понял ваш вопрос, а это не то направление, которое вы хотите, прошу прощения.
Похожие вопросы
Новые вопросы
google-apps-script
Используйте для вопросов о Google Apps Script, серверной платформе Google для облачных сценариев на основе Javascript для автоматизации задач в продуктах Google и сторонних службах. Используйте в дополнение к релевантным тегам продукта (например, [google-sheets], [google-docs]) или API (например, [google-drive-api]), где это применимо.
i was using pattern 2 but some times i have problem with the delay erasing/creating a file with more than 1 person working
, хотя я не уверен, правильно ли я его понимаю, как насчет использования Lock Service? Ссылка? Если это не решило вашу проблему, можете ли вы опубликовать ее как новый вопрос, включив подробную информацию? Таким образом, это поможет пользователям, включая меня, подумать о решении. В то время, пожалуйста, закройте этот вопрос.