- Когда файл создается с помощью
var file = DriveApp.createFile(attachmentBlob)
, если существует то же имя файла с attachmentBlob
, вы хотите заменить существующий файл новым файлом, созданным с attachmentBlob
.
Если мое понимание верно, как насчет этой модификации?Пожалуйста, подумайте об этом как об одном из нескольких решений.Процесс этого измененного сценария выглядит следующим образом.
- Извлечение имени файла
attachment
. - Если существует файл с тем же именем, что и извлеченное имя файла, существующеефайл удален.
- Создайте новый файл с
attachment
.
Модифицированный скрипт:
Пожалуйста, измените следующим образом. Когда эта модификация отражается, существующий файл помещается в корзину.Поэтому будьте осторожны.
От:
var attachmentBlob = attachment.copyBlob();
var file = DriveApp.createFile(attachmentBlob);
parentFolder.addFile(file);
root.removeFile(file);
До:
var attachmentBlob = attachment.copyBlob();
var existingFile = DriveApp.getFilesByName(attachment.getName());
if (existingFile.hasNext()) {
var file = existingFile.next();
file.setTrashed(true);
}
var file = DriveApp.createFile(attachmentBlob);
parentFolder.addFile(file);
root.removeFile(file);
Примечание:
- Этот модифицированный скрипт предполагает, что на вашем диске есть только один дублированный файл,Если есть несколько файлов с одним и тем же именем, скажите мне.
file.setTrashed(true)
просто помещает файл в корзину.Если вы хотите полностью удалить файл, замените file.setTrashed(true);
на следующий скрипт.Следующий скрипт использовал метод удаления Drive API.
Скрипт для полного удаления файла:
var url = "https://www.googleapis.com/drive/v3/files/" + file.getId();
var params = {
method: "delete",
headers: {"Authorization": "Bearer " + ScriptApp.getOAuthToken()}
}
UrlFetchApp.fetch(url, params);
Ссылки:
Если я неправильно понял ваш вопрос и этоизменение не было того результата, который вы хотите, я извиняюсь.
Редактировать:
Если вы хотите перезаписать attachmentBlob
в существующий файл с тем же именем файла, что и attachmentBlob
, вы можете использоватьследующий скрипт.
Когда вы используете этот скрипт, пожалуйста, включите Drive API в Advanced Google Services и консоли API.Об этом вы можете узнать по здесь .
Модифицированный скрипт:
От:
var attachmentBlob = attachment.copyBlob();
var file = DriveApp.createFile(attachmentBlob);
parentFolder.addFile(file);
root.removeFile(file);
До:
var attachmentBlob = attachment.copyBlob();
var existingFile = DriveApp.getFilesByName(attachment.getName());
if (existingFile.hasNext()) {
var file = existingFile.next();
Drive.Files.update({}, file.getId(), attachmentBlob);
} else { // Added
var file = DriveApp.createFile(attachmentBlob); // Added
parentFolder.addFile(file); // Added
root.removeFile(file); // Added
}
Примечание:
- При запуске этого сценария существующий файл перезаписывается.Поэтому сначала, пожалуйста, будьте осторожны с этим.Поэтому я рекомендую протестировать этот скрипт с использованием фиктивного файла.
Ссылка: