2013-01-09 125 views
5

如何編寫Google Apps腳本來刪除Root驅動器中創建的文件? 我能夠找到他們使用:Google應用腳本:如何在Google雲端硬盤中刪除文件?

var ExistingFiles=DocsList.find(fileName); 

但我不知道如何通過腳本來刪除它們。 我知道如何使用DocsList.createFile,但DocsList.deleteFile不存在解決我的問題。

有沒有辦法將這些文件移動到另一個文件夾或垃圾箱?

我會考慮的另一種解決方法是能夠覆蓋具有相同名稱的現有文件。 當前,當我想創建一個名稱已在MyDrive中使用的文件時,它會創建一個具有相同名稱的第二個文件。我想保留1個文件(新文件保留,舊文件丟失)。

回答

7

此代碼使用現在已棄用的DocsList類。

試試這個:

function test(){ 
deleteDocByName('Name-of-the-file-to-delete') 
} 

function deleteDocByName(fileName){ 
    var docs=DocsList.find(fileName) 
    for(n=0;n<docs.length;++n){ 
    if(docs[n].getName() == fileName){ 
     var ID = docs[n].getId() 
     DocsList.getFileById(ID).setTrashed(true) 
     } 
    } 
    } 

,因爲你可以有很多文檔名稱相同的我用一個for循環得到所有的文檔文件的陣列中,如果需要刪除它們一個接一個。

我使用了一個名稱爲參數的函數來簡化它在腳本中的使用,使用測試函數來嘗試它。

注:請注意,所有使用該名稱的文件將被丟棄(和可恢復;-)

關於你的問題關於保持最近並刪除舊的最後一部分,這將是(通過閱讀上次訪問日期&時間),但我認爲在創建一個具有相同名稱的新文件之前刪除舊文件是一個更好的主意......更加合乎邏輯和安全!

+0

它的工作原理!謝謝很多謝爾 – user1962847

+0

很高興幫助 - 請標記爲答案:-) –

+0

@Sergeinsas我知道這是一個過時的問題,但我希望你仍然可以幫助創建一個循環,將刪除較舊的文件與較新的文件。我試圖找出如何查看文件夾中的所有文件,這些文件總是有6個文件的名稱保持一致,所以我只需要一個例程腳本,它將每24小時刪除每個文件的舊版本。我知道這不是最安全的選擇,但根據我的情況它是最好的選擇之一。特別是因爲只有我自己管理這些文件,所以不需要共享驅動器。 – CaffeinatedCoder

8

服務DocsList已被棄用。此答案使用較新的DriveApp服務。

如果您不想清除垃圾桶,還有另一種方法可以在不將垃圾箱發送到垃圾箱的情況下刪除文件。 Apps腳本中的高級驅動器服務有一個remove方法,該方法不會將文件發送到垃圾箱。

var eachFile, idToDLET, myFolder, rtrnFromDLET, thisFile; 

myFolder = DriveApp.getFolderById('Put_The_Folder_ID_Here'); 

thisFile = myFolder.getFilesByName(myFileName); 

while (thisFile.hasNext()) {//If there is another element in the iterator 
    eachFile = thisFile.next(); 
    idToDLET = eachFile.getId(); 
    //Logger.log('idToDLET: ' + idToDLET); 

    rtrnFromDLET = Drive.Files.remove(idToDLET); 
}; 

這結合了DriveApp服務和Drive API刪除文件而不將它發送到垃圾箱。 Drive API方法.remove(id)需要文件ID。如果文件ID不可用,但文件名是,則可以首先按名稱查找文件,然後獲取文件ID。

爲了使用DriveAPI,您需要通過資源高級谷歌服務菜單添加它。將Drive API設置爲ONAND確保您的Google Developers Console中的Drive API處於打開狀態。如果在BOTH地方沒有開啓,則它將不可用。

1

現在如果文件是電子表格,文檔等,則可以使用以下內容:

DriveApp.getFileById(spreadsheet.getId()).setTrashed(true); 

,或者如果你已經擁有的文件,而不是一個電子表格,文檔等,你可以使用:

file.setTrashed(true); 
相關問題