2015-11-25 101 views
0

如果您只是想刪除一個文件夾,沒什麼特別的,可以使用它。如何使用Google AppScript刪除Google雲端硬盤中的特定文件夾

var folderIteratorName = DriveApp.getRootFolder().getFoldersByName("Folder Name"); // folder iterator 
folderIteratorName.next().setTrashed(true); 

背景信息如下。 DriveApp getFolder方法返回一個文件夾迭代器,其文檔僅給出三種方法。沒有提到的是,你必須調用.next()方法,即使迭代器在這種情況下只有一個項目,實際上獲得文件夾,然後你可以調用setTrashed(true)來擺脫它。

我在兩天內找不到這個簡單問題的答案,直到我在一個切線相關的問題中碰到了一些ScampMichael的代碼。

function myFunction() { 
var files = DriveApp.getFilesByName('data'); 
while (files.hasNext()) { 
    files.next().setTrashed(true); 
    } 
    } 

的文件夾中的文檔列出removeFolder(子)作爲一個選項,但它沒有明確如何實際調用這個因爲有任何的DriveApp,文件夾,或FolderIterator在提供的類的幾個例子文檔。

DriveApp.removeFolder("folder name"); 

因爲removeFolder需要一個'child',所以不起作用。從概念上講,大多數程序員知道什麼是孩子,但是找到關於'孩子'數據結構的文檔,或者爲該方法指定它的精確度,在文檔中沒有說明,也沒有提供任何示例。

如果有人有更優雅的解決方案,請分享。我已經提出了這個問題和答案,主要針對與我的類似問題的其他人,以便他們至少有一種方法可行。

+0

因此,第一部分的代碼確實有效,但您試圖查看是否有更直觀的東西? – Matt

回答

1

您不需要使用getRootFolder()

除此之外,沒有更好,更快的方法來刪除DriveApp文件夾。在Google雲端硬盤中,您可以將文件和文件夾命名爲完全相同的名稱。您可以有100個名爲「我的文件夾」的文件夾。您可以有500個名爲「無標題電子表格」的文件。這就是爲什麼必須有一個文件夾迭代器和文件迭代器。

function deleteFolder(folderName) { 
    if (folderName===undefined) { 
    folderName = "Test" 
    }; 

    var folderToDelete = DriveApp.getFoldersByName(folderName).next(); 
    var returnedFolder = folderToDelete.setTrashed(true); 
    Logger.log('returnedFolder is trashed: ' + returnedFolder.isTrashed()); 
}; 
相關問題