Auswertungen mit mehreren Zeilen
Beschreiben Sie das Problem/den Fehler/die Frage
Ich versuche, Auswertungen in einem Workflow auszuführen, aber der Auswertungs-Workflow wird nur einmal für die erste Zeile ausgeführt, obwohl ich mehrere Zeilen im verbundenen Google Sheet habe. Ich habe die Dokumentation genau befolgt und kann immer noch nicht erreichen, dass er sich wiederholt und für mehrere Zeilen ausgeführt wird. Der folgende Workflow ist ein sehr einfacher, den ich zu Testzwecken eingerichtet habe.
Welche Fehlermeldung wird angezeigt (falls vorhanden)?
Bitte teilen Sie Ihren Workflow
Geben Sie die vom letzten Knoten zurückgegebene Ausgabe an
[
{
“content”: {
“parts”: [
{
“text”: “| output |\n| :— |\n| Hello John |”,
“thoughtSignature”: “EvAECu0EAQw51seqBldzgke32L2p2FSTP+LVobUg/nFzZql1BnD6iGqh9K4Q9rj3ZqYka+EN7xZy1Gyw7MgYL2aHsJfeJ/hlP8yjww+16mYvwlvB/uw5Im5CL6V7dRvGwNTp3BKXushluRrPeUVKZt6E+DN06xHETSKfmN/ICvt+1ae4WCjsmv1BkWhCvrI0tLrT4mVTQ/9wuFpFIX03fwJV2EIghSQcaTCk5ptNyo+LnH0VmKsbv7HpVc9WMOhUKK2Mnh9Oqon1w8Q4Pv95mpEvajvSCJ1PG9zaTFxKRFgHEM0hlC7oE60LlueKrjhrT4wvt4aIifXiBT9kP2A7EtPXGxlafSTIwejDldN6eV5gXKp8raW5o3gW5A/fBWFmVYiC0Rv6fre+vuDgziQdPFBVjm94Cd/LRYj1/BuX5fnSF9ydldwnVtQdrWjchvllCpVj5GJOMfp3ED/6b7tuNNvnGI09L3RhiqYVw4aZNidhBvDrdP+IXnN8sS7qUS0K1OSQaOQ9EmwEhwslRkU28oGItJQSQ315l1VV05UmEI6Sw3IivTPtHBh4oF4yz5JUPtxLrsVbe2KNujYpU+IWweOvZCrnaWhsyleqycRivzJIIx+9wsH5s14tBtbusp2fTq/TdhU3UJtJMPl5vgA6unEh1yCtMLPRZLJrRuV/nxX0jAwTLpRASnfOT4hDO0j6BnfF8QatVRsks6VdAdOWhixT2desPsZ2uEuuXYqpyQ9nCLV5WuCD08sMAfVLTFMeV45KGLDfT3nDwRRAy3tXziR4MgaWvXCzFSBuFnGUBZOUY9ZWeatvDdM9wiKLV4gtJdMn”
}
],
“role”: “model”
},
“finishReason”: “STOP”,
“index”: 0
}
]
Informationen zu Ihrem n8n-Setup
- n8n-Version:
- Datenbank (Standard: SQLite):
- n8n EXECUTIONS_PROCESS-Einstellung (Standard: own, main):
- n8n wird ausgeführt über (Docker, npm, n8n cloud, Desktop-App):
- Betriebssystem:
Dies ist die Ausgabe des initialen Eval-Triggers. Es gibt ein Feld “_rowsLeft”: 1, das bedeutet, dass der Trigger erkennt, dass sich mehrere Zeilen im Evaluierungs-Google-Sheet befinden.
[
{
"row_number": 2,
"row_id": 1,
"first_name": "John",
"expected_output": "",
"actual_output": "Hello! How can I help you today?",
"_rowsLeft": 1
}
]
Danke. Ich führe die vollständige Ausführung definitiv durch.
Ich habe 1-4 versucht und es gab keine Änderung.
Ich habe auch 5 versucht und es schreibt immer noch nur 1 Zeile. Vielleicht gibt es einen Bug. Hier ist der vereinfachte Workflow:
Ich kann das gleiche Problem auch auf der selbst gehosteten n8n-Version 2.20.9 reproduzieren.
In meinem Fall verwendet der Evaluation Trigger eine Data Table statt Google Sheets. Die erste Datensatzzeile wird erfolgreich ausgeführt, und die Evaluation Trigger-Ausgabe enthält _rowsLeft / rows_left > 0, aber es wird keine zweite Workflow-Ausführung gestartet.
Ich habe den Network-Tab des Browsers überprüft: Nach dem Klick auf die Schaltfläche “Execute workflow” neben dem Evaluation Trigger gibt es nur eine /run-Anfrage. Nach Abschluss von Zeile 1 wird keine zweite /run-Anfrage ausgelöst.
Dies funktionierte für uns auf n8n 2.17.5 und funktioniert nach dem Upgrade auf 2.20.6 / 2.20.9 nicht mehr. Das Problem tritt über mehrere Workflows und mehrere Data Tables mit deaktivierten Filtern auf.
Es sieht so aus, als würde der Evaluation Trigger die verbleibenden Zeilen korrekt erkennen, aber der Editor/Evaluation Runner setzt die Evaluierungsschleife nicht fort.
Ich habe bisher keine Problemumgehung oder Lösung gefunden. Falls jemand eine Lösung findet, bitte Bescheid geben.
Update: Ich bin auf n8n 2.18.7 herabgestuft, und der Evaluation Trigger funktioniert dort wieder.
Bisher ist dies die neueste Version, die ich getestet habe, in der der Evaluation Trigger alle Datensatzzeilen korrekt durchläuft.
@superkyle
Klickst du auf Run tests in der Registerkarte Evaluations des Workflows, oder verwendest du die normale Ausführungsschaltfläche des Editors? Deine typeversion sieht merkwürdig aus… Welche Version von n8n hast du? Hast du diesen Workflow manuell erstellt oder aus einer Vorlage importiert?
Ein weiterer Punkt, den ich bemerkt habe: “outputValue” sollte ={{ "Hello " + $json.first_name }} sein oder nur fester Text ohne das =, der Evaluation Trigger erwartet, dass der finale Evaluation das Ergebnis zurück in das Google Sheet in der gleichen Zeile schreibt, in der es gelesen wurde (kann zu stiller Fehler führen).
Klickst du auf Run tests im Evaluations-Tab des Workflows, oder verwendest du die normale Run-Schaltfläche des Editors?
- Ich klicke definitiv auf Run tests.
Welche Version von n8n verwendest du?
- Ich nutze n8n cloud. Also die neueste Version.
Hast du diesen Workflow manuell erstellt oder aus einer Vorlage importiert?
- Ich habe ihn manuell basierend auf der Evaluationsdokumentation erstellt.
“outputValue” sollte ={{ "Hello " + $json.first_name }} sein oder nur einfacher Text ohne das =
- Das scheint nicht das Problem zu sein, denn der Evaluation-Workflow schreibt erfolgreich in das Google Sheet für die erste Zeile. Das Problem ist, dass er nur für die erste Zeile ausgeführt wird.
OK, aber schreibt der Bewertungs-Workflow erfolgreich in die erste Zeile UND in die zweite Zeile und darüber hinaus?
@superkyle
Öffne den Evaluation-Knoten nach der Ausführung. Zeigt das Feld actual_output den korrekten Wert an oder ist es leer/fehlerhaft?
Das Problem ist, dass der Evaluierungs-Workflow erfolgreich in der ersten Zeile schreibt, aber nicht in einer Schleife läuft und in nachfolgenden Zeilen nicht fortfährt.
Die actual_output zeigt tatsächlich den korrekten Wert für die erste Zeile. Es gibt keinen Fehler. Du kannst es hier sehen n8n eval testing - Google Sheets
@superkyle
Bei der Überprüfung deines JSON bin ich darauf gestoßen, dass der Knoten Evaluation keine verbundene Ausgabe hat (“main”: []). Da der Evaluation Trigger den Zyklus fortsetzen muss, um die nächsten Zeilen zu verarbeiten, könnte dies dazu führen, dass der Fluss nach dem ersten stoppt. Versuche, die Ausgabe von Evaluation zurück mit When fetching a dataset row zu verbinden und führe den Test erneut aus. Falls das das Problem behebt, bestätige hier Bescheid, um das Verhalten validieren zu helfen.
Es ist nicht möglich, die Ausgabe mit “When fetching a dataset row” zu verbinden, da “When fetching a dataset row” ein Evaluations-Trigger ist. Gemäß der Dokumentation sollte es alle Zeilen durchlaufen, nachdem der setOutputs-Node ausgeführt wird.
ok, mein Fehler, ich war verwirrt.
Ich verstehe, dass du nicht einverstanden bist, den Ausdruck zu überprüfen, aber es ist wichtig, das zu bestätigen, da ich deinen Fehler nicht reproduzieren kann. Wenn Set outputs in der ersten Zeile nicht korrekt abgeschlossen wird, könnte das erklären, warum der Runner nicht zu den nächsten Schritten fortschreitet.
Bitte teste mit ={{ 'Hello ’ + $json.first_name }}
Danke, dass du dich darum gekümmert hast. Ich habe das versucht und es ändert nichts. Es fügt nur ein = am Anfang der Ausgabe hinzu. Das ist nicht das Problem, weil die Set-Ausgaben auf der ersten Zeile korrekt abgeschlossen werden.
Entschuldigung, ich habe mich oben geirrt.
wenn setoutputs nicht korrekt abgeschlossen wird, kann es die erste Zeile verarbeiten, aber nicht zu den nächsten übergehen.