Memperbarui Produk CSS

Gunakan metode UpdateCssProductInput untuk memperbarui satu produk CSS yang ada dengan menentukan cssProductInput.name produk dan isi JSON yang berisi data yang ingin Anda perbarui untuk produk tersebut.

Catatan: Metode ini hanya memperbarui atribut yang diberikan dalam permintaan update. Respons berisi atribut yang sama dengan permintaan dan tidak mencerminkan status CssProductInput lengkap setelah update diterapkan. Anda tidak boleh mengandalkan respons untuk menentukan status akhir CssProductInput.

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

Untuk menambahkan atau mengubah atribut dalam produk, tentukan kolom dengan nilai baru dalam isi JSON. Contoh yang ditampilkan akan memperbarui judul dan link penawaran headline dari nama produk yang ada 123/cssProductInputs/de~DE~B019G4 dengan nilai atribut yang diberikan dalam isi permintaan, sehingga semua kolom lainnya tidak akan terpengaruh.

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

Hanya kolom tingkat teratas yang dapat diperbarui dengan permintaan cssProductInputs.update. Jika ingin memperbarui kolom bertingkat, Anda harus memberikan seluruh objek tingkat atas.

Contoh yang ditampilkan akan memperbarui objek headlineOfferPrice tingkat teratas, termasuk kolom bertingkat dari produk yang ada, dengan data produk yang diberikan dalam isi permintaan, sehingga semua kolom lainnya tidak akan diubah.

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

Untuk memilih kolom tertentu yang akan diperbarui tanpa membuat perubahan pada kolom lain yang disertakan dalam isi permintaan, Anda dapat menentukan updateMask. Parameter string kueri ini harus berupa daftar kolom yang dipisahkan koma yang perlu Anda ubah. updateMask berguna saat Anda ingin menyatakan bahwa hanya kolom yang dinamai yang akan diperbarui. Tidak menentukan updateMask sama dengan menandai semua kolom dalam permintaan untuk diperbarui, seperti yang ditunjukkan dalam contoh. Namun, jika updateMask tidak diberikan secara eksplisit, atribut yang ada tidak dapat dihapus.

Contoh yang ditampilkan akan memperbarui hanya title item yang ada dengan data produk masing-masing yang diberikan dalam isi permintaan, sehingga semua kolom lain termasuk headline offer link tidak akan berubah.

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

Jika kolom disediakan dalam daftar updateMask, tetapi tidak dalam isi permintaan, kolom tersebut akan dihapus dari resource Produk, jika ada.

Contoh yang ditampilkan akan menggunakan updateMask untuk menghapus nilai untuk kolom title.

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

ACCOUNT_ID: ID unik untuk akun, misalnya, 123.

CSS_PRODUCT_ID: ID produk CSS, misalnya, de~DE~B019G4.

Untuk menghapus kolom title, hapus dari isi permintaan. Anda juga dapat mengirim permintaan tanpa isi atau isi kosong. Kolom yang tidak ada dalam updateMask tidak akan berubah.