🧩 Zusammenfassung
In vielen Automatisierungsszenarien mit n8n ist es sinnvoll, zufällig Dateien aus einem lokalen Ordner zu wählen – beispielsweise Bilder –, diese zu verarbeiten und anschließend zu verschieben. Doch was tun, wenn man verhindern möchte, dass ein Bild doppelt ausgewählt wird? Genau darum geht es in diesem Artikel: Wir analysieren ein reales Beispiel aus der n8n-Community, in dem ein Fehler im IF-Knoten die gewünschte Funktionalität blockiert. Ziel ist es, nur Bilder auszuwählen, die noch nicht verwendet wurden.
🔑 Zentrale Erkenntnisse
- • Der IF-Knoten kann durch falsche Datenstruktur zu einem `undefined`-Fehler führen
- • Die Prüfung auf bereits verwendete Dateien erfordert saubere Datenvergleiche (z. B. per JSON oder String-Matching)
- • Workarounds mit JavaScript-Funktionen und dem „Set“-Knoten helfen, den Workflow robuster zu gestalten
🛠 Praktische Anwendung: Bildauswahl ohne Wiederholung
Stellen wir uns folgendes Szenario vor:
- Ein n8n-Workflow soll zufällig ein Bild aus einem lokalen Ordner auswählen.
- Das gewählte Bild soll in einen Ordner „used_images“ verschoben werden.
- Der Workflow speichert alle bisher verwendeten Bilder in einer Liste.
- Vor jeder neuen Auswahl prüft n8n: Ist das aktuelle Bild bereits in der Liste? Falls ja, mache eine neue Auswahl.
Soweit die Theorie. Doch in der Praxis scheitert die Umsetzung häufig an einem unscheinbaren Detail: Der IF-Knoten meldet einen „undefined“-Fehler, weil er den Vergleichswert nicht korrekt erhält.
⚙️ Technische Details: Was genau schiefläuft
Der Fehler tritt meist dann auf, wenn der IF-Knoten auf eine Variable zugreifen soll, die nicht existiert oder falsch referenziert wird. In unserem Fall lautet die Bedingung sinngemäß:
{{$json["allPickedImages"].includes($json["pickedImage"])}}
Doch wenn `allPickedImages` nicht korrekt als Array übergeben wird oder `pickedImage` undefined ist, bricht der Vergleich ab. Häufige Ursachen:
- • `allPickedImages` kommt als String statt Array an
- • `pickedImage` ist leer oder nicht korrekt gesetzt
- • Der Zugriff auf verschachtelte Daten ist fehlerhaft (z. B. `$json[0]` vs. `$json`)
Lösung: Funktionierende Bedingung mit Function-Knoten
Ein robuster Weg ist die Nutzung eines Function-Knotens vor dem IF-Knoten. Beispiel:
javascript const allPicked = items[0].json.allPickedImages; const current = items[0].json.pickedImage;
return [{ json: { alreadyUsed: allPicked.includes(current) } }];
Im anschließenden IF-Knoten prüft man dann einfach:
{{$json["alreadyUsed"] === false}}
So wird sauber getrennt zwischen Logik und Bedingung.
🧪 Konkretes Beispiel aus der Praxis
Ein Nutzer in der n8n-Community wollte genau diesen Workflow bauen:
- • Bilder aus `images/` zufällig auswählen
- • Nach Auswahl in `used_images/` verschieben
- • Eine Liste der bereits verwendeten Bilder als JSON-Datei im Dateisystem speichern
- • Bei jeder neuen Auswahl prüfen, ob das Bild bereits vorkam
Durch die falsche Nutzung des IF-Knotens wurde jedoch der Vergleich fehlerhaft und der Workflow brach ab. Erst durch den Einsatz eines Function-Knotens zur Vorprüfung und Datenaufbereitung konnte die Logik stabil umgesetzt werden.
🔮 Ausblick: Bessere Fehlerbehandlung in n8n
n8n ist ein extrem mächtiges Tool – aber nicht fehlerfrei. In zukünftigen Versionen könnte eine bessere Validierung im IF-Knoten helfen, solche Fehler früher zu erkennen. Auch erweiterte Logging-Möglichkeiten und bessere Debugging-Tools wären wünschenswert, um komplexe Workflows wie diesen leichter zu entwickeln.
Langfristig könnten auch spezialisierte Nodes für Datei-Auswahl, Duplikatprüfung und „State Management“ (z. B. Erinnern, was schon verwendet wurde) eine große Hilfe sein.
🚀 Ihre nächsten Schritte
Sofort umsetzen (5 Minuten): Erstellen Sie in n8n einen einfachen Workflow mit einem Function-Knoten, der prüft, ob ein bestimmter Wert bereits in einem Array enthalten ist. Nutzen Sie das Beispiel oben als Vorlage.
Tool-Empfehlung: n8n – Die Open-Source-Automatisierungsplattform bietet flexible Knoten für individuelle Logik, ideal für Entwickler und Technikbegeisterte.
Weiterführend: Lesen Sie den Forenbeitrag in der n8n Community zum Thema „Zufällige Bildwahl ohne Wiederholung“. Dort finden Sie Diskussionen, Beispiele und Feedback von anderen Nutzern.