2016-11-15 2 views
0

Я пытаюсь написать скрипт приложения Google, в котором перечислены все папки и файлы на моем диске Google. Приведенный ниже код возвращает - Exception: Cannot retrieve the next object: iterator has reached the end. при переходе через файлы. Это работает в большинстве папок, пока не завершится ошибка. Любые идеи о том, что заставляет это бомбить?Исключение Google-Apps-Script: невозможно получить следующий объект: завершение итератора

function generateFolderTree() { 
    try { 
    var parentFolder = DriveApp.getRootFolder(); 
    getChildFolders(parentFolder); 
    } catch (e) { 
    Logger.log(e.toString()); 
    } 
} 

function getChildFolders(parent) { 
    var childFolders = parent.getFolders(); 
    while (childFolders.hasNext()) { 
    var childFolder = childFolders.next(); 
    Logger.log("Folder ID: " + childFolder.getId()); 
    Logger.log("Folder: " + childFolder.getName()); 

    var files = childFolder.getFiles(); 

    while (files.hasNext()) { 
     // Print list of files inside the folder 
     Logger.log("--> File Name: " + files.next().getName()); 
     Logger.log("--> Owner: " + files.next().getOwner().getEmail()); 
    } 

    // Recursive call for any sub-folders 
    getChildFolders(childFolder); 
    } 
} 

Спасибо.

ответ

0

Я думаю, что по какой-то причине вызов next() дважды похож на другой файл. Итак, если в папке только один файл, то в следующий раз, когда вы его назовете, в вашем случае ищет владельца, он ошибается. У вас была правильная идея в цикле папок, измените петлю файла на это.

while (files.hasNext()) { 
     var childFile = files.next(); 
     // Print list of files inside the folder 
     Logger.log("--> File Name: " + childFile.getName()); 
     Logger.log("--> Owner: " + childFile.getOwner().getEmail()); 
    } 
Смежные вопросы