我一直在使用DocsList进行大型项目,并且运行良好。最近,错误不断出现,并且它们的错误根源通常在于获取文件夹或文件。当我进行研究时,我发现DriveApp已更新。问题在于DriveApp没有像DocsList这样的搜索参数。
例如,如果我有一个像这样的文件夹结构:
Root
-Main Folder 1
--Folder 1
--Folder 2
-Main Folder 2
--Folder 1
--Folder 2
要在“主文件夹2”中获取文件夹“文件夹1”,我可以这样输入搜索参数:DocsList.getFolder('主文件夹2/文件夹1')
使用DriveApp,我只是不明白如何使用它。据我了解,我必须为DriveApp做这样的事情:
var mainFolders = DriveApp.getFoldersByName('Main Folder 2');
while (mainFolders.hasNext()) {
var mainFolder = termFolders.next();
var subFolders = termFolder.getFoldersByName('Folder 1');
// Something like this...
}
因此,如果我的文件夹更“深”,我将不得不进一步扩展它。
我觉得不但没有使事情变得简单,反而使所有FileIterators和FolderIterators变得更加复杂。而且只是很难用代码术语“获取”文件或文件夹。
因此,基本上,该线程的目的是找出使用DocsList导航和编辑Drive文件/文件夹的人如何迁移到DriveApp并实现相同的目的。
不同场景的小型/离散示例将非常有帮助。我可以从那里拿走。如果你们认为我不清楚我需要什么帮助,我将做更多编辑。
最佳答案
wchiquito的评论中的讨论很有趣,但是遵循所有链接非常耗时。
底线:不会有getFolderByPath()的DriveApp版本,因此您需要自己滚动。 Faustino在the Google+ group中提出了一种解决方法,而Eric对此进行了改进。在这里,添加了检查以允许以“/”开头的路径。
function getFolderByPath(path) {
var parts = path.split("/");
if (parts[0] == '') parts.shift(); // Did path start at root, '/'?
var folder = DriveApp.getRootFolder();
for (var i = 0; i < parts.length; i++) {
var result = folder.getFoldersByName(parts[i]);
if (result.hasNext()) {
folder = result.next();
} else {
return null;
}
}
return folder;
}
这样,您可以简单地执行
myFolder = getFolderByPath('Main Folder 2/Folder 1');
。您最终将获得一个DriveApp文件夹实例。