I have this code for deleting duplicate files, but it doesnβt work as desired, it is in the spreadsheet and you go to the tools and click on the script manager and get three buttons
Startprocess
mark Duplicates
deleteDuplicates
The first one extracts the files, the second one duplicates the files in light red, and the third one supposedly deletes them and turns them red, although what he does is turn them only into yellow, and I cannot go there to find the error , please help me
function startProcess(){ PropertiesService.getScriptProperties().deleteAllProperties(); try{ ScriptApp.deleteTrigger(ScriptApp.getProjectTriggers()[0]); }catch(e){} var sh = SpreadsheetApp.getActiveSheet(); sh.getDataRange().clear(); sh.getRange(1,1,1,4).setValues([['fileName (logged @'+Utilities.formatDate(new Date(),Session.getScriptTimeZone(),'MMM-dd-yyyy HH:mm')+')','fileSize','parent folders tree','fileID']]); var trig = ScriptApp.newTrigger('getDriveFilesList_').timeBased().everyMinutes(5).create(); Logger.log(trig.getUniqueId()+' '+trig.getHandlerFunction()); getDriveFilesList_(); } function getDriveFilesList_(){ var content = []; var startTime = new Date().getTime(); var sh = SpreadsheetApp.getActiveSheet(); if( ! PropertiesService.getScriptProperties().getProperty('numberOfFiles')){ PropertiesService.getScriptProperties().setProperty('numberOfFiles',0); } var numberOfFiles = Number(PropertiesService.getScriptProperties().getProperty('numberOfFiles')); Logger.log(numberOfFiles); var max = numberOfFiles+10000; if( ! PropertiesService.getScriptProperties().getProperty('continuationToken')){ var files = DriveApp.getFiles(); // var files = DriveApp.getFolderById('0B3qSFd_____MTFZMDQ').getFiles();// use this line and comment the above if you want to process a single folder // use your chozen folder ID of course (available from the browser url , the part after "https://drive.google.com/?authuser=0#folders/") }else{ var files = DriveApp.continueFileIterator(PropertiesService.getScriptProperties().getProperty('continuationToken')) } while(files.hasNext() && numberOfFiles<(max)){ var file = files.next() if(file.getSize()>0){ numberOfFiles++; var folder = '(shared)'; if(file.getParents().hasNext()){folder = getTree_(file)} content.push([file.getName(),file.getSize(),folder,file.getId()]) } if(new Date().getTime()-startTime > 250000){break}; } sh.getRange(sh.getLastRow()+1,1,content.length,content[0].length).setValues(content); if(!files.hasNext()){ScriptApp.deleteTrigger(ScriptApp.getProjectTriggers()[0]);Logger.log('done !'); sh.getRange(sh.getLastRow()+1,1).setValue('All files processed ('+numberOfFiles+' found)')}; var continuationToken = files.getContinuationToken() PropertiesService.getScriptProperties().setProperty('numberOfFiles',numberOfFiles); PropertiesService.getScriptProperties().setProperty('continuationToken',continuationToken); } function markDuplicates(){ handleDuplicates_(false) } function trashDuplicates(){ handleDuplicates_(true) } function handleDuplicates_(trash){ var sh = SpreadsheetApp.getActiveSheet(); sh.setFrozenRows(1); sh.sort(1); var data = sh.getDataRange().getValues() var headers = data.shift() var lastComment = data.pop(); var toDelete = []; var item = data[0]; for(var n=1 ; n<data.length; n++){ if(data[n][0]==item[0] && data[n][1]==item[1]){ toDelete.push('delete '+ n); } item=data[n]; } var marker = sh.getRange(2,1,data.length,1).getBackgrounds(); for(var n in data){ if(!trash){marker.push(['#FFF'])}; if(toDelete.indexOf('delete '+n)>-1 && !trash){ marker[n][0] = '#F99'; } if(toDelete.indexOf('delete '+n)>-1 && trash){ if(marker[n][0]==='#ff9999'){ try{ DriveApp.getFileById(data[n][3]).setTrashed(trash); marker[n][0] = '#F33'; }catch(err){Logger.log(err)} }else{ marker[n][0] = '#FF9'; 3 } } } sh.getRange(2,1,marker.length,1).setBackgrounds(marker); } function getTree_(file){ var tree = []; var folderP = file.getParents() while (folderP.hasNext()){ var folder = folderP.next(); folderP = folder.getParents(); tree.push(folder.getName()); } return tree.reverse().join('/'); }
source share