2013-10-27 17 views

答えて

8

ドライブにスクリプトを作成したり、エディタなどを管理する方法を知っているところで、Google Apps Scriptに慣れていると仮定します。ここから始めてください。https://developers.google.com/apps-script/overview

すべてのファイルをリストし、ゴミ箱にセットする小さなスクリプトですが、ごみ箱に移動して永遠に削除する必要があります。このスクリプトを使用した場合

は注意が:すべてのファイルはあなたがfile.setTrashed(真の)コメントを解除する必要があります

をゴミ箱に移動しますが、この

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

を実行するときは、潜在的に非常に残されるかもしれません多くのフォルダ(何らかの理由でプログラム的に作成されている場合);)この小さなスクリプトを実行して、それらをゴミ箱に移動することができます。下の行のコメントを外すことを忘れないでください。

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

どのようにあなたのために働くか教えてください。私は非常にpatt0の(最高の)答えは、私の個人的な快適さのためにいくつかの機能を追加することによって、(ほんの少し:-)それを改善しようとしたことにより、interrestedた

+0

Thフォルダの更新(とコメントのために:-)(+ 1upvote) –

+0

これは、setTrashed()を含む行のコメントが外されると、サーバエラーを生成し続けます。私はこれがスクリプトファイル自体を削除することと関係があると思ったが、@Sergeinsasの答えはその行にサーバーエラーも生成する。 – jrhorn424

+0

私のために箱からすぐ外に出ました(それは私に仕事の一日を保存しました - 私は〜50GBを削除する必要がありました)。 – Parzival

3

...ここ

はちょうど、私が来たものです情報のために(追加されたデータのロギングは削除されないので、何が起こったのかを追跡することができます)、またはコメント付きで実行するとどうなるでしょうかsetTrashed()- 簡単アクセスのためのログデータdoc URL)

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

Sergeのログに良いものを追加しました。私の基本的なバージョンのフォルダに対処するための機能... – patt0

+1

素敵なスタッフは、ここで2つのスクリプトを実行し、すべてのファイルを削除しました。 まだ削除されたファイルのログが生成されました。あまりにもありがとう。 –

+0

うれしかった、それは面白いものでした:-) –

関連する問題