|  | Unser Angebot für Sie! Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'! |
| | | | | |
Zusammenfassung
Erfahren Sie, wie Sie die Webservices von eBay nutzen, um automatisiert Artikel dort einzustellen.
Techniken
VBA, WebServices, Formulare
Voraussetzungen
Access 2000 und höher
Beispieldateien
eBay.mdb
Shortlink
651
eBay-Artikel einstellen mit Access
André Minhorst, Duisburg
Im Beitrag eBay-Artikelsuche mit Access in dieser Ausgabe (Shortlink 650) haben Sie gelernt, wie Sie die für den Zugriff auf die eBay-Webservices benötigten Voraussetzungen erfüllen und wie Sie die REST-API von eBay zur Artikelsuche einsetzen können. Im vorliegenden Beitrag gehen wir einen Schritt weiter und stellen selbst Artikel bei eBay ein.
Im Gegensatz zur Suche von Artikeln benötigen Sie für das Einstellen nicht die Befehle der Shopping-, sondern der Trading-API von eBay. Das Einstellen eines Artikels ist eine ganze Ecke schwieriger als die Suche danach. Allein das Ermitteln der geeigneten primären Kategorie, unter der Sie den Artikel einstellen möchten, ist eine Herausforderung. Und darum kümmern wir uns gleich im Anschluss an die Übersicht über das Einstellen von Artikeln bei eBay.
Artikel einstellen
Für das Einstellen von Artikeln bei eBay verwenden Sie die API-Funktion AddItem der Trading-API von eBay. Die Referenz zu dieser Funktion finden Sie unter [1]. In dieser Referenz erfahren Sie, wie ein Request im XML-Format aussehen muss, damit eBay den gewünschten Artikel einstellt. Die Liste der Elemente liefert genaue Informationen darüber, welche zum Pflichtprogramm gehören (Required) und welche Elemente in Abhängigkeit von anderen Elementen (Conditional) oder optional (Optional) zum Einsatz kommen.
Grundsätzlich bestehen die XML-Requests der Trading-API aus einigen Basis-Elementen, welche Informationen über den Benutzer (RequesterCredentials), die Fehlersprache (ErrorLanguage) oder den Warning Level liefern. Erst im Anschluss folgen im Element item die eigentlichen Informationen zum einzustellenden Artikel.
In der Beispieldatenbank übernimmt das Formular frmArtikelEinstellen die Aufnahme der Informationen zum einzustellenden Artikel und die Steuerung der weiteren Aktionen, also für das Einstellen und das Beenden des Angebots (s. Abb. 1). Letzteres werden Sie gerade beim Herumspielen mit der Beispieldatenbank des Öfteren brauchen.
Abb. 1: Mit diesem Formular können Sie ganz leicht Artikel bei eBay einstellen.
Eines vorneweg: Das Formular und die Beispieldatenbank behandelt nur einen kleinen Teil der tatsächlich beim Einstellen vorhandenen Möglichkeiten des eBay-Webservices.
Trotzdem sollte das simple Formular aus der obigen Abbildung für die meisten Fälle ausreichen, beziehungsweise leicht für Ausnahmen anpassbar sein.
Das Formular ist an die Tabelle tblArtikelEinstellen gebunden, die alle notwendigen Informationen speichert. Diese Tabelle sieht im Entwurf wie in Abb. 2 aus. Es gibt zwei Informationen, die größere Arbeit erfordern: die Kategorie eines Artikels sowie das Bild, das mit dem Artikel angezeigt werden soll.
Abb. 2: Entwurf der Tabelle zum Speichern der Daten bei eBay eingestellter Artikel
Kategorien ermitteln
eBay bietet Zigtausende Kategorien für die Einordnung von Artikeln an. Wenn Sie diese auf der Internetseite von eBay auswählen, geht dies recht schnell, indem Sie einfach eine der Hauptkategorien anklicken und sich dann durch die untergeordneten Kategorien bis hin zur gewünschten Kategorie hindurchnavigieren. Unter Access ist dies anders, denn Sie müssen die Kategorien ja überhaupt einmal in der Datenbank speichern - und das sind zum Zeitpunkt der Erstellung dieses Beitrags immerhin 37.581 an der Zahl. Die Kategorien sind auch noch hierarchisch aufgebaut, sodass Sie unter der Vorgabe eines sinnvollen Datenmodells auch noch die Beziehungen zwischen den Kategorien in einer weiteren Tabelle speichern müssen. Die beiden benötigten Tabellen und ihre Daten sehen wie in Abb. 3 aus. Nun müssen Sie die Kategorien nur noch vom eBay-Server in die Tabellen bekommen. Dies geschieht mit einem XML-Request an eine der API-Funktionen der Trading-API von eBay. Dieser sieht wie in Listing 1 aus und wird von der Routine KategorienEinlesen des Moduls mdlEbay erstellt. Die gleiche Routine empfängt auch das XML-Dokument mit der Antwort und wertet die darin enthaltenen Informationen aus. Eine stark gekürzte Fassung dieses Dokuments finden Sie in Listing 2. Eigentlich müssten wir Ihnen an dieser Stelle zeigen, welchen Code Sie verwenden, um den Request zu erstellen und an den Webservice zu senden und die Response auszuwerten, aber im Grunde müssen Sie die Kategorien nur dann und wann neu einlesen, daher scheinen die Funktionen zum Anbieten von Artikeln hierfür wesentlich besser geeignet. Die Routine KategorienEinlesen prüft selbstständig, ob eine neue Version der Kategorien vorliegt, und überschreibt nur in diesem Falle die bereits eingelesenen Kategorien.
<?xml version="1.0"?>
<GetCategoriesRequest xmlns="urn:ebay:apis:eBLBaseComponents">
<RequesterCredentials>
<EBayAuthToken>...</EBayAuthToken>
</RequesterCredentials>
<DetailLevel>ReturnAll</DetailLevel>
<ErrorLanguage>en_US</ErrorLanguage>
<WarningLevel>High</WarningLevel>
<LevelLimit>8</LevelLimit>
</GetCategoriesRequest>
<?xml version="1.0"?>
<GetCategoriesResponse xmlns="urn:ebay:apis:eBLBaseComponents">
<Timestamp>2008-12-29T16:51:26.838Z</Timestamp>
<Ack>Success</Ack>
<Version>595</Version>
<Build>e595_intl_Bundled_7675009_R1</Build>
<CategoryArray>
<Category>
<CategoryID>353</CategoryID>
<CategoryName>Antiquitäten & Kunst</CategoryName>
<CategoryParentID>353</CategoryParentID>
...
</Category>
<Category>
<CategoryID>63184</CategoryID>
<CategoryName>Juwelier- & Uhrmacherbedarf</CategoryName>
<CategoryParentID>281</CategoryParentID>
...
</Category>
</CategoryArray>
<CategoryCount>592</CategoryCount>
<UpdateTime>2008-11-04T03:09:43.000Z</UpdateTime>
...
</GetCategoriesResponse>
Abb. 3: Tabellen zum Speichern der Kategorien und deren Beziehung
Artikelbilder
Neben den Kategorien sind die Artikelbilder unter Umständen ein weiteres Element, das Ihrer besonderen Aufmerksamkeit bedarf. Unter Umständen deshalb, weil es prinzipiell zwei Varianten gibt, wie Sie ein Bild zu Ihrem Artikel für eBay hinzufügen:
- Sie platzieren das Bild auf einem eigenen Webserver oder an anderer Stelle im Internet, aber außerhalb von eBay, oder
- Sie laden das Bild auf den Webspace von eBay hoch.
Im ersten Fall brauchen Sie einfach nur die URL des Bilds anzugeben, im zweiten Fall müssen Sie vorher eine weitere API-Funktion der Trading-API von eBay einsetzen, um das gewünschte Bild hochzuladen. Auch dieser Request ist keine Einbahnstraße, sondern liefert ein Ergebnis zurück - nämlich die URLs, unter denen eBay das Bild in verschiedenen Auflösungen (beispielsweise in der Originalauflösung oder in einer für die Anzeige eines Galeriebilds geeigneten Auflösung) bereitstellt.
Artikel einstellen
Kommen wir zum eigentlichen Einstellen eines Artikels.
Das Formular frmArtikelEinstellen fragt alle für die Minimalkonstellation notwendigen Informationen ab, die wie folgt aussehen:
Die Tabelle hat drei weitere Felder, in welche die Anwendung nach dem Einstellen des Artikels beziehungsweise nach dem Beenden des Angebots entstehende Informationen einträgt:
- eBayID: Nummer des Items, unter dem der Artikel bei eBay gespeichert wurde.
- EingestelltAm: Zeitpunkt, an dem der Artikel bei eBay eingestellt wurde.
- DurchBenutzerBeendetAm: Zeitpunkt, an dem das Angebot durch den Benutzer über die Beispielanwendung beendet wurde.
|