Javascript 如何列出驱动器中所有不是“文件”的文件;谷歌";使用谷歌应用程序脚本的mime类型?

Javascript 如何列出驱动器中所有不是“文件”的文件;谷歌";使用谷歌应用程序脚本的mime类型?,javascript,google-apps-script,google-drive-api,Javascript,Google Apps Script,Google Drive Api,我一直在努力: 使用谷歌应用程序脚本,查找所有不属于我且不是谷歌类型的文件 这就是我所拥有的: // 1° try: var queryStr = "sharedWithMe = true and not mimeType contains 'google'"; var filesIterator = DriveApp.searchFiles(queryStr); while(filesIterator.hasNext()){ debugger; // it never gets her

我一直在努力: 使用谷歌应用程序脚本,查找所有不属于我且不是谷歌类型的文件

这就是我所拥有的:

// 1° try:
var queryStr = "sharedWithMe = true and not mimeType contains 'google'";
var filesIterator = DriveApp.searchFiles(queryStr);
while(filesIterator.hasNext()){
    debugger; // it never gets here
}

// 2° try:
var queryStr = "not 'me' in owners and not mimeType contains 'google'";
var filesIterator = DriveApp.searchFiles(queryStr);

while(filesIterator.hasNext()){
    debugger; // it never gets here
}
在GoogleDrive用户界面搜索中,在这种情况下可以找到很多文件,所以我正在尝试的查询一定有问题


谢谢

我想这就是你想要的:

function listNonGoogleMimetypes(id) {
  var id=id||'default id';
  var files=DriveApp.getFolderById(id).getFiles();
  var list=[];
  while(files.hasNext()) {
    var file=files.next();
    var type=file.getMimeType();
    if(file.getMimeType().indexOf('GOOGLE')==-1) {
      list.push(file.getName());
    }
  }
  Logger.log(JSON.stringify(list));
}
这将对整个驱动器执行此操作:

var list=[];

function listNonGoogleMimetypesInDrive() {
  getFnF();
  Logger.log(JSON.stringify(list));
}

function getFnF(folder) {
  var folder= folder || DriveApp.getRootFolder();
  var files=folder.getFiles();
  while(files.hasNext()) {
    var file=files.next();
    var type=file.getMimeType();
    var name=file.getName();
    if(!type.match(/google/i)) {
      list.push(file.getName());
    }
  }
  var subfolders=folder.getFolders() 
  while(subfolders.hasNext()) {
    var subfolder=subfolders.next();
    getFnF(subfolder);
  }
}
这可能需要一段时间才能完成整个驱动器。这花了我大约2分钟,但我没有那么多,因为我只是在我的帐户上做了很多编程

此版本还包括所有者电子邮件

function getFnF(folder) {
  var folder= folder || DriveApp.getRootFolder();
  var files=folder.getFiles();
  while(files.hasNext()) {
    var file=files.next();
    var type=file.getMimeType();
    var name=file.getName();
    var owner=file.getOwner().getEmail();
    if(!type.match(/google/i) && owner!='your email address') {
      list.push(file.getName());
    }
  }
  var subfolders=folder.getFolders() 
  while(subfolders.hasNext()) {
    var subfolder=subfolders.next();
    getFnF(subfolder);
  }
}

我想这就是你想要的:

function listNonGoogleMimetypes(id) {
  var id=id||'default id';
  var files=DriveApp.getFolderById(id).getFiles();
  var list=[];
  while(files.hasNext()) {
    var file=files.next();
    var type=file.getMimeType();
    if(file.getMimeType().indexOf('GOOGLE')==-1) {
      list.push(file.getName());
    }
  }
  Logger.log(JSON.stringify(list));
}
这将对整个驱动器执行此操作:

var list=[];

function listNonGoogleMimetypesInDrive() {
  getFnF();
  Logger.log(JSON.stringify(list));
}

function getFnF(folder) {
  var folder= folder || DriveApp.getRootFolder();
  var files=folder.getFiles();
  while(files.hasNext()) {
    var file=files.next();
    var type=file.getMimeType();
    var name=file.getName();
    if(!type.match(/google/i)) {
      list.push(file.getName());
    }
  }
  var subfolders=folder.getFolders() 
  while(subfolders.hasNext()) {
    var subfolder=subfolders.next();
    getFnF(subfolder);
  }
}
这可能需要一段时间才能完成整个驱动器。这花了我大约2分钟,但我没有那么多,因为我只是在我的帐户上做了很多编程

此版本还包括所有者电子邮件

function getFnF(folder) {
  var folder= folder || DriveApp.getRootFolder();
  var files=folder.getFiles();
  while(files.hasNext()) {
    var file=files.next();
    var type=file.getMimeType();
    var name=file.getName();
    var owner=file.getOwner().getEmail();
    if(!type.match(/google/i) && owner!='your email address') {
      list.push(file.getName());
    }
  }
  var subfolders=folder.getFolders() 
  while(subfolders.hasNext()) {
    var subfolder=subfolders.next();
    getFnF(subfolder);
  }
}

非常感谢你的回答,库珀。但我一直在使用“searchFiles”功能,因为迭代速度更快,因为我有无数的文件和文件夹。如果我迭代每个文件夹和文件,我将达到执行时间限制。所以我需要使用这个“seachfiles”解决方案。你使用页面令牌吗?非常感谢你的回答。但我一直在使用“searchFiles”功能,因为迭代速度更快,因为我有无数的文件和文件夹。如果我迭代每个文件夹和文件,我将达到执行时间限制。所以我需要使用这个“seachfiles”解决方案。你使用页面令牌吗?Ps。我需要使用“searchFiles”功能,因为我的驱动器上有很多文件夹和文件,如果我使用其他方法,我将达到执行时间限制。Ps。我需要使用“searchFiles”功能,因为我的驱动器上有太多的文件夹和文件,如果我使用其他方法,我将达到执行时间限制。