2012-08-14 89 views
4

請幫我將項目與Google Drive集成。 問題是Google雲端硬盤垃圾文件夾永遠不會被清空,因此最終Google雲端硬盤與桌面的同步功能會因缺少空間而停止工作。谷歌驅動器 - 如何從代碼清空垃圾(以編程方式)?

我需要或者到垃圾桶配置時不攜帶被刪除的文件(優先選擇)或從C#代碼(不太優選),或其它編程語言(不得已的選擇)編程清空。

如何從代碼或腳本或任何清空谷歌雲端硬盤迴收站?

回答

6

的谷歌雲端硬盤API不公開的方法來清空回收站,但它有一個delete方法要永久刪除文件,而送他們到垃圾桶:

https://developers.google.com/drive/v2/reference/files/delete

您也可以檢索文件從檢查Files resourcetrashed標籤,然後調用delete他們的垃圾。

+0

非常感謝您對這些澄清,我也發現通過WebDAV的東西刪除文件(感謝DAV掌上http://dav-pocket.appspot.com/)不將文件移動到回收站,但apparenty執行你的DELETE命令,因此該方案去用最少的代碼,我會給嘗試一下。 對不起,我不能標記你的答案是有用的,因爲我沒有足夠的「信譽」點 – 2012-08-15 07:33:32

0

這裏是一個完整的解決方案:

1)創建您的驅動器

2上的空腳本)將以下代碼粘貼:

function doGet() { 
    try{ 
    authorize();  
    var key = "YOUR DEVELOPER KEY"; 
    var params = {method:"DELETE", 
       oAuthServiceName: "drive", 
       oAuthUseToken: "always" 
       }; 
    UrlFetchApp.fetch("https://www.googleapis.com/drive/v2/files/trash?key="+key,  params); 
    } 
    catch(error) 
    { 
    MailApp.sendEmail("<some email>", "EMPTY TRASH BIN ERROR:<br>"+error);  
    return; 
    } 
} 

function authorize() { 
    var oauthConfig = UrlFetchApp.addOAuthService("drive"); 
    var scope = "https://www.googleapis.com/auth/drive"; 
    oauthConfig.setConsumerKey("anonymous"); 
    oauthConfig.setConsumerSecret("anonymous"); 
    oauthConfig.setRequestTokenUrl("https://www.google.com/accounts/OAuthGetRequestToken?  scope="+scope); 
    oauthConfig.setAuthorizationUrl("https://accounts.google.com/OAuthAuthorizeToken");  
    oauthConfig.setAccessTokenUrl("https://www.google.com/accounts/OAuthGetAccessToken"); 
} 

3)部署腳本的Web應用程序

4)點擊頂欄上的時鐘,並創建一個調用doGet方法的觸發器

這將清空正在創建觸發器的用戶的垃圾。

1

這裏一個較短的版本,我試圖使用上述解決方案,但沒有運氣。

function emptydrivetrash() { 
    Drive.Files.emptyTrash(); 
} 

所有你需要做的是讓德驅動器API,在資源菜單 - >谷歌高級服務,並在谷歌開發者控制檯...