Как лучше всего удалить все файлы в папке и ее подпапках

Добрый день. Пытаюсь получить все файлы в папке и подпапках и удалить их, но код не работает, проходит только первую подпапку и в ней нет файлов, скрипт завершается, помогите пожалуйста.

function DeleteInvoices() {
 var folder = DriveApp.getFolderById("1-2VAPBzEQxCaoN7KGSB_K_peiLIDk32e");
 var fl = folder.getFolders();
 while (fl.hasNext()) {
 var files = fl.next();
 Logger.log(files)
 var fs = files.getFiles();
 while (fs.hasNext()) {
 var fss = fs.next();
 fss.setTrashed(true)
  }
 }
} 
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
1 027
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я считаю вашу цель следующим образом.

  • Вы хотите удалить все файлы в папке 1-2VAPBzEQxCaoN7KGSB_K_peiLIDk32e.
    • В этом случае вы хотите удалить файлы в корзину.
  • В папке 1-2VAPBzEQxCaoN7KGSB_K_peiLIDk32e есть подпапки, и вы хотите удалить все папки во всех подпапках.
  • Вы не хотите удалять подпапки.

Точки модификации:

  • В вашем скрипте, я думаю, извлекаются файлы из папок, находящихся непосредственно под папкой 1-2VAPBzEQxCaoN7KGSB_K_peiLIDk32e.
    • Например, если в папке 1-2VAPBzEQxCaoN7KGSB_K_peiLIDk32e есть 2 папки, а в 2 папках есть 1 файл и 1 папка, включая 1 файл в каждой папке, ваш скрипт извлекает 2 файла. Потому что скрипт извлекает файлы из папок прямо под папкой 1-2VAPBzEQxCaoN7KGSB_K_peiLIDk32e.
  • Чтобы просмотреть все подпапки в 1-2VAPBzEQxCaoN7KGSB_K_peiLIDk32e, необходимо просканировать все папки, включая подпапки в 1-2VAPBzEQxCaoN7KGSB_K_peiLIDk32e, используя рекурсивный цикл.

Когда вышеуказанные пункты отражаются в сценарии, получается следующее.

Модифицированный скрипт:

function DeleteInvoices() {
  const getAllFiles = folder => {
    const files = folder.getFiles();
    while (files.hasNext()) {
      const file = files.next();
      console.info(file.getName());
      file.setTrashed(true);
    }
    const folders = folder.getFolders();
    while (folders.hasNext()) getAllFiles(folders.next());
  }

  var folder = DriveApp.getFolderById("1-2VAPBzEQxCaoN7KGSB_K_peiLIDk32e");
  getAllFiles(folder);
}
  • В этом скрипте все файлы во всех подпапках сканируются функцией getAllFiles, и файлы удаляются. (Они перемещаются в корзину для мусора.)
  • Имена удаленных файлов отображаются в консоли.

Примечание:

  • В этом сценарии используйте его с включенной средой выполнения V8.
  • Когда количество файлов велико, сначала извлекаются идентификаторы файлов, а в качестве следующего шага может подойти удаление файлов с помощью пакетного запроса. Реф

Использованная литература:

@Антон Кожевников Спасибо за ответ. Я рад, что ваша проблема была решена.

Tanaike 24.12.2020 01:09

Другие вопросы по теме