Как найти и удалить дубликаты файлов на Google Диске
21 февраля 2023 г.Возможно, вы управляете организацией, в которой файлы создаются автоматически или другими сотрудниками/сотрудниками. Вас беспокоит функция Google, которая разрешает файлы с одинаковыми именами?
Тогда этот блог для вас. Вы получите скрипт для удаления повторяющихся файлов, а также сможете автоматизировать процесс.
Привет, это Нибеш Хадка. ==Я фрилансер, помогающий клиентам с работой, связанной с продуктами Google Workspace и скриптом Google Apps==. Этот блог предназначен как для программистов, так и для тех, кто не занимается кодированием, поэтому не обращайте внимания на чрезмерное объяснение.
Введение
Во-первых, вы должны понимать, что речь идет о файлах с одинаковыми именами. Мы не будем проверять содержимое файлов в скрипте. Итак, напишем скрипт:
- Это будет нацелено на папку.
- Проверьте содержимое папки.
- Сравните имена и размеры файлов друг с другом.
- Если оба совпадают, считайте их дубликатом файла.
- Удалите повторяющиеся файлы, если они существуют.
- Создайте триггер для автоматизации этой задачи.
Скрипт приложений
Давайте сначала перейдем на главную страницу вашего проекта сценария и создадим новый сценарий. Добавьте туда эти коды после очистки файла code.gs.
// Add id of the folder to check for duplicate
const FOLDER_ID = "";
/**
* Function looks for duplicate file names in designated folder and removes them.
* @param {String} fileName
*/
function removeDuplicateFile() {
let folder = DriveApp.getFolderById(FOLDER_ID);
let files = folder.getFiles();
let fileList = [];
// if no file is found return null
if (!files.hasNext()) {
return;
}
// else
while (files.hasNext()) {
let file = files.next(),
name = file.getName(),
size = file.getSize();
// checking this way always leaves first file not deleted
if (isDuplicateFile(fileList, name, size)) {
file.setTrashed(true);
} else {
fileList.push([name, size]);
}
}
}
/**
* Function is helper function of removeDuplicateFile function.
* It checks if theres already a file in the given lst with same name and size and returns true or false
* @param {List} lst
* @param {String} name
* @param {Number} size
* @returns {Boolean}
*/
function isDuplicateFile(lst, name, size) {
for (let i = 0; i < lst.length; i++) {
if (lst[i][0] === name && lst[i][1] === size) return true;
}
return false;
}
Вы можете найти идентификатор своей папки по URL-адресу, когда вы находитесь в своей папке на диске Google, как показано на изображении ниже.
:::информация Для тех, кто не умеет кодировать: вы можете увидеть вторую строку в коде→ const FOLDER_ID = "". Вы должны добавить идентификатор своей папки отсюда в кавычки.
:::
Настроить триггер
Теперь вы можете настроить триггер на основе времени для автоматизации этой задачи.
Теперь выполните действия, указанные на изображении выше.
- В сценарии на левой панели нажмите кнопку часов.
- Не забудьте добавить функцию removeDuplicateFile на шаге 2.
- Выберите событие, связанное со временем, на третьем шаге.
- На четвертом шаге вы, конечно, можете выбрать почасовой, еженедельный, ежемесячный и другие параметры, чтобы указать, когда запускать триггер.
- Выберите время, которое будет отображаться по-разному в зависимости от вашего выбора на 4-м шаге.
- Нажмите Сохранить и готово.
:::предупреждение Предупреждение. Этот скрипт не учитывает ограничение скрипта Google Apps для триггеров и запуска скрипта. время. Таким образом, этот скрипт, вероятно, не будет работать для очень больших и старых папок с большим количеством файлов.
:::
Ссылка
На основе этот ответ StackOverflow.
Спасибо за уделенное время
:::подсказка Я делаю надстройки Google, а также могу написать для вас скрипты Google Apps. Если вам нужны мои услуги, дайте мне знать .
:::
Оригинал