通过搜索删除文件夹中的一些 google 个驱动器文件

delete some google drive files in a folder by search

我正在尝试使用此方法从我的驱动器中删除一些文件:

function deleteFiles(){
var files = DriveApp.searchFiles('title:720p');
  Logger.log(files);
  //Logger.log(files.next().getName);
  while (files.hasNext()) {
   // files.next().setTrashed(true);
    //Logger.log(files.next().getName());
    Logger.log('hola');
  }
}

但我在所有注释行中得到 Error: Invalid argument:q,即使在 while 循环中也是如此。第一个记录器显示文件夹迭代器,所以每个都应该没问题...

文件存在!他们都有不同的名字,但他们的名字中有一个共同点“720p”。

此外,我还没有能够实现这个,我只需要删除这些只在一个特定文件夹中的文件。

可以试试这样的-

function deleteFiles() {
// Log the name of every file named "12345test" in the user's Drive.
 var files = DriveApp.getFilesByName('12345test');
 while (files.hasNext()) {
   var file = files.next();
   Logger.log(file.getName());
  // file.setTrashed(true)
 }
}

查看高级驱动服务和查询选项"title contains xxxx"

这是另一种方法,使用 searchFiles 技术

function deleteFiles() {
  var searchTerm = "12345test"
  var searchFor ="title contains '" + searchTerm + "'"; //single quotes are needed around searchterm
 var files = DriveApp.searchFiles(searchFor); 
 while (files.hasNext()) {
   var file = files.next();
   Logger.log(file.getName());
  // file.setTrashed(true)
 }
}

我找到了解决方案,但效率不高,请随时提供更高效的解决方案:

function deleteFiles(){    
  var folder = DriveApp.getFoldersByName('MyFolder').next();
  var files = folder.getFiles();
  while (files.hasNext()) { 
    var file = files.next();
    var filename = file.getName();
    if (filename.indexOf("720p")>-1){
    Logger.log(filename);
    file.setTrashed(true);  
    }     
  }
}

您的搜索词似乎位于文件名或标题的中间或末尾。尝试使用它,它似乎对我有用。 https://developers.google.com/drive/v3/web/search-parameters

function deleteFiles() {
  var searchTerm = "12345test"
  var searchFor ="fullText contains '" + searchTerm + "'"; //single quotes are needed around searchterm
 var files = DriveApp.searchFiles(searchFor); 
 while (files.hasNext()) {
   var file = files.next();
   Logger.log(file.getName());
  // file.setTrashed(true)
 }
}