Ваш код не работает, потому что вы слепо звоните next()
на FileIterator
, не проверив сначала, что был найден результат для вашего поиска.
Правильный метод для работы с итераторами файлов и папок - сначала вызвать hasNext()
.
Этот пример получает первый результат поиска по заданному имени файла и выдает ошибку, если ваш поиск не дал результатов (поэтому вы знаете, нужно ли вам исправить поиск или имена файлов).
function getFirstFileWithName_(searchName) {
var allFiles = getAllFilesWithName_(searchName);
// Were there any results from the search?
if (allFiles.length === 0)
throw new Error("No files with name '" + searchName + "'");
return allFiles[0];
}
function getAllFilesWithName_(name) {
var results = DriveApp.getFilesByName(name);
var files = [];
while (results.hasNext()) {
files.push(results.next());
}
return files;
}