在 google-apps-script 中有没有办法知道谷歌驱动器的文件夹是否为空?

问题描述 投票:0回答:2

我想编写一个谷歌应用程序脚本来将每个空文件夹放入我的谷歌驱动器中,我应该使用哪种方法/属性来检查当前文件夹(我可以写一个循环)是否真的是空的,id est没有任何文件或任何里面还有其他嵌套文件夹吗?

而且,如果您删除了链接有某些文件的文件夹,会发生什么情况?这些文件会被丢弃还是会被孤立(当然,如果仅链接到文件夹)?

谢谢你。

–亲切,

tiziano soligani,da  Mac http://blog.solignani.it

这是我在第一个有用的答案后编码的内容,我刚刚插入了分页:

function FindEmptyFolders() {

var pageSize = 200;
var folders = null;
var token = null;
var i = null;

Logger.clear()

do {
var result = DocsList.getAllFoldersForPaging(pageSize, token);
folders = result.getFolders();
token = result.getToken();
  for (var i = 0; i < folders.length; i++) {
      for(n=0;n<folders.length;++n){
        if(folders[n].getFiles().length==0 && folders[n].getFolders().length==0){
            folders[n].setTrashed(true)
            Logger.log(folders[n].getName())
            Logger.log(folders[n].getUrl())
        }
      }    
  } 
 } while (folders.length == pageSize);

  MailApp.sendEmail('[email protected]', 'Script eliminazione folders vuoti Log', Logger.getLog());

} 
google-apps-script google-drive-api
2个回答
2
投票

这段代码可以完成工作

function testForEmptyFolders() {
var folders = DocsList.getAllFolders()
  for(n=0;n<folders.length;++n){
    if(folders[n].getFiles().length==0 && folders[n].getFolders().length==0){
     folders[n].setTrashed(true)
     Logger.log(folders[n].getName())
     }
   }
}

记录器显示已删除文件夹的名称


0
投票

hasNext()
方法在这里很方便。如果 FolderIterator 或 FileIterator 中有下一个值,则返回 true。

https://developers.google.com/apps-script/reference/drive/file-iterator#hasNext()

function isEmptyFolder(folderId) {
  const folders = DriveApp.getFolderById(folderId).getFolders();
  const files = DriveApp.getFolderById(folderId).getFiles();

  if(folders.hasNext() || files.hasNext()) {
    return false;
  }
  else {
    return true;
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.