Cześć,

Bardzo często w naszej pracy zachodzi potrzeba porównywania cen różnych produktów. Możemy parsować strony konkurencji (nie mogłem znaleźć jasnej informacji czy jest to legalne :), możemy zapłacić za dane ceneo.pl lub poszukać danych dostępnych za pomocą API. Ciekawym źródłem jest allegro.pl. API systemu umożliwia odpytanie frazą na przykład eanem wyszukiwarkę (również opisy) i zwrócenie najniżej lub najwyżej ceny. Interfejs jest darmowy, a limity odpytań wysokie.

Oto co musimy wykonać aby sięgnąć po dane (autor wpisu zakłada, że czytelnik posiada Qlik + Rest zainstalowany na komputerze):

  1. Zakładamy konto na https://apps.developer.allegro.pl/
  2. Tworzy własną aplikację – interesują nas wartości Client ID i Secret ID
  3. https://allegro.pl/auth/oauth/token?grant_type=client_credentials Wywołujemy w przeglądarce adres: logujemy się danymi z punktu 2.
  4. Voila! jeżeli wszystko przebiegło sprawnie przeglądarka zwróci nam odpowiedź zawierającą token wymagany do pobrania danych.

Wyposażeni w token zbudujmy zapytanie GET, które zwróci nam frazę Qlikview w wyszukiwarce allegro i poda nam tylko najniższą cenę.

https://api.allegro.pl/offers/listing?&phrase=Qlikview&limit=1&searchMode=DESCRIPTIONS&sort=+price

Rzućmy okiem na konfigurację Rest Connector w Qlikview:

Wklejamy zbudowany przez nas URL, dodajemy nagłówki – parametry po lewej stronie nagłówka są stałe, jak również “bearer” – token jest zmienną o określony czasie trwania (dokumentacja). Jeżeli test połączenia przebiega prawidłowo możemy przejrzeć dane.

Efekt:

Teraz pozostaje tylko:

  1. Zdefiniować zmienną i zamienić frazę Qlikview na przykład na ean: LET vEAN$(i) = FieldValue(‘ean’, $(i));
  2. Wcześniej dodać For i = 1 to FieldValueCount(‘ean’)
  3. No i nasze produkty: LOAD ean, ceny_z_mojego_erpa, FROM [C:\DANE.xlsx];
  4. Wklejamy ‘$(vEAN$(i))’ as ean tak aby w wynikowej tabeli mieć cenę i ean.
  5. Na koniec next i;

Właśnie zbudowaliśmy porównywarkę cen produktów z cenami na allegro przy użyciu rest w Qlikview. Do ideału można w wyżej wymienionym kodzie uwzględnić odnowienie tokena poprzez odpytanie POST, zastosowanie interwałów aby ominąć ewentualne limity odpytań oraz uwzględnienie na wypadek 503 (znalazłem na githubie tickety, że czasem tak się zdarza i nie jest to rozwiązane dalej po stronie allegro). W przypadku niezgodnego token odpowiedź 401.

Przydatne linki:

https://developer.allegro.pl/documentation/

Allegro parser + rest connector