AdWords- und Merchant Center-Unterkonten erstellen und verknüpfen

1. Einführung

In diesem Codelab lernen Sie die Grundlagen der Arbeit mit der Content API for Shopping und der AdWords API kennen und erstellen eine Anwendung, in der beide verwendet werden. Insbesondere erstellen Sie eine Befehlszeilen-Anwendung, mit der ein AdWords-Konto und ein Merchant Center-Konto erstellt und verknüpft werden.

Aufgaben in diesem Lab

  • Hier erfahren Sie, wie Sie AdWords-Konten erstellen, die von einem Verwaltungskonto verwaltet werden.
  • Merchant Center-Konten erstellen, die von einem Mehrfachkundenkonto verwaltet werden
  • So beantragen Sie eine Verknüpfung zwischen einem Merchant Center-Konto und einem AdWords-Konto.
  • So akzeptieren Sie eine ausstehende Merchant Center-Verknüpfung in einem AdWords-Konto.

Voraussetzungen

2. Einrichtung

Code herunterladen

Klicken Sie auf den folgenden Link, um den gesamten Code für dieses Codelab herunterzuladen:

Entpacken Sie die heruntergeladene ZIP-Datei. Dadurch wird ein Stammordner (shopping-account-linking-master) entpackt, der ein Maven-Projekt mit allen erforderlichen Ressourcen enthält. Die folgenden Unterverzeichnisse sind besonders wichtig:

  • src/main/java ist das Stammverzeichnis des Maven-Projekts und enthält ein Code-Skelett, mit dem Sie arbeiten können.
  • src/main/java/solution enthält die fertige Lösung.

Erforderliche Pakete installieren und Build ausführen

Wenn Sie eine Maven-kompatible IDE wie Eclipse oder IntelliJ verwenden, können Sie den extrahierten Ordner als Maven-Projekt importieren und das Projekt dann wie gewohnt 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 Stammverzeichnis des entpackten Projekts (shopping-account-linking-master) zu kompilieren:

mvn compile

3. Authentifizierung einrichten

In diesem Schritt wird kein Code geschrieben, sondern Dateien mit geeigneten Authentifizierungstokens für die AdWords API und die Content API for Shopping eingerichtet.

AdWords API-Authentifizierung einrichten

In diesem Codelab wird dasselbe Anmeldedaten-Ladeverfahren wie in der Clientbibliothek verwendet. Wenn Sie also bereits die Google Ads APIs Client Library for Java mit Ihrem Verwaltungskonto verwendet haben, ist die Einrichtung bereits abgeschlossen. Andernfalls folgen Sie den Schritten 1 bis 3 der Einstiegsanleitung für die Google Ads API-Clientbibliothek für Java.

Authentifizierung für die Content API einrichten

Wenn Sie noch keinen Dienstkontoschlüssel haben, gehen Sie so vor:

  1. Rufen Sie das Merchant Center für Ihr Mehrfachkundenkonto auf und wählen Sie im Dreipunkt-Menü die Option Content API aus: 89507d635c51a3dc.png
  2. Wählen Sie Authentifizierung aus und klicken Sie dann auf die blaue Schaltfläche +: c465d8dc314ec158.png
  3. Nachdem Sie die Nutzungsbedingungen für die Google Cloud Platform und Google APIs akzeptiert haben, wird in Ihrem Browser automatisch eine JSON-Datei mit dem neuen Dienstkontoschlüssel heruntergeladen.

Folgen Sie nun der Anleitung zum Einrichten der Authentifizierung für die Shopping-Beispiele mit einem Dienstkonto. Das bedeutet, dass sich eine Kopie Ihres Dienstkontoschlüssels unter dem folgenden Pfad in Ihrem Basisverzeichnis befinden sollte: shopping-samples/content/service-account.json. Sie müssen die Konfiguration der Samples nicht einrichten, es sei denn, Sie möchten die Samples nach Abschluss dieses Codelabs ausprobieren.

Jetzt testen

Da sich die Authentifizierungstokens jetzt an den richtigen Stellen befinden, können Sie die Samples ausführen. Wenn Sie Maven in der Befehlszeile verwenden, führen Sie die folgenden Befehle aus:

mvn compile
mvn exec:java -Dexec.mainClass="SolutionRunner"

Wenn du eine Fehlermeldung erhältst, dass keine Sitzungsobjekte bereitgestellt wurden, sind deine Authentifizierungstokens vorhanden und funktionieren ordnungsgemäß. Andernfalls sollte die Fehlermeldung angeben, welche Anmeldedaten nicht funktioniert haben und welche Datei korrigiert werden muss.

4. Verbindung zu den APIs herstellen

Da Sie jetzt gültige Authentifizierungstokens für die beiden APIs haben, die wir verwenden werden, können wir mit dem Erstellen des eigentlichen Codes beginnen. Wir beginnen mit dem Erstellen von Sitzungsobjekten mit unseren Authentifizierungstokens. In späteren Schritten greifen wir mithilfe dieser Sitzungsobjekte auf die verschiedenen Dienste und Methoden zu, die jede API bietet.

Content API-Sitzungsobjekt erstellen

Um eine Content API-Sitzung zu erstellen, erstellen wir ein ShoppingContent.Builder-Objekt und verwenden es dann, um das entsprechende ShoppingContent-Objekt zu erstellen. Glücklicherweise ist alles, was wir für die erste Funktion benötigen, bereits im Code-Skelett verfügbar. Wir müssen es nur so zusammenstellen:

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. Es zeigt jedoch, wie Sie alle gewünschten Optionen über das ShoppingContent.Builder-Objekt festlegen, bevor Sie die build()-Methode aufrufen.

AdWords API-Sitzungsobjekt erstellen

Ebenso gibt es eine AdWordsSession.Builder-Klasse zum Erstellen von AdWordsSession-Objekten. Der Hauptunterschied besteht darin, dass wir die Konfigurationsoptionen nicht direkt im Builder festlegen, sondern sie mit der Methode fromFile() aus der Datei ads.properties 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"

Diesmal sollten Sie keine Fehler erhalten, aber auch keine interessanten Ergebnisse. Wir fügen das hinzu, wenn wir die APIs aufrufen, um die neuen Konten zu erstellen und zu verknüpfen.

5. Neues verwaltetes AdWords-Konto erstellen

Nachdem wir unsere API-Sitzungsobjekte erstellt haben, erstellen wir die Konten, die wir verknüpfen möchten. Wir beginnen mit AdWords und erstellen ein Testkonto in unserem Verwaltungskonto.

Auf den ManagedCustomerService zugreifen

In der AdWords API greifen wir auf die verschiedenen verfügbaren Dienste zu, indem wir zuerst eine Instanz der Klasse AdWordsServices mithilfe der statischen Methode getInstance() abrufen. Mit dieser Instanz können wir dann über die Methode get() Clients für diese Dienste erstellen. Diese Methode nimmt zwei Argumente entgegen: die Sitzung, für die der Client erstellt werden soll, und die Benutzeroberfläche 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, mit dem wir AdWords-Kunden (Konten) über ein bestimmtes Verwaltungskonto verwalten können.

Neue Kontoeinstellungen angeben

Zuerst erstellen wir ein ManagedCustomer-Objekt mit den Einstellungen für unser neues Konto. Wir erstellen ein Testkonto für dieses Codelab und legen als Währung „USD“ und als Zeitzone die Zeitzone der 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 wir in den Namen des Kontos aufnehmen. So können wir das hier erstellte AdWords-Konto mit dem später erstellten Merchant Center-Konto abgleichen und nach Abschluss der Lösung prüfen, ob die beiden Konten tatsächlich verknüpft sind.

Neues verwaltetes Konto erstellen

Um das neue Konto zu erstellen, verwenden wir ManagedCustomerOperation, um einen ADD-Vorgang anzugeben:

SolutionRunner.java

ManagedCustomerOperation operation = new ManagedCustomerOperation();
operation.setOperand(newAdWordsAccount);
operation.setOperator(Operator.ADD);

Anschließend führen wir den Vorgang mit der mutate()-Methode des ManagedCustomerService-Objekts aus. Diese Methode nimmt ein Array von Vorgängen an, die ausgeführt werden sollen. Wir möchten hier jedoch nur einen einzelnen Vorgang ausführen. Das Ergebnis der Methode mutate() ist ein Wert, der eine Liste von ManagedCustomers enthält. Hier ist es eine Liste mit einem Kunden, dem neu erstellten Konto. Wir rufen die ID für dieses neue Konto für die spätere Verwendung ab und drucken sie auch aus, damit sie in der Ausgabe unserer Lösung zu sehen ist.

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 richtig funktioniert, sollten Sie weiterhin keine Fehler sehen. Diesmal sehen wir die ID des neuen AdWords-Kontos, das wir erstellt haben. Wenn Sie auf der AdWords nach Ihrem Verwaltungskonto suchen, sollte dort auch das neue Konto 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 untergeordneten Kontos separat eine Verknüpfung anzufordern, können wir die Verknüpfung während 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 Account-Modellklasse das Objekt zurück. So können wir unsere Aufrufe an das neue Account-Objekt verketten. Die Zufallszahl, die wir bei der Erstellung des AdWords-Kontos generiert haben, wird auch für den Namen des neuen Merchant Center-Kontos verwendet.

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")));

Wie bereits in der Einführung zu diesem Schritt erwähnt, können wir die AdWords-ID für das neue verwaltete Konto jetzt der Liste der AdwordsLinks für das neue Unterkonto hinzufügen. 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 accounts()-Methode des Sitzungsobjekts auf, um auf den Accounts-Dienst zuzugreifen, und dann die insert()-Methode direkt, anstatt ein Vorgangsobjekt einzurichten. Diese Methode nimmt zwei Argumente an: die ID des Mehrfachkundenkontos, unter dem das neue Unterkonto erstellt werden soll, und das Account-Objekt mit den gewünschten Einstellungen:

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. Wir überschreiben das ursprüngliche Account-Objekt, da die zurückgegebene Version eine wichtige Information enthält: die ID des neuen Unterkontos. Wir drucken diese in die 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 richtig funktioniert, sollten Sie weiterhin keine Fehler sehen. Diesmal sehen wir die IDs sowohl für das neue AdWords-Konto als auch für das neue Merchant Center-Konto. Im Merchant Center finden Sie Ihr Mehrfachkundenkonto und dort auch das neue Unterkonto.

7. Verknüpfung aus dem AdWords-Konto akzeptieren

Im letzten Schritt haben wir ein neues Merchant Center-Unterkonto erstellt und gleichzeitig die Verknüpfung mit unserem neuen AdWords-Konto angefordert. In diesem Schritt schließen wir den Vorgang ab, indem wir die angeforderte Verknüpfung über die AdWords API akzeptieren.

Auf den CustomerService zugreifen

Wie zuvor verwenden wir die Klasse AdWordsServices, um einen Client für die CustomerService abzurufen. Bevor wir den Client erstellen, ändern wir jedoch unser AdWords-Sitzungsobjekt, damit zukünftige Verwendungen im neuen verwalteten Konto statt im Verwaltungskonto erfolgen. Schließlich wurde für 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);

Ähnlich wie beim Erstellen eines neuen AdWords-Kontos erstellen wir ein ServiceLink-Objekt mit den Verknüpfungseinstellungen und dann ein ServiceLinkOperation-Objekt, das die gewünschte Aktion beschreibt. Hier möchten wir die ausstehende Dienstverknüpfung mit einem MERCHANT_CENTER-Konto SET mit ACTIVE verknüpfen. Für die Einstellung serviceLinkId verwenden wir die ID des gerade erstellten Merchant Center-Kontos, da diese für die ID der Dienstverknüpfung in AdWords verwendet 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);

Abschließend rufen wir die Methode mutateServiceLinks() des CustomerService-Objekts auf, um den Vorgang auszuführen. Wie zuvor wird eine Reihe von Vorgängen für Dienstverknüpfungen verwendet. Diesmal gibt die Methode direkt eine Liste mit (möglicherweise geänderten) Dienstlinks zurück. Wir drucken das Ergebnis unserer Lösung einfach aus, indem wir eine Schleife über diese Liste ausführen. Da wir nur einen einzelnen Vorgang angegeben haben, wird in der Ausgabe natürlich nur ein Link ausgegeben.

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 in Ordnung ist, sollten Sie weiterhin keine Fehler sehen. Diesmal sehen wir auch eine Benachrichtigung, dass der Dienstlink aktualisiert wurde, um aktiv zu sein. Prüfen Sie in AdWords und im Merchant Center, ob die Konten jetzt tatsächlich verknüpft sind.

8. Variationen eines Themas

Herzlichen Glückwunsch, dass Sie das Codelab erfolgreich abgeschlossen haben. Jetzt haben Sie eine voll funktionsfähige Lösung. Sehen wir uns einige Beispiele an, wie Sie sie ändern oder erweitern können, um mehr der APIs zu verwenden, die Sie in diesem Codelab kennengelernt haben.

Im Codelab haben wir das AdWords-Konto zuerst erstellt, damit wir die Informationen daraus verwenden konnten, um die Verknüpfung beim Erstellen des Merchant Center-Kontos anzufordern. Wenn das Merchant Center-Konto bereits vorhanden ist, müssen Sie stattdessen die Konfiguration aktualisieren. Ändern Sie den Code so, dass zuerst das Merchant Center-Konto erstellt wird. Kehren Sie dann nach dem Erstellen des AdWords-Kontos zurück und aktualisieren Sie die Konfiguration, um die Verknüpfung anzufordern.

Derzeit betrachtet die Anwendung nur das Fehlen von Fehlern bei API-Aufrufen als Zeichen für einen Erfolg. Erweitern Sie das Beispiel, um die Verknüpfungsinformationen für die neuen Merchant Center- und AdWords-Konten zu prüfen und sicherzustellen, dass die Verknüpfung tatsächlich aktiv ist.

Die Welt zu Füßen

Wenn dir weitere Änderungen einfallen, kannst du sie ausprobieren. Wenn Sie Referenzcode für Ihre Ideen benötigen, sehen Sie sich die Google Shopping-Beispiele und das Verzeichnis examples in der Java-Clientbibliotheksquelle von Google Ads an.