Counter als ID einmalig vergeben

Hallöle in die Runde :slight_smile:

Ich habe diesmal die Baustelle die Votes von Shopware für Google nachzubearbeiten.

Wir haben ein Plugin im Shop was eine XML-Datei erzeugt. Diese hole ich über FTP rein und zieh sie in den Mapper. Es müssen 2 Spalten mit fortlaufender Nummer rein. Die Daten laufen über ein MappingSet in dem die letzte Nummer gespeichert wird in ein Datastore.
Ich habe mir 2 Hilfsspalten angelegt für das Mappingset. Aber irgendwie krieg ich die Logik nicht hin.

Im XML gibt es logischerweise keine IDs - Google möchte die aber. Diese werden wie Indexe vergeben. Fortlaufend.

Ich habe eine Spalte, da greife ich auf die Flowvariable Counter zurück. Das klappt eigentlich soweit - aber dann weiss ich nicht, wie ich auf die letzte gültige Nummer zugreifen kann. Also habe ich Mappingset angelegt. Dieser Punkt funktionierte auch. Dann muss ich aber ja abfragen, ob der Wert leer ist und dann auf den Wert des MappingSets zugreifen und +1 rechnen. Das klappt alles so gar nicht. Ich bekomme die Schleife einfach nicht hin. Denn jeden Tag zieht er sich die Datei 1x und es sollen immer die neuen Werte dazugeschrieben werden, und die Nummer fortlaufend basierend auf den letzten Wert aus dem Datastore sein. Ich arbeite auch mit Hilfsspalten und trotzdem willet nisch.

Kann mir hier irgendjemand einen Tipp geben? Ich dreh mich seit 2 Tagen im Kreis. Diese fortlaufende Nummer die einmal im MappingSet gespeichert werden soll, aber auch abgerufen werden soll im Bedarfsfall und der neue Wert berechnet krieg ich einfach nicht hin.

Viele Ansätze habe ich probiert - aber irgendwie alles nur halbgar.

Wenn mir da einer sagen kann, wie ich am besten vorgehe in so einem Fall - wäre super!

Habt alle ein schönes Wochenende :slight_smile:

Sabine

Hallo @Papageien,

du könntest dir mit folgendem Ausdruck die letzte Zeile deines Mapper in einen extra Datastore schreiben, der nur diesen einen Eintrag des letzten Wertes hat:

${spreadsheet@SearchMasterDatastore_3.getRows()?sequence?last.get("SpalteMitLetztenWert")}

spreadsheet@SearchMasterDatastore_3 musst du dann natürlich mit deinem Spreadsheet ersetzen. Das bekommst du unter anderem raus, wenn du auf den kleinen Pfeil nach dem Mapper-Step klickst.
image

Ich würde auch empfehlen den Wert aus dem Datastore dann beim nächsten Flowrun vorher in einen TextHTMLWriter zu schreiben und dann auf diesen im Mapper zugreifen.

Viele Grüße
Lukas

1 Like

Hallo Lukas,

ganz lieben Dank. Werde ich gleich mal ausprobieren. Hoffe ich komme dann weiter :smiley:

liebe Grüße

Sabine