Mehrere Dateien von SharePoint herunterladen

Hallo zusammen,
ich versuche, alle Dateien aus einem bestimmten SharePoint-Ordner (z. B. /Shared Documents/Dana) mithilfe von n8n herunterzuladen.

Was ich getan habe

  1. Microsoft SharePoint Node → Resource: Item → Operation: Get Many

    • Dies gibt Items erfolgreich zurück.
    • Ich habe auch nach dem Ordner gefiltert (daher möchte ich nur Dateien unter /Dana).
  2. Dann durchlaufe ich die Ergebnisse mit Loop Over Items / Split In Batches und versuche:

    • Microsoft SharePoint Node → Resource: File → Operation: Download
    • Aber der Node unterstützt nur **„By ID

Hallo @dana_bida

Verwende statt der “Item”-Ressource die “File”-Ressource, um deine Dateien zu finden. Dies stellt sicher, dass die zurückgegebenen IDs mit dem Download-Vorgang kompatibel sind.

  1. Ersetze deinen ersten Node:
    • Ressource: File
    • Vorgang: List
  2. Konfiguriere den Ordner:
    • Im “List”-Vorgang kannst du den Ordnerpfad oder die ID angeben. Da du /Shared Documents/Dana verwenden möchtest, stelle sicher, dass du auf diesen spezifischen Ordner abzielst.
  3. Die Ausgabe:
    • Die id, die von Ressource: FileVorgang: List zurückgegeben wird, ist die DriveItem ID.
  4. Der Download-Node:
    • Übergib diese id direkt an Ressource: FileVorgang: Download. Dies wird den 400 Bad Request-Fehler nun beheben.

Falls der integrierte “File → List”-Vorgang dir nicht die genaue Filterung gibt, die du benötigst, kannst du die Microsoft Graph API direkt verwenden. Dies ist oft zuverlässiger für tiefe Ordnerstrukturen.

Schritt 1: Dateien im Ordner auflisten Verwende einen HTTP Request Node:

  • Methode: GET
  • URL: https://graph.microsoft.com/v1.0/sites/{{siteId}}/drive/root:/Shared Documents/Dana:/children
    • (Ersetze {{siteId}} mit deiner Site ID oder verwende das Hostname/Pfad-Format der Site).
  • Authentifizierung: Verwende die gleichen SharePoint/Microsoft-Anmeldedaten.

Schritt 2: Schleife und Download Die Antwort enthält ein value-Array. Jedes Objekt in diesem Array hat ein id-Feld. Diese id ist die driveItemId.

  • Übergib diese id an deinen bestehenden Microsoft SharePointRessource: FileVorgang: Download Node.

Hilft dir das weiter?

@dana_bida die ID von Item → Get Many ist die List-Item-ID, aber Download erwartet die driveItem-ID, daher dein 400er-Fehler. Die einfachste Lösung ist, den Download-Node ganz zu überspringen – der Graph-children-Aufruf gibt dir bereits einen vorsignierten Download-Link pro Datei, daher einfach GET aufrufen, keine ID-Manipulation nötig:

SETZ_ID gegen die parentReference.siteId ersetzen, die du bereits in deiner Ausgabe siehst, verwen deine bestehenden SharePoint-OAuth-Anmeldedaten beim ersten Node wiederverwendet und die Auth beim Download-Node auf „Keine

Nachdem Sie die Dateiliste erhalten haben, fügen Sie einen Filter-Knoten hinzu, um Dateien zu filtern, die in der Antwort vorhanden sind (d. h. {{ $json.file }} ist nicht leer), um automatisch Unterordner aus Ihrer Schleife auszuschließen. Andernfalls schlägt der Download-Schritt bei Ordnerelementen fehl, die sich in die Antwort der untergeordneten Elemente einschleichen.