2016-02-26 193 views
1

我試圖複製到步驟 https://ctrlq.org/code/19854-list-files-in-google-drive-folder谷歌腳本應用程序列表驅動器文件夾

它成功地在表中的列標題,但沒有得到/打印的任何數據行。我哪裏做錯了?

這是我有:

/* Code written by @hubgit 
    https://gist.github.com/hubgit/3755293 
    Updated since DocsList is deprecated 
*/ 

function listFilesInFolder(folderName) { 

    var folder = DriveApp.getFoldersByName(folderName).next(); 
    var contents = folder.getFiles(); 

    var file, data, sheet = SpreadsheetApp.getActiveSheet(); 
    sheet.clear(); 

    sheet.appendRow(["Name", "Date", "Size", "URL", "Download", "Description", "Type"]); 

    for (var i = 0; i < contents.length; i++) { 

    file = contents[i]; 

    if (file.getFileType() == "SPREADSHEET") { 
     continue; 
    } 

    data = [ 
     file.getName(), 
     file.getDateCreated(), 
     file.getSize(), 
     file.getUrl(), 
     "https://docs.google.com/uc?export=download&confirm=no_antivirus&id=" + file.getId(), 
     file.getDescription(), 
     file.getFileType().toString() 
    ]; 

    sheet.appendRow(data); 

    } 

}; 

感謝,

+1

您需要調試代碼。 'listFilesInFolder'函數是否接收到'folderName'?在函數的最頂端添加這行代碼:'Logger.log('folderName:'+ folderName);'。運行代碼,然後在VIEW菜單中選擇LOGS。日誌中是否打印了正確的文件夾名稱? –

+0

謝謝@SandyGood。使用添加的部分運行時,我遇到了新的錯誤。 無法檢索下一個對象:迭代器已到達結尾。 (第8行,......) – rin

+0

每當我試圖找到一個新的解決方案時,都會出現一個新的錯誤,如果使用docList,它會被折舊,如果我使用while(contents.hasNext()){ ( – rin

回答

1

您需要根據您的需要定製代碼。首先在ListFilesInFolder(folderName)沒有通過,因此刪除了folderName部分。然後嘗試一個特定的文件夾名稱。接下來,如果我們不想限制到電子表格。我們需要刪除行:

if (file.getFileType() == "SPREADSHEET") { 
     continue; 
    } 

還有就是,事實上,不需要一個for loopcontents.hasNext()就足夠了。所以這個功能最終會是這樣的。這是工作。

function listFilesInFolder() { 

    var folder = DriveApp.getFoldersByName('SRL').next(); 
    Logger.log(folder); 
    var contents = folder.getFiles(); 
    Logger.log(contents); 

    var file, data, sheet = SpreadsheetApp.getActiveSheet(); 
    sheet.clear(); 

    sheet.appendRow(["Name", "Date", "Size", "URL", "Download", "Description", "Type"]); 


    if (contents.hasNext()) { 

     file = contents.next(); 

     Logger.log(file); 

     data = [ 
     file.getName(), 
     file.getDateCreated(), 
     file.getSize(), 
     file.getUrl(), 
     "https://docs.google.com/uc?export=download&confirm=no_antivirus&id=" + file.getId(), 
     file.getDescription(), 

    ]; 

    sheet.appendRow(data); 


} 

}; 
1

下面的作品,如果你硬編碼在文件夾ID

還有a deeper discussion here

function listFilesInFolder(folderName) { 

    var sheet = SpreadsheetApp.getActiveSheet(); 
    sheet.appendRow(["Name", "Date", "Size", "URL", "Download", "Description", "Type"]); 

    var folder = DriveApp.getFolderById("PUT_YOUR_FOLDERID_IN_HERE"); 
    //Logger.log(folder); 
    var contents = folder.getFiles(); 

    var cnt = 0; 
    var file; 

    while (contents.hasNext()) { 
     var file = contents.next(); 
     cnt++; 

     Logger.log(file); 
     Logger.log(cnt); 

      data = [ 
       file.getName(), 
       file.getDateCreated(), 
       file.getSize(), 
       file.getUrl(), 
       "https://docs.google.com/uc?export=download&confirm=no_antivirus&id=" + file.getId(), 
       file.getDescription(), 
       file.getMimeType(), 
      ]; 

      sheet.appendRow(data); 



    }; 
}; 
相關問題