- Вы хотите удалить созданные файлы.
- Файлы помещаются в общую папку.
- К файлам относятся файлы, созданные несколькими пользователями.
- Ниже перечислены файлы, которые вы хотите удалить.
- Файлы, созданные 3 часа назад. В этом случае есть файлы, созданные вами и другими пользователями.
- Для файлов, которые были созданы 3 часа назад, вы хотите оставить только самый последний файл.
- Пока выследуя приведенному выше условию, вы хотите удалить только файлы, которые вы создали.
- Вы хотите добиться этого с помощью скрипта Google Apps.
Из твоего сценария и вопроса я так понял. Если мое понимание верно, как насчет этого ответа? Думайте об этом как об одном из нескольких ответов.
Точки модификации:
- В вашей ситуации, когда добавляется
"email" in owners
для поискового запроса в виде and
, толькосозданные вами файлы возвращаются. Таким образом, ваша цель не может быть достигнута. Поэтому необходимо использовать var files = folder.searchFiles('modifiedDate < "' + cutOffDate + '"');
.
В этом случае, как насчет проверки владельца по fileIDs.forEach(function(fileID) {Drive.Files.remove(fileID)}
?
Pattern 1:
В этомшаблон, электронные письма владельцев извлекаются, и когда файлы удаляются, владелец проверяется и удаляет его. При этом могут быть удалены только созданные вами файлы.
Модифицированный скрипт:
Пожалуйста, измените функции getOldFileIDs()
и deleteFiles()
следующим образом.
function getOldFileIDs() {
// Old date is 3 Hours
var oldDate = new Date().getTime() - 3600*1000*3;
var cutOffDate = new Date(oldDate).toISOString();
// Get folderID using the URL on google drive
var folder = DriveApp.getFolderById('XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX');
var files = folder.searchFiles('modifiedDate < "' + cutOffDate + '"');
var obj = [];
while (files.hasNext()) {
var file = files.next();
obj.push({id: file.getId(), date: file.getDateCreated(), owner: file.getOwner().getEmail()}); // Modified
}
obj.sort(function(a, b) {
var a= new Date(a.date).valueOf();
var b= new Date(b.date).valueOf();
return b-a;
});
obj.shift();
return obj; // Modified
};
function deleteFiles() {
var email = "###"; // Added
var obj = getOldFileIDs; // Modified
obj.forEach(function(e) { // Modified
if (e.owner == email) { // Added
Drive.Files.remove(e.id); // Modified
}
});
};
- Когда вы используете этот скрипт, пожалуйста, установите свой адрес электронной почты на
var email = "###"
. Или вы также можете использовать var email = Session.getActiveUser().getEmail()
.
Pattern 2:
Когда файлы, которые вы не являетесь владельцем, удалены, возникает ошибка. В этом шаблоне ошибка игнорируется. При этом могут быть удалены только созданные вами файлы.
Модифицированный скрипт:
Пожалуйста, измените функцию deleteFiles()
следующим образом.
С:
Drive.Files.remove(fileID);
Кому:
try {Drive.Files.remove(fileID)} catch(e) {}
Примечание:
- Файлы, которые вы не являетесь владельцем, не могут быть удалены. Пожалуйста, будьте осторожны с этим.
Если я неправильно понял вашу ситуацию, и это не то направление, которое вы хотите, я прошу прощения.