Reputation: 1
I've used a code I saw on SO for saving a document into a specific folder in Google Drive, but by date (YYYY-MM-DD). I've ran this script, but I keep getting the above message. I've tried to look into the code, but cannot see where I'm going wrong - can someone help me please? Thank you so much!
function createFolder(){
var formattedDate = Utilities.formatDate(new Date(), "GMT", "yyyy-MM-dd");
var folderYearDate = Utilities.formatDate(new Date(), "GMT", "yyyy");
var folderMonthDate = Utilities.formatDate(new Date(), "GMT", "MMMM");
var name = "XXXX" + formattedDate; //file name
var parent = DriveApp.getFolderById("XXXX").getFoldersByName("XXXX")
var yearExist = parent.next();
var yearFolders = yearExist.getFoldersByName(folderYearDate);
if(yearFolders.hasNext()){
var yearFolder = yearFolders.next()
Logger.log('Yes, there is a year folder')
//return;
} else {
var yearFolder = yearExist.createFolder(folderYearDate)
Logger.log('There was no year folder, but it was created.')
//return;
}
var monthFolders = yearFolder.getFoldersByName(folderMonthDate);
if(monthFolders.hasNext()){
var monthFolder = monthFolders.next()
Logger.log('Yes, there is a month folder.')
} else {
var monthFolder = yearFolder.createFolder(folderMonthDate);
Logger.log('There was no month folder, but it was created')
}
}
Upvotes: 0
Views: 276
Reputation: 5533
By definition,
next()
- Gets the next item in the collection of files or folders. Throws an exception if no items remain.
To avoid the exception, you must determine whether calling next() will return an item by using hasNext
().
In your code:
if(parent.hasNext()){
var yearExist = parent.next();
//some operations
}
Upvotes: 1
Reputation: 9571
It fails because the DriveApp.getFolderById("XXXX").getFoldersByName("XXXX")
call isn't finding any folders. You should always call .hasNext()
before .next()
to see if there is anything (as you do later in your code).
var parent = DriveApp.getFolderById("XXXX").getFoldersByName("XXXX")
// Check if the folder exists
if (!parent.hasNext()) {
Logger.log("Folder not found. Exiting...");
return;
}
var yearExist = parent.next();
Upvotes: 1