kurokirasama
kurokirasama

Reputation: 777

delete some google drive files in a folder by search

I'm trying to delete some files from my drive using this:

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');
  }
}

But i get Error: Invalid argument:q in all commented lines, even in the while loop. The first logger shows Folder Iterator, so every should be fine...

Files exist! and all have different names, but they have in common "720p" in their names.

Besides, and i haven't been able to implement this yet, i only need to delete these files that are only in one specific folder.

Upvotes: 1

Views: 295

Answers (5)

OblongMedulla
OblongMedulla

Reputation: 1595

It appears your searchterm is in the middle or at the end of the file name or title. Try using this, it seems to work for me. 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)
 }
}
 

Upvotes: 1

kurokirasama
kurokirasama

Reputation: 777

i found a solution, but it is not efficient, please feel free to provide a more efficient one:

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);  
    }     
  }
}

Upvotes: 1

OblongMedulla
OblongMedulla

Reputation: 1595

here is another way, using searchFiles technique

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)
 }
}

Upvotes: 0

pinoyyid
pinoyyid

Reputation: 22286

Look at the Advanced Drive Service and the Query option "title contains xxxx"

Upvotes: 0

OblongMedulla
OblongMedulla

Reputation: 1595

could try something like this-

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)
 }
}

Upvotes: 0

Related Questions