Preisvergleichsportal-Produkt aktualisieren

Mit der Methode UpdateCssProductInput können Sie ein vorhandenes einzelnes CSS-Produkt aktualisieren. Dazu geben Sie das Produkt cssProductInput.name und einen JSON-Textkörper mit den Daten an, die Sie für das Produkt aktualisieren möchten.

Hinweis: Mit dieser Methode werden nur die Attribute aktualisiert, die in der Aktualisierungsanfrage angegeben sind. Die Antwort enthält dieselben Attribute wie die Anfrage und spiegelt nicht den vollständigen CssProductInput-Status nach der Aktualisierung wider. Sie sollten sich nicht auf die Antwort verlassen, um den endgültigen Status von CssProductInput zu ermitteln.

PATCH https://css.googleapis.com/v1/accounts/{ACCOUNT_ID}/cssProductInputs/{CSS_PRODUCT_ID}

Wenn Sie ein Attribut in einem Produkt hinzufügen oder ändern möchten, geben Sie das Feld mit dem neuen Wert im JSON-Text an. Im gezeigten Beispiel werden der Titel und der Link zum Hauptangebot eines vorhandenen Produktnamens 123/cssProductInputs/de~DE~B019G4 mit dem im Anfragetext angegebenen Attributwert aktualisiert. Alle anderen Felder bleiben unverändert.

HTTP

PATCH https://css.googleapis.com/v1/accounts/{ACCOUNT_ID}/cssProductInputs/{CSS_PRODUCT_ID}
{
  "attributes": {
    "title": "new item title",
    "headlineOfferLink": "headline-offer.com"
  }
}

cURL

curl --location --request PATCH 'https://css.googleapis.com/v1/accounts/{ACCOUNT_ID}/cssProductInputs/{CSS_PRODUCT_ID}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <API_TOKEN>' \
--data '{"attributes":{"numberOfOffers":"99","headlineOfferPrice":{"currency_code":"EUR","amount_micros":"1200000"}}}'

Java

// Copyright 2023 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package shopping.css.samples.v1.cssproducts;

import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.protobuf.FieldMask;
import com.google.shopping.css.v1.CssProductInput;
import com.google.shopping.css.v1.CssProductInputsServiceClient;
import com.google.shopping.css.v1.CssProductInputsServiceSettings;
import com.google.shopping.css.v1.UpdateCssProductInputRequest;
import shopping.css.samples.utils.Authenticator;
import shopping.css.samples.utils.Config;

/** This class demonstrates how to update a CSS Product for a given Account */
public class UpdateCssProductInput {

  private static String getName(String domainId, String productId) {
    return String.format("accounts/%s/cssProductInputs/%s", domainId, productId);
  }

  public static void updateCssProductInput(Config config, String productId) throws Exception {
    GoogleCredentials credential = new Authenticator().authenticate();
    String name = getName(config.getDomainId().toString(), productId);

    CssProductInputsServiceSettings cssProductInputsServiceSettings =
        CssProductInputsServiceSettings.newBuilder()
            .setCredentialsProvider(FixedCredentialsProvider.create(credential))
            .build();

    try (CssProductInputsServiceClient cssProductInputsServiceClient =
        CssProductInputsServiceClient.create(cssProductInputsServiceSettings)) {

      // Updates the title of the CSS Product leaving the rest of the fields unchanged
      UpdateCssProductInputRequest request =
          UpdateCssProductInputRequest.newBuilder()
              .setCssProductInput(
                  CssProductInput.newBuilder()
                      .setName(name)
                      .setAttributes(
                          com.google.shopping.css.v1.Attributes.newBuilder()
                              .setTitle("Attribute Title")
                              .setHeadlineOfferLink("abc.com")
                              .setHeadlineOfferCondition("New")
                              .setDescription("CSS Product description 0")
                              .build())
                      .build())
              .setUpdateMask(FieldMask.newBuilder().addPaths("title").build())
              .build();

      System.out.println("Updating CSS Product");
      CssProductInput response = cssProductInputsServiceClient.updateCssProductInput(request);
      System.out.print("CSS product updated:");

    } catch (Exception e) {
      System.out.println(e);
    }
  }

  public static void main(String[] args) throws Exception {
    final Config config = Config.load();

    // The ID uniquely identifying each product. In
    // the format languageCode~countryCode~rawProvidedId
    final String productId = "de~DE~rawProvidedId17";
    updateCssProductInput(config, productId);
  }
}

Mit der cssProductInputs.update-Anfrage können nur Felder der obersten Ebene aktualisiert werden. Wenn Sie verschachtelte Felder aktualisieren möchten, müssen Sie das gesamte Objekt der obersten Ebene angeben.

Im gezeigten Beispiel wird das headlineOfferPrice-Objekt der obersten Ebene aktualisiert, einschließlich der verschachtelten Felder eines vorhandenen Produkts, mit den im Anfragebody angegebenen Produktdaten. Alle anderen Felder bleiben unverändert.

PATCH https://css.googleapis.com/v1/accounts/{ACCOUNT_ID}/cssProductInputs/{CSS_PRODUCT_ID}
{
  "attributes": {
    "headlineOfferPrice": {
      "amountMicros": "17.99",
      "currencyCode": "USD"
    }
  }
}

Wenn Sie bestimmte Felder zum Aktualisieren auswählen möchten, ohne die anderen Felder im Anfragetext zu ändern, können Sie ein updateMask angeben. Dieser Abfragestringparameter sollte eine durch Kommas getrennte Liste der Felder sein, die Sie ändern müssen. Ein updateMask ist nützlich, wenn Sie sicherstellen möchten, dass nur die benannten Felder aktualisiert werden. Wenn Sie keine updateMask angeben, werden alle Felder in der Anfrage aktualisiert, wie im Beispiel gezeigt. Wenn jedoch kein updateMask explizit angegeben wird, ist es nicht möglich, vorhandene Attribute zu löschen.

Im gezeigten Beispiel wird nur das title des vorhandenen Artikels mit den entsprechenden Produktdaten im Anfragetext aktualisiert. Alle anderen Felder, einschließlich des headline offer link, bleiben unverändert.

PATCH https://css.googleapis.com/v1/accounts/{ACCOUNT_ID}/cssProductInputs/{CSS_PRODUCT_ID}?updateMask=title
{
  "attributes": {
    "title":"item-title",
    "headlineOfferLink":"headline-offer-newer.com"
  }
}

Wenn ein Feld in der Liste „updateMask“ angegeben, aber nicht im Text der Anfrage enthalten ist, wird es aus der Produktressource gelöscht, sofern es vorhanden ist.

Im gezeigten Beispiel wird mit „updateMask“ der Wert für das Feld title entfernt.

PATCH https://css.googleapis.com/v1/accounts/{ACCOUNT_ID}/cssProductInputs/{CSS_PRODUCT_ID}?updateMask=title

ACCOUNT_ID: Eindeutige Kennzeichnung für das Konto, z. B. 123.

CSS_PRODUCT_ID: Die Produkt-ID des Preisvergleichsportals, z. B. de~DE~B019G4.

Wenn Sie das Feld title löschen möchten, lassen Sie es im Anfragetext weg. Sie können die Anfrage auch ohne Text oder mit einem leeren Text senden. Felder, die nicht in „updateMask“ enthalten sind, bleiben unverändert.