错误:无法检索下一个对象:迭代器已到达末尾。 createFolder@函数:createFolder.gs:8
Posted
技术标签:
【中文标题】错误:无法检索下一个对象:迭代器已到达末尾。 createFolder@函数:createFolder.gs:8【英文标题】:Error: Cannot Retrieve the next object: iterator has reached the end. createFolder @ Function: createFolder.gs:8 【发布时间】:2020-11-27 16:18:01 【问题描述】:我使用我在 SO 上看到的代码将文档保存到 Google Drive 中的特定文件夹中,但按日期 (YYYY-MM-DD)。我已经运行了这个脚本,但我不断收到上述消息。我试图查看代码,但看不到我哪里出错了 - 有人可以帮我吗?非常感谢!
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')
【问题讨论】:
【参考方案1】:失败是因为DriveApp.getFolderById("XXXX").getFoldersByName("XXXX")
调用没有找到任何文件夹。您应该始终在 .next()
之前调用 .hasNext()
以查看是否有任何内容(就像您稍后在代码中所做的那样)。
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();
【讨论】:
谢谢你们。我现在已经编辑了代码。我收到一个单独的错误,我打算发布另一个问题,因为它与这个问题无关。【参考方案2】:根据定义,
next()
- 获取文件或文件夹集合中的下一项。如果没有剩余项目,则引发异常。
为避免该异常,您必须使用hasNext
() 确定调用next() 是否会返回一个项目。
在您的代码中:
if(parent.hasNext())
var yearExist = parent.next();
//some operations
参考文献
next()
hasNext()
【讨论】:
以上是关于错误:无法检索下一个对象:迭代器已到达末尾。 createFolder@函数:createFolder.gs:8的主要内容,如果未能解决你的问题,请参考以下文章