1

Ich habe einen Ordner in meinem Laufwerk, der mehrere "Client" -Ordner enthält. Jeder Client-Ordner hat dieselbe Struktur, die einen Ordner enthält, der vollständige Rechnungen enthält ("Abgeschlossene Rechnungen").Wie listet man alle Dateien in Google Drive in einem Ordner mit einem festgelegten Namen auf?

folder structure

ich einen Weg brauchen die alle Ordner durchlaufen die Tabelle IDs in diesen Ordnern so kann ich Schleife durch diese Dateien später und Extrahieren von Daten aus ihnen benannt „Completed Rechnungen“ und die Liste in einer Google-Blatt.

Ich habe mehrere Code-Quellen gefunden, die funktionieren, aber nur auf der ersten Ebene - d. H. Es listet die Dateien im Ordner agents/clients auf, aber es geht nicht in die Unterordner. Z.B. Siehe Code unter

+0

Da alle Unter-Ordner den gleichen Namen haben, können Sie sie alle auf einmal mit 'DriveApp.getFoldersByName bekommen kann (name) 'Wenn Sie nichts aus dem übergeordneten Ordner benötigen, können Sie das verwenden. Wenn der Name des übergeordneten Ordners benötigt wird, könnten Sie Folgendes verwenden: 'var folders = DriveApp.getFoldersByName (name); var parentFldrs = folders.next(). getParents(); ' –

+0

Danke für die Richtung Sandy - Ich versuche, den obigen Code zu verwenden, um die Dateien mit Ihrem Vorschlag aufzulisten, aber die Ausgabe ist leer. Irgendwelche Vorschläge? – Tiana

+0

zeigen Sie Ihren aktualisierten Versuch in der Frage und welcher Teil fehlschlägt. –

Antwort

0

Erstellen Sie einen neuen Ordner mit dem Namen "Abgeschlossene Rechnungen" und fügen Sie die Rechnungen diesem Ordner hinzu. Dann müssen Sie nur in einem einzigen Ordner suchen. Dies ist möglich, weil Ordner in Google Drive einfach Tags sind und eine Datei mehrere übergeordnete Ordner haben kann.

+0

Leider ist dies keine machbare Lösung, da ich nur diese Ordner überwache - sie werden mit anderen geteilt, die sie füllen. Danke für den Vorschlag, wenn es nur so einfach wäre! – Tiana

1

Vielen Dank für Ihre Antworten, aber nach einigem Suchen fand ich meine Antwort. Für alle, die für eine ähnliche Lösung sucht - fand ich eine ausgezeichnete Skript here, die eine wirklich robuste Ausgabe bereitstellt, die ich mir vorstellen kann für eine Vielzahl von unterschiedlichen Szenarien eingesetzt werden:

/** 
* Google Apps Script - List all files & folders in a Google Drive folder, & write into a speadsheet. 
* - Main function 1: List all folders 
* - Main function 2: List all files & folders 
* 
* Hint: Set your folder ID first! You may copy the folder ID from the browser's address field. 
*  The folder ID is everything after the 'folders/' portion of the URL. 
* 
* @version 1.0 
* @see  https://github.com/mesgarpour 
*/ 

// TODO: Set folder ID 
var folderId = 'My folder ID'; 

// Main function 1: List all folders, & write into the current sheet. 
function listFolers(){ 
    getFolderTree(folderId, false); 
}; 

// Main function 2: List all files & folders, & write into the current sheet. 
function listAll(){ 
    getFolderTree(folderId, true); 
}; 

// ================= 
// Get Folder Tree 
function getFolderTree(folderId, listAll) { 
    try { 
    // Get folder by id 
    var parentFolder = DriveApp.getFolderById(folderId); 

    // Initialise the sheet 
    var file, data, sheet = SpreadsheetApp.getActiveSheet(); 
    sheet.clear(); 
    sheet.appendRow(["Full Path", "Name", "Date", "URL", "Last Updated", "Description", "Size"]); 

    // Get files and folders 
    getChildFolders(parentFolder.getName(), parentFolder, data, sheet, listAll); 

    } catch (e) { 
    Logger.log(e.toString()); 
    } 
}; 

// Get the list of files and folders and their metadata in recursive mode 
function getChildFolders(parentName, parent, data, sheet, listAll) { 
    var childFolders = parent.getFolders(); 

    // List folders inside the folder 
    while (childFolders.hasNext()) { 
    var childFolder = childFolders.next(); 
    // Logger.log("Folder Name: " + childFolder.getName()); 
    data = [ 
     parentName + "/" + childFolder.getName(), 
     childFolder.getName(), 
     childFolder.getDateCreated(), 
     childFolder.getUrl(), 
     childFolder.getLastUpdated(), 
     childFolder.getDescription(), 
     childFolder.getSize() 
    ]; 
    // Write 
    sheet.appendRow(data); 

    // List files inside the folder 
    var files = childFolder.getFiles(); 
    while (listAll & files.hasNext()) { 
     var childFile = files.next(); 
     // Logger.log("File Name: " + childFile.getName()); 
     data = [ 
     parentName + "/" + childFolder.getName() + "/" + childFile.getName(), 
     childFile.getName(), 
     childFile.getDateCreated(), 
     childFile.getUrl(), 
     childFile.getLastUpdated(), 
     childFile.getDescription(), 
     childFile.getSize() 
     ]; 
     // Write 
     sheet.appendRow(data); 
    } 

    // Recursive call of the subfolder 
    getChildFolders(parentName + "/" + childFolder.getName(), childFolder, data, sheet, listAll); 
    } 
}; 
0

-Code über depricated werden können (didn‘ t Arbeit für mich). Sie können dies versuchen und dann die Ausgabe in den Ausführungsprotokolle anzeigen (Zugriff per Hotkey STRG + ENTER)

function generateFolderTree() { 

    try { 

    // If you want a tree of any sub folder 
    //var parent = DriveApp.getFoldersByName("FOLDER_NAME").next(); 

    // If you want to search from the top (root) folder 
    var parentFolder = DriveApp.getRootFolder(); 

    getChildFolders(parentFolder); 

    } catch (e) { 

    Logger.log(e.toString()); 

    } 

} 


function getChildFolders(parent) { 

    var childFolders = parent.getFolders(); 

    while (childFolders.hasNext()) { 

    var childFolder = childFolders.next(); 

    Logger.log("Folder Name: " + childFolder.getName()); 
    Logger.log("Folder URL: " + childFolder.getUrl()); 

    var files = childFolder.getFiles(); 

    while (files.hasNext()) { 
     var file = files.next(); 
     // Print list of files inside the folder 
     Logger.log(file.getName() + ', ' + file.getUrl()); 
    } 
    // Recursive call for any sub-folders 
    getChildFolders(childFolder); 

    } 

} 
Verwandte Themen