Совместное использование папок не работает на общем диске Google, поэтому я пытаюсь автоматизировать совместное использование с помощью скрипта Google Apps.

Я пытался писать код со ссылкой на несколько примеров, но все время получал ошибки и задавал вопросы.

Я получил сообщение об ошибке:

«Невозможно получить следующий объект: итератор достиг конца», и я подтвердил, что совместное использование некоторых файлов не было установлено.

Ниже приведен код, который я написал. Как я могу исправить эту проблему?

function myFunction() {
  var folderid = ""
  var folder = DriveApp.getFolderById(folderid);
  var files = folder.getFiles();
  while (files.hasNext()) {
    Logger.log(files.next().getName());
    files.next().setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.VIEW);
  }
}
2
user13324450 15 Апр 2020 в 22:57

1 ответ

Лучший ответ

Выпуск :

.next() возвращает файл next в folder. Если folder имеет 1 файл, files.hasNext() возвращает истину, а files.next() возвращает file1. Повторный вызов files.next() возвращается

Невозможно получить следующий объект: итератор достиг конца '

  • Первый вызов итератора: файл №1

    Logger.log (files.next (). getName ());

  • Второй вызов итератора: следующий файл (недоступен)

    files.next (). setSharing (DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.VIEW);

Если бы в папке было 5 файлов, Logger записал бы имена файлов 1,3 и 5. Совместное использование было бы установлено для файлов 2 и 4.

Решение:

Позвоните files.next() только один раз после проверки с files.hasNext()

Фрагмент:

  while (files.hasNext()) {
    const nextFile = files.next();//one call
    Logger.log(nextFile.getName());
    nextFile.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.VIEW);
  }

Ссылки:

3
TheMaster 15 Апр 2020 в 20:13