1. Einführung
In diesem Codelab lernen Sie die Grundlagen der Content API for Shopping und der AdWords API kennen und erfahren, wie Sie eine Anwendung erstellen, die beides verwendet. Insbesondere erstellen Sie eine Befehlszeilenanwendung, mit der ein AdWords-Konto und ein Merchant Center-Konto erstellt und verknüpft werden.
Aufgaben in diesem Lab
- So erstellen Sie AdWords-Konten, die über ein Verwaltungskonto verwaltet werden.
- Merchant Center-Konten erstellen, die von einem Mehrfachkundenkonto verwaltet werden
- Verknüpfung eines Merchant Center-Kontos mit einem AdWords-Konto anfordern
- Ausstehende Merchant Center-Verknüpfung in einem AdWords-Konto akzeptieren
Voraussetzungen
- AdWords-Verwaltungskonto
- Ein Merchant Center-Mehrfachkundenkonto
- Java 7 und höher
- Maven
- Beispielcode
- Einen Texteditor (eine IDE, die Maven-Projekte wie Eclipse oder IntelliJ versteht, wird empfohlen)
2. Einrichtung
Video herunterladen
Klicken Sie auf den folgenden Link, um den gesamten Code für dieses Codelab herunterzuladen:
Entpacken Sie die heruntergeladene ZIP-Datei. Dadurch wird der Stammordner (shopping-account-linking-master
) entpackt, der ein Maven-Projekt sowie alle benötigten Ressourcen enthält. Besonders hervorzuheben sind die folgenden Unterverzeichnisse:
src/main/java
ist der Quellstamm des Maven-Projekts und enthält ein Code-Skeleton, in dem Sie arbeiten können.src/main/java/solution
enthält die fertige Lösung.
Erforderliche Pakete installieren und erstellen
Wenn Sie eine Maven-fähige IDE wie Eclipse oder IntelliJ verwenden, können Sie den extrahierten Ordner als Maven-Projekt importieren und das Projekt dann normal kompilieren.
Wenn Sie Maven über die Befehlszeile verwenden, können Sie den folgenden Befehl ausführen, um die erforderlichen Pakete abzurufen und das Projekt aus dem Stammordner des entpackten Projekts (shopping-account-linking-master
) zu kompilieren:
mvn compile
3. Authentifizierung einrichten
In diesem Schritt nehmen wir keine Codierung vor, sondern richten Dateien ein, die entsprechende Authentifizierungstokens für die AdWords API und die Content API for Shopping enthalten.
AdWords API-Bestätigung einrichten
In diesem Codelab werden dieselben Anmeldedaten wie für die Clientbibliothek verwendet. Wenn Sie also die Google Ads API-Clientbibliothek für Java bereits mit Ihrem Verwaltungskonto verwendet haben, sollten Sie sie bereits eingerichtet haben. Andernfalls führen Sie die Schritte 1 bis 3 für die ersten Schritte mit der Google Ads API-Clientbibliothek für Java aus.
Content API-Bestätigungeinrichten
Wenn Sie noch keinen Dienstkontoschlüssel haben:
- Rufen Sie das Merchant Center Ihres Mehrfachkundenkontos auf und wählen Sie im Dreipunkt-Menü die Option Content API aus:
- Wählen Sie Authentication (Authentifizierung) aus und klicken Sie auf die blaue Schaltfläche +:
- Nachdem Sie die Nutzungsbedingungen für die Google Cloud Platform und Google APIs akzeptiert haben, lädt Ihr Browser automatisch eine JSON-Datei mit Ihrem neuen Dienstkontoschlüssel herunter.
Folgen Sie nun der Anleitung zum Einrichten der Authentifizierung für die Shopping-Beispiele mit einem Dienstkonto. Das heißt, eine Kopie Ihres Dienstkontoschlüssels sollte sich im folgenden Pfad von Ihrem Basisverzeichnis aus befinden: shopping-samples/content/service-account.json
. Sie müssen die Beispielkonfiguration nicht einrichten, es sei denn, Sie möchten die Beispiele nach Abschluss dieses Codelabs ausprobieren.
Jetzt testen
Jetzt, da Sie die Authentifizierungstokens an den richtigen Stellen haben, versuchen Sie, die Beispiele auszuführen. Wenn Sie über die Befehlszeile Maven verwenden, führen Sie die folgenden Befehle aus:
mvn compile
mvn exec:java -Dexec.mainClass="SolutionRunner"
Wenn Sie eine Fehlermeldung erhalten, dass Sitzungsobjekte nicht bereitgestellt werden, sind Ihre Authentifizierungstokens vorhanden und funktionieren ordnungsgemäß. Andernfalls sollten Sie in der Fehlermeldung darüber informiert werden, welche Anmeldedaten nicht funktionieren konnten und welche Datei korrigiert werden muss.
4. Verbindung zu den APIs herstellen
Da Sie nun über gültige Authentifizierungstokens für die beiden APIs verfügen, die wir verwenden werden, beginnen wir mit dem Ausfüllen des Codes. Wir beginnen mit dem Erstellen von Sitzungsobjekten mit unseren Authentifizierungstokens. In späteren Schritten greifen wir auf die verschiedenen Dienste und Methoden zu, die die einzelnen APIs mithilfe dieser Sitzungsobjekte bereitstellen.
Content API-Sitzungsobjekt erstellen
Zum Erstellen einer Content API-Sitzung wird ein ShoppingContent.Builder
-Objekt erstellt, mit dem Sie dann das entsprechende ShoppingContent
-Objekt erstellen. Glücklicherweise ist alles, was wir zum Erstellen von Ersteren brauchen, bereits im Code-Skeleton verfügbar, also müssen wir es nur so zusammensetzen:
SolutionRunner.java
// TODO(sessions): Create a ShoppingContent object using ShoppingContent.Builder.
contentApiSession =
new ShoppingContent.Builder(httpTransport, jsonFactory, contentApiCredential)
.setApplicationName("Linking AdWords and Merchant Center Accounts Codelab")
.build();
Das Festlegen eines Anwendungsnamens ist nicht unbedingt erforderlich. Sie erfahren aber, wie Sie die gewünschten Optionen über das ShoppingContent.Builder
-Objekt festlegen, bevor Sie die build()
-Methode aufrufen.
AdWords API-Sitzungsobjekt erstellen
Es gibt auch eine AdWordsSession.Builder
-Klasse zum Erstellen von AdWordsSession
-Objekten. Der Hauptunterschied besteht hier darin, dass wir die Konfigurationsoptionen nicht direkt im Builder festlegen, sondern die fromFile()
-Methode verwenden, um sie aus der ads.properties
-Datei zu laden, die wir im vorherigen Schritt eingerichtet haben.
SolutionRunner.java
// TODO(sessions): Create a AdWordsSession object using AdWordsSession.Builder.
adWordsSession =
new AdWordsSession.Builder()
.fromFile()
.withOAuth2Credential(adwordsOAuth2Credential)
.build();
Jetzt testen
Wir verwenden dieselben Befehle wie im letzten Abschnitt, um das Maven-Projekt neu zu erstellen und auszuführen, wenn Sie es über die Befehlszeile ausführen:
mvn compile
mvn exec:java -Dexec.mainClass="SolutionRunner"
Dieses Mal sollten keine Fehler auftreten, auch wenn Sie keine interessante Ausgabe erhalten. Wir fügen dies hinzu, wenn wir die APIs zum Erstellen und Verknüpfen der neuen Konten aufrufen.
5. Neues verwaltetes AdWords-Konto erstellen
Nachdem Sie nun die API-Sitzungsobjekte erstellt haben, werden wir die zu verknüpfenden Konten durchgehen und erstellen. Wir beginnen mit AdWords und erstellen ein Testkonto in diesem Verwaltungskonto.
Auf ManagedCustomerService zugreifen
In der AdWords API greifen wir auf die verschiedenen verfügbaren Dienste zu, indem wir zuerst eine Instanz der AdWordsServices-Klasse mit der statischen Methode getInstance()
abrufen. Mit dieser Instanz können wir dann Clients für diese Dienste über die Methode get()
erstellen, die zwei Argumente anfordert: die Sitzung, für die der Client erstellt werden soll, und die Schnittstelle für den gewünschten Dienst.
SolutionRunner.java
// TODO(newAWaccount): Using the ManagedCustomerService, create a new testing AdWords account
// under the given manager account.
AdWordsServicesInterface adWordsServices = AdWordsServices.getInstance();
ManagedCustomerServiceInterface managedCustomerService =
adWordsServices.get(adWordsSession, ManagedCustomerServiceInterface.class);
Hier greifen wir auf den ManagedCustomerService zu und ermöglichen die Verwaltung von AdWords-Kunden. (Konten) aus einem bestimmten Verwaltungskonto.
Neue Kontoeinstellungen festlegen
Zuerst erstellen Sie ein ManagedCustomer-Objekt, das die Einstellungen für das neue Konto enthält. Wir erstellen ein Testkonto für dieses Codelab und legen die Währung auf USD und die Zeitzone auf die US-Westküste fest.
SolutionRunner.java
Random rand = new Random();
long run = rand.nextLong();
ManagedCustomer newAdWordsAccount = new ManagedCustomer();
newAdWordsAccount.setName(String.format("AdWords Account Created by Run %d", run));
newAdWordsAccount.setTestAccount(true);
newAdWordsAccount.setCurrencyCode("USD");
newAdWordsAccount.setDateTimeZone("America/Los_Angeles");
Außerdem erstellen wir eine Zufallszahl, die im Namen des Kontos enthalten ist. Dies dient nur dazu, das hier erstellte AdWords-Konto dem Merchant Center-Konto zuzuordnen, das wir später erstellen. So können wir das Konto visuell überprüfen, sobald die Lösung fertiggestellt ist, um sicherzustellen, dass die beiden Konten tatsächlich verknüpft sind.
Neues verwaltetes Konto erstellen
Zur Erstellung des neuen Kontos verwenden wir ManagedCustomerOperation, um eine ADD
-Operation anzugeben:
SolutionRunner.java
ManagedCustomerOperation operation = new ManagedCustomerOperation();
operation.setOperand(newAdWordsAccount);
operation.setOperator(Operator.ADD);
Anschließend führen wir den Vorgang mit der Methode mutate()
des ManagedCustomerService
-Objekts aus. Bei dieser Methode wird ein Array von Vorgängen benötigt, aber hier soll nur ein einziger Vorgang ausgeführt werden. Das Ergebnis der Methode mutate()
ist ein Wert, der eine Liste von ManagedCustomer
s enthält. erstellt haben, ist es eine Liste mit einem Kunden, dem neu erstellten Konto. Wir rufen die ID für das neue Konto zur späteren Verwendung ab und drucken sie, damit wir sie als Teil der Ausgabe unserer Lösung sehen können.
SolutionRunner.java
ManagedCustomerReturnValue result =
managedCustomerService.mutate(new ManagedCustomerOperation[] {operation});
Long adWordsId = result.getValue()[0].getCustomerId();
System.out.printf("Created new AdWords account %d%n", adWordsId);
Jetzt testen
Versuchen Sie wie zuvor, die Lösung auszuführen. Wenn Sie Maven über die Befehlszeile verwenden:
mvn compile
mvn exec:java -Dexec.mainClass="SolutionRunner"
Wenn alles gut geht, sollten immer noch keine Fehler angezeigt werden. Dieses Mal sehen wir die ID des neu erstellten AdWords-Kontos. Suchen Sie auf der AdWords nach Ihrem Verwaltungskonto. Das neue Konto sollte auch dort aufgeführt sein.
6. Neues Merchant Center-Unterkonto erstellen
In diesem Schritt erstellen wir das Merchant Center-Unterkonto, das wir mit dem im letzten Schritt erstellten AdWords-Konto verknüpfen. Anstatt nach dem Erstellen des Unterkontos eine Verknüpfung separat anzufordern, können wir die Verknüpfung bereits bei der Erstellung anfordern, da wir bereits die ID für das entsprechende AdWords-Konto haben.
Einstellungen für das neue Unterkonto festlegen
Im Gegensatz zur AdWords API geben die Setter für die Modellklasse Account
das Objekt zurück, sodass wir unsere Aufrufe im neuen Account
-Objekt an sie verketten können. Wir verwenden die Zufallszahl, die wir bei der Erstellung des AdWords-Kontos generiert haben, auch im Namen des neuen Merchant Center-Kontos.
SolutionRunner.java
Account newMcAccount = new Account()
.setName(String.format("Merchant Center Account Created by Run %d", run))
.setAdwordsLinks(
ImmutableList.of(
new AccountAdwordsLink()
.setAdwordsId(BigInteger.valueOf(adWordsId))
.setStatus("active")));
Da die AdWords-ID für das neue verwaltete Konto bereits vorhanden ist, können wir sie der Liste AdwordsLinks
für das neue Unterkonto hinzufügen, wie in der Einführung zu diesem Schritt erwähnt. Wenn das neue Unterkonto erstellt wird, wird diese Verknüpfung automatisch angefordert und ist in der AdWords API verfügbar.
Neues Unterkonto erstellen
In der Content API rufen wir die Methode accounts()
des Sitzungsobjekts auf, um auf den Dienst Accounts
zuzugreifen. Anschließend rufen wir die Methode insert()
direkt auf, anstatt ein Vorgangsobjekt einzurichten. Diese Methode verwendet zwei Argumente: die ID des Mehrfachkundenkontos, unter dem das neue Unterkonto erstellt werden soll, und das Account
-Objekt, das die gewünschten Einstellungen enthält:
SolutionRunner.java
newMcAccount = contentApiSession.accounts().insert(mcaId, newMcAccount).execute();
System.out.printf("Created new Merchant Center account %s%n", newMcAccount.getId());
Die Methode insert()
gibt ein Account
-Objekt zurück, das die Einstellungen für das neue Unterkonto enthält. Das ursprüngliche Account
-Objekt wird überschrieben, weil die zurückgegebene Version eine wichtige Information enthält: die ID des neuen Unterkontos. Wir geben dies in der Ausgabe unserer Lösung aus, damit wir unsere Lösung ausführen und dann prüfen können, ob das neue Unterkonto im Merchant Center vorhanden ist.
Jetzt testen
Versuchen Sie wie zuvor, die Lösung auszuführen. Wenn Sie Maven über die Befehlszeile verwenden:
mvn compile
mvn exec:java -Dexec.mainClass="SolutionRunner"
Wenn alles gut geht, sollten immer noch keine Fehler angezeigt werden. Dieses Mal sehen wir die IDs für das neue AdWords-Konto und das neue Merchant Center-Konto. Rufen Sie das Merchant Center für Ihr Mehrfachkundenkonto auf, um sich das neue Unterkonto dort anzusehen.
7. Verknüpfung im AdWords-Konto akzeptieren
Im letzten Schritt haben wir ein neues Merchant Center-Unterkonto erstellt und gleichzeitig die Verknüpfung mit dem neuen AdWords-Konto angefordert. In diesem Schritt wird der Vorgang abgeschlossen, indem die angeforderte Verknüpfung mithilfe der AdWords API akzeptiert wird.
Auf den CustomerService zugreifen
Wie zuvor verwenden wir die Klasse AdWordsServices
, um einen Client für die CustomerService
abzurufen. Bevor wir den Kunden erstellen, ändern wir jedoch zunächst das AdWords-Sitzungsobjekt, sodass künftige Verwendungen im neuen verwalteten Konto und nicht im Verwaltungskonto erfolgen. Denn schließlich wurde über das Merchant Center-Konto eine Verknüpfung mit dem verwalteten Konto angefordert, nicht mit dem Verwaltungskonto.
SolutionRunner.java
// TODO(acceptLink): Using the mutateServiceLinks method in CustomerService, accept the
// proposed link between the new AdWords account and the new Merchant Center account.
adWordsSession.setClientCustomerId(adWordsId.toString());
CustomerServiceInterface customerService =
adWordsServices.get(adWordsSession, CustomerServiceInterface.class);
Angeforderten Link angeben
Wie bei der Erstellung eines neuen AdWords-Kontos erstellen wir ein ServiceLink
-Objekt, das die Verknüpfungseinstellungen enthält, und dann ein ServiceLinkOperation
-Objekt, das die gewünschte Operation beschreibt. Hier möchten wir den ausstehenden Service-Link zu einem MERCHANT_CENTER
-Konto SET
und zu ACTIVE
übertragen. Für die Einstellung serviceLinkId
verwenden wir die ID des gerade erstellten Merchant Center-Kontos, da sie für die ID der Service-Verknüpfung in AdWords genutzt wird.
SolutionRunner.java
ServiceLink serviceLink = new ServiceLink();
serviceLink.setServiceLinkId(newMcAccount.getId().longValue());
serviceLink.setLinkStatus(ServiceLinkLinkStatus.ACTIVE);
serviceLink.setServiceType(ServiceType.MERCHANT_CENTER);
ServiceLinkOperation op = new ServiceLinkOperation();
op.setOperator(Operator.SET);
op.setOperand(serviceLink);
Link akzeptieren
Schließlich rufen wir die Methode mutateServiceLinks()
des CustomerService-Objekts auf, um den Vorgang auszuführen. Wie zuvor sind mehrere Dienstverknüpfungsvorgänge erforderlich. Dieses Mal gibt die Methode direkt eine Liste von (möglicherweise geänderten) Dienstlinks zurück. Wir geben also einfach das Ergebnis unserer Lösung aus, indem wir diese Liste durchgehen. Da wir nur einen einzigen Vorgang angegeben haben, erwarten Sie natürlich, dass in der Ausgabe nur ein einziger Link ausgegeben wird.
SolutionRunner.java
ServiceLink[] mutatedServiceLinks =
customerService.mutateServiceLinks(new ServiceLinkOperation[] {op});
for (ServiceLink mutatedServiceLink : mutatedServiceLinks) {
System.out.printf(
"Service link with service link ID %d, type '%s' updated to status: %s.%n",
mutatedServiceLink.getServiceLinkId(),
mutatedServiceLink.getServiceType(),
mutatedServiceLink.getLinkStatus());
}
Jetzt testen
Versuchen Sie wie zuvor, die Lösung auszuführen. Wenn Sie Maven über die Befehlszeile verwenden:
mvn compile
mvn exec:java -Dexec.mainClass="SolutionRunner"
Wenn alles gut geht, sollten immer noch keine Fehler angezeigt werden. Dieses Mal sehen wir außerdem einen Hinweis, dass der Service-Link aktualisiert wurde und aktiv ist. Sehen Sie in AdWords und im Merchant Center nach, ob die Konten tatsächlich verknüpft sind.
8. Varianten zu einem Thema
Herzlichen Glückwunsch! Du hast das Codelab abgeschlossen. Nachdem Sie nun eine voll funktionsfähige Lösung haben, sehen wir uns einige Beispiele dafür an, wie Sie sie ändern oder erweitern können, um weitere APIs aus diesem Codelab zu verwenden.
Zusätzliches Guthaben: Bestehendes Merchant Center-Konto aktualisieren, um eine AdWords-Verknüpfung anzufordern
Im Codelab haben wir das AdWords-Konto auf geschickte Weise erstellt, sodass wir anhand der Informationen beim Erstellen des Merchant Center-Kontos die Verknüpfung anfordern konnten. Wenn das Merchant Center-Konto jedoch bereits vorhanden ist, müssen Sie stattdessen seine Konfiguration aktualisieren. Ändern Sie zuerst Ihren Code, um ein Merchant Center-Konto zu erstellen. Gehen Sie dann zurück, nachdem Sie das AdWords-Konto erstellt haben, und aktualisieren Sie die Konfiguration, um die Verknüpfung anzufordern.
Zusätzliche Gutschrift: Überprüfen Sie die Verknüpfung, indem Sie die AdWords- und Merchant Center-Kontoinformationen abrufen.
Derzeit behandelt die Anwendung das Fehlen von Fehlern bei API-Aufrufen nur als Erfolgszeichen. Erweitern Sie das Beispiel, um die Verknüpfungsinformationen für das neue Merchant Center- und das AdWords-Konto zu überprüfen und zu sehen, ob die Verknüpfung aktiv ist.
Die Welt liegt zu dir
Wenn Ihnen weitere Änderungen einfallen, die Sie vornehmen könnten, probieren Sie sie aus! Wenn Sie Referenzcode für Ihre Ideen benötigen, sehen Sie sich die Google Shopping-Beispiele und das Verzeichnis examples
im Quellcode der Google Ads-Java-Clientbibliothek an.