Совместное использование папок не работает на общем диске 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);
}
}
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);
}
Ссылки:
Похожие вопросы
Связанные вопросы
Новые вопросы
google-apps-script
Используйте для вопросов о Google Apps Script, облачной платформе сценариев Google на основе JavaScript для автоматизации задач в продуктах Google и сторонних сервисах. Используйте в дополнение к соответствующим тегам продукта (например, [google-sheet], [google-docs]) или API-тегам (например, [google-drive-api]), где это применимо.