Pety Rewt
Pety Rewt

Reputation: 31

FileIterator.next() not working

07/19/2017 The FileIterator.next() method has ceased to work.

Message: The following object can not be obtained: iterator has reached the end of the set.

Search for a file created before 07/19/2017 is correct.

All scripts worked correctly for a long time until 07/19/2017, perhaps that has changed in the methods of GAS.

Where can I go for help?

Code sample

var file = DriveApp.getFilesByName('FileName').next().getId();

and

var files = DriveApp.getFilesByName('Filename');  
if (files.hasNext()) {

    SpreadsheetApp.openById(files.next().getId()).getSheets()[0].appendRow([new Date(), Family, Name]);  
} 

and

var firstLevelFolderName = "MyFolderName";
var folders = DriveApp.getFoldersByName(firstLevelFolderName);
var firstLevelFolder = (folders.hasNext()) ? folders.next() : DriveApp.createFolder(firstLevelFolderName);

Upvotes: 3

Views: 576

Answers (1)

Cooper
Cooper

Reputation: 64082

This is what works for me. It's a function I have in my utilities library.

function loadFile(filename,folderID)
{
  var filename = (typeof(filename) !== 'undefined')? filename : DefaultFileName;
  var folderID = (typeof(folderID) !== 'undefined')? folderID : DataFolderID;
  var fldr = DriveApp.getFolderById(folderID);
  var file = fldr.getFilesByName(filename);
  var s = '';
  while(file.hasNext())
  {
    var fi = file.next();
    var target = fi.getName();
    if(target == filename)
    {
      s = fi.getBlob().getDataAsString();
    }
  }
  return s;
}

Upvotes: 1

Related Questions