2015-05-19 81 views
2

我已經有一個搜索,但似乎無法找到我在找什麼。谷歌應用程序腳本文件夾中的文件計數

我尋求的代碼,使我能夠做到這一點的僞代碼:在特定的谷歌雲端硬盤文件夾的文件

  1. 計數次數(通過文件夾ID)
  2. 如果文件數超過「X」做到這一點{其他的代碼}
  3. 否則,退出

誰能幫助我嗎?

回答

5

我找不到任何方法來給出文件的數量計數,所以我想你會通過每一個文件需要循環,並有一個計數器:

function countFilesInFolder() { 
    var count,file,files,theFolder;//Define variables without assigning a value 

    theFolder = DriveApp.getFolderById('your file ID'); 
    files = theFolder.getFiles(); 

    count = 0; 

    while (files.hasNext()) { 
    count++; 
    file = files.next(); 
    //Logger.log(file.getName()); 
    if (count > 5) { 
    fncNextFunction(); 
    break; 
    }; 
}; 

    Logger.log(count); 
}; 

function fncNextFunction() { 
    Logger.log('fncNextFunction'); 

}; 

注:如果我只有計數器增量沒有得到下一個文件,腳本編輯器就會凍結。

下面是使用先進的硬盤服務的另一種方法:

//This requires the Drive API To be turned on in the Advanced Google Services 
function countFilesInFolder() { 

var query = 'trashed = false and ' + 
     "'Your Folder ID here' in parents"; 

    var filesInFolder = Drive.Files.list({q: query}); 

    Logger.log('filesInFolder: ' + filesInFolder.items.length); 

    for (var i=0;i<filesInFolder.items.length;i++) { 
    //Logger.log('key: ' + key); 
    var thisItem = filesInFolder.items[i]; 
    Logger.log('value: ' + thisItem.title); 
    }; 
}; 

對於使用頁面標記列出超過100個結果的一個例子,看到The Documentation

+0

我不熟悉的應用程序腳本,以便這可能會脫離基地,但我可能會建議您查看高級雲端硬盤服務。這樣可以提高效率。首先,你可以指定你想要返回哪些文件屬性,這將最大限度地減少需要發送的數據量,這會使事情變得更快。在你的情況下,你並不需要任何屬性,所以(我猜)你會得到一個空對象數組。其次,您可以簡單地將數組數添加到累加器,然後重複每個頁面令牌,因此不需要迭代文件對象。 – pinoyyid

+0

我使用先進的Drive Service爲答案添加了另一種方法。 –

+0

你沒有循環nextpagetoken,所以只能看到最多100個文件 – pinoyyid

相關問題