2013-10-27 29 views

Odpowiedz

8

Założę się, że znasz Skrypt Google Apps do tego stopnia, że ​​wiesz, jak utworzyć skrypt na dysku, zarządzać edytorem itp. ... jeśli nie jesteś, zacznij tutaj https://developers.google.com/apps-script/overview.

Tutaj mały skrypt, który wyświetli wszystkie twoje pliki i wyrzuci je do kosza, nadal będziesz musiał przejść do kosza i usunąć go na zawsze.

Bądź ostrożny używając tego skryptu: przenosić wszystkie pliki do kosza

Musisz odkomentuj file.setTrashed (true) po uruchomieniu tego

function processAllFiles() { 
    // we look for the continuation token from the UserProperties 
    // this is useful as the script may take more that 5 minutes 
    // (exceed execution time) 
    var continuationToken = UserProperties.getProperty('DELETE_ALL_FILES_CONTINUATION_TOKEN'); 

    if (continuationToken == null) { 
    // firt time execution, get all files from drive 
    var files = DriveApp.getFiles(); 
    // get the token and store it in a user property 
    var continuationToken = files.getContinuationToken(); 
    UserProperties.setProperty('DELETE_ALL_FILES_CONTINUATION_TOKEN', continuationToken); 
    } else { 
    // we continue to execute (and move everything to trash) 
    var files = DriveApp.continueFileIterator(continuationToken); 
    } 

    while (files.hasNext()) { 
    var file = files.next(); 
//  file.setTrashed(true); 
    Logger.log(file.getName()); 
    } 

    // finish processing delete the token 
    UserProperties.deleteProperty('DELETE_ALL_FILES_CONTINUATION_TOKEN'); 
} 

Możesz być potencjalnie pozostaje bardzo wiele folderów (jeśli zostały stworzone programowo z jakiegoś powodu;)), więc możesz uruchomić ten mały skrypt, aby dobrze przenieść go do kosza. Nie zapomnij odkomentować linii, która się liczy poniżej.

function processAllFolder() { 
// Log the name of every folder in the user's Drive. 
    var folders = DriveApp.getFolders(); 
    while (folders.hasNext()) { 
    var folder = folders.next(); 
    Logger.log(folder.getName()); 
    // folder.setTrashed(true); 
    } 
}; 

Daj mi znać, jak to działa.

+0

Th anki do aktualizacji folderu (a także do komentarza :-) (+ 1upvote) –

+0

Powoduje to generowanie błędu serwera, gdy wiersz zawierający setTrashed() zostanie odkomentowany. Podejrzewałem, że miało to związek z usunięciem samego pliku skryptu, ale odpowiedź @Sergeinsas generuje również błąd serwera w tym wierszu. – jrhorn424

+0

Dla mnie, od razu po wyjęciu z pudełka (zaoszczędziło mi to cały dzień pracy - miałem do usunięcia ~ 50GB). – Parzival

3

byłem bardzo interrested przez (najlepsze) odpowiedź patt0 i starał się go poprawić (tylko trochę :-) dodając kilka funkcji dla mojego osobistego komfortu ...

Oto co przyszedł, po prostu dla informacji (dodane rejestrowanie danych zapisane w jednym dokumencie, który nie zostanie usunięty, dzięki czemu można śledzić, co się stało - lub co się stanie, jeśli uruchomisz go z komentarzemsetTrashed()- i wysłać wiadomość do ciebie z adres URL danych logowania dla łatwego dostępu)

function processAllFiles() { 
    var continuationToken = UserProperties.getProperty('DELETE_ALL_FILES_CONTINUATION_TOKEN'); 
    var numberOfFiles = Number(UserProperties.getProperty('Number_of_files_processed')); 
    var thisScriptFileId = DocsList.find("continuationToken = UserProperties.getProperty('DELETE_ALL_FILES_CONTINUATION_TOKEN')")[0].getId(); 
    Logger.log(thisScriptFileId); 
    if(UserProperties.getProperty('logFileId') == null){ 
    var logFileId = DocumentApp.create('Delete All Files Log data').getId(); 
    var doc = DocumentApp.openById(logFileId); 
    doc.getBody().appendParagraph('List of all the files you deleted\n\n'); 
    UserProperties.setProperty('logFileId', logFileId); 
    } 
    if (continuationToken == null) { 
    var files = DriveApp.getFiles(); 
    var continuationToken = files.getContinuationToken(); 
    UserProperties.setProperty('DELETE_ALL_FILES_CONTINUATION_TOKEN', continuationToken); 
    UserProperties.setProperty('Number_of_files_processed', '0'); 
    } else { 
    var files = DriveApp.continueFileIterator(continuationToken); 
    } 

    while (files.hasNext()) { 
    var file = files.next(); 
    if(file.getId()!=logFileId&&file.getId()!=thisScriptFileId){ 
//  file.setTrashed(true); 
     numberOfFiles++ 
     Logger.log('File '+Utilities.formatString("%05d", numberOfFiles)+' : '+file.getName()); 
    } 
    } 
    var paragraphStyle = {}; 
    paragraphStyle[DocumentApp.Attribute.FONT_SIZE] = 8 ; 

    var doc = DocumentApp.openById(UserProperties.getProperty('logFileId')); 
    doc.getBody().appendParagraph(Logger.getLog()).setAttributes(paragraphStyle); 
    MailApp.sendEmail(Session.getEffectiveUser().getEmail(),'DeleteFiles result Log','Here is the log data to your script :\n\n' 
        +doc.getUrl()+'\n\nExecuted by this script : '+DocsList.getFileById(thisScriptFileId).getUrl()); 
    // finish processing delete the token 
    UserProperties.deleteProperty('DELETE_ALL_FILES_CONTINUATION_TOKEN'); 
    UserProperties.deleteProperty('Number_of_files_processed'); 
} 
+1

Dobre rzeczy z logowaniem Serge, dodałem funkcja radzenia sobie z folderami w mojej podstawowej wersji ... – patt0

+1

Cudowny personel, uruchomił 2 skrypty tutaj i usunął wszystkie pliki. I nadal generowałem log usuniętych plików! Dziękuję bardzo. –

+0

Cieszę się, że pomogło, to było zabawne :-) –

Powiązane problemy