Jak připojit data o skladové dostupnosti zboží z Heureka dostupnostního XML k produktům v Mergadu

Tuhle padla otázka, zda lze “připojit” informace z Heureka dostupnostního XML feedu k produktům v exportu v Mergadu. Dříve jsem říkával, že nikoliv, protože pravidlo datového importu podporuje napojení dat z formátu CSV. Opak je ovšem pravdou. Lze to nastavit a zabere to sotva pár minut.

Postup v kostce

Využijeme pravidlo datového importu. Abychom ze vstupního dostupnostního XML feedu vytvořili CSV s potřebnými daty, použijeme aplikaci Blending Bull.

O aplikaci Blending Bull

Blending Bull je známý jako aplikace pro spojování datových feedů. Obsahuje ovšem také datový editor. Ten data nenačítá do databáze, ale upravuje rovnu text v souboru. Díky tomu dokáže zpracovat i dostupnostní XML feed nebo různé další formáty CSV či XML feedů!

Pracovní postup

  1. Jako datový zdroj v aplikaci Blending Bull (vstupní feed) vložíme URL dostupnostního XML feedu. Odtud bude Bull data brát a pravidelně je aktualizovat.
  2. Vytvoříme nový výstupní soubor. Do něj jako zdroj dat napojíme dostupnostní feed. V nastavení datového zdroje nastavíme smazání hlavičky a patičky XML tak, aby obsah souboru začínal <item... a končil </item>.
  3. Pomocí pravidel upravíme obsah souboru. Já se domníval, že jediným pravidlem s regulárním výrazem dokáži data z dostupnostního XML feedu vyparsovat a uložit do struktury CSV souboru. Zápis mne ale zlobil, a tak jsem postup rozdělil na více jednodušších pravidel. Většinou šlo o pravidla “Najít a nahradit” s tím, že se nahrazovalo za prázdný obsah, tedy byl text odstraněn. Uvedu příklad pravidel. Vy si vytvoříte pravidla vlastní dle charakteru vašich dat.
Tabulka s popisem pravidel
Pravidlo Nalézt v datovém zdroji text Nahradit za text Regulární výraz? Poznámka
Odstranit zlomy řádků \n nic ano :information_source: [1]
Odstranit mezery (mezera) nic - :information_source: [2]
Odstranit: /item </item> nový řádek (enter) - :information_source: [3]
Odstranit: delivery… <delivery_timeorderDeadline.*<\/delivery_time> nic ano
Odstranit: depotid <depotid.*<\/depot> nic ano
Parsování dat <itemid="(.*)"><stock_quantity>(.*)<\/stock_quantity> \g<1>,\g<2> ano :information_source: [4]
Hlavička CSV typ pravidla Vložit na začátek souboru ITEM_ID,STOCK_QUANTITY(enter) -

:warning: Zápis pravidel je ilustrační. V mém případě fungoval. Ve vašem případě může být potřeba pravidla upravit dle situace. Některá pravidla nemusí být potřeba vůbec. Cílem bylo ukázat princip.

  1. Výstupní soubor z aplikace Blending Bull načteme pomocí pravidla datového importu do exportu v Mergadu.
  2. A máme hotovo. Výsledek může v Mergadu vypadat podobně viz. příklad. Data můžeme využít pro řízení kampaní, výběry, přípravu dat pro marketplaces aj.

:bulb: Přestože popis postupu zabral hodně řádků, naklikat jej dokážete za pár minut.

Podobně lze zpracovat i jiné formáty

V tomto příkladě jsou na vstupu data ve formátu Heureka dostupnostní feed. Obdobně můžete zpracovat jiné formáty XML případně CSV feedů. Pomocí aplikace Blending Bull je převedete do CSV (případně XML), které pak napojíte do Mergada pravidlem datového importu, nebo zpracujete jiným způsobem.

:bulb: Celý fígl je v tom, že do výstupního souboru napojíte pouze jeden vstupní feed a zpracujete ho v Blending Bullovi jako v editoru.


Poznámka o screenshotu Blending Bull

Uvedený screenshot je z vývojové verze aplikace, kterou připravujeme. Na produkci by měla být v řádu jednotek týdnů. Již nyní můžete s Bullem pracovat stejně. Pouze jsou pravidla v rozhraní aplikace v části Vstupní soubory → detail souboru → Pravidla


  1. Zlobily mne konce řádků. Tedy jsem je odstranil. Výstupem je jeden dlouhý řádek. ↩︎

  2. Zlobily mne mezery na různých místech XML. Odstranil jsem je. ↩︎

  3. Položka item ukončuje položku zboží. Nám odřádkuje CSV kde jeden řádek bude jedna shopitem. Nahradíme ji tedy za nový řádek (stisk enter). ↩︎

  4. Jádro celého zpracování. Z položek (.*) načte pravidlo data. Skupin dat může být více. Do výstupu je vložíme zápisem \g<1>, \g<2> atp. kde číslo udává pořadí skupiny v parsování. Já jsem jako oddělovač zvolil čárku. ↩︎

4 Likes

Dobrý den, mohl bych požádat o radu? Snažím se připravit CSV z dostupnostníh XML, ale bohužel se mi nedaří dodržet strukturu - stále jsou mezery mezi ITEM_ID a STOCK_QUANTITY elementy. Stejně tak se mi neřadí prvky za první řádek.
image

Děkuji za radu,
Dominik

1 Like

Odřádkování hlavičky

v pravidle pro doplnění hlavičky jen na konci řádku zmáčkněte Enter, aby kurzor blikal o řádek níž :wink:

Odstranění mezer

Tady je více možností řešení, např. si pravidlem “Najít a nahradit” vyhledejte mezery za oddělující čárkou: ,\s+ a odstraňte, tedy nahraďte jen za čárku , takto:

Mockrát díky. S těmi mezerami mám pořádá trochu problém. Navíc se zdá, že vše za hlavičkou se řadí jako jeden řádek CSV:
image

1 Like

Dobrý den, napište mi prosím na support na adresu info@shopitak.com a uveďte o jaký e-shop jde. Zde je diskuse veřejná, tak prosím e-shop neuvádějte. Pomohu Vám to nastavit. Děkuji.

@tradag vytvořil jsem v aplikaci Blending Bull soubor s názvem “Dostupnostní soubor - Mergado”, kde se můžete na jednotlivá pravidla podívat. Funguje to. :wink:

Pravidla jsem přidal takto:

PS: ty mezery vám tam zůstávaly proto, že v pravidle pro jejich odstranění nebyl zatržený checkbox “Zpracovat jako regulární výraz”, zatrhnul jsem jej :slight_smile: , nicméně pořád to tam zůstává v jednom řádku, jak píšete. :expressionless: Mrkněte tedy na ukázku, kterou jsem tam vytvořil.

1 Like