Добрый день. Пытаюсь получить все файлы в папке и подпапках и удалить их, но код не работает, проходит только первую подпапку и в ней нет файлов, скрипт завершается, помогите пожалуйста.
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)
}
}
}





Я считаю вашу цель следующим образом.
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, и файлы удаляются. (Они перемещаются в корзину для мусора.)
@Антон Кожевников Спасибо за ответ. Я рад, что ваша проблема была решена.