隨時更新店內資訊

您可以使用 Merchant Inventories API 店面產品是否符合現況包括更新 priceavailability, 移除商店。

如果您是第三方供應商,可以使用 Merchant Inventories API 建立介面,方便商家更新店內供應情形 他們的產品。

依商店更新價格和供應情形

使用 localInventories.insert敬上 更新產品在店內資訊。

這場呼叫會取代 LocalInventory敬上 因此,請務必納入所有欄位。請參閱將店內資訊加入 須針對代碼提供店面產品 樣本和更多詳細資料

查看你現有的商店

本節說明如何查看與產品相關聯的商店,或是 讓他們使用服務帳戶

依產品

使用 localInventories.list敬上 列出與特定product相關聯的所有店面商品目錄資料 讓他們使用服務帳戶這項呼叫會傳回完整的 LocalInventory 資源。使用「store_code」 屬性來識別每間商店。

你可以使用以下範例列出產品的店面商品目錄資料:

Java

  public static void listLocalInventories(Config config, String productId) throws Exception {
    GoogleCredentials credential = new Authenticator().authenticate();

    LocalInventoryServiceSettings localInventoryServiceSettings =
        LocalInventoryServiceSettings.newBuilder()
            .setCredentialsProvider(FixedCredentialsProvider.create(credential))
            .build();

    String parent = getParent(config.getMerchantId().toString(), productId);

    try (LocalInventoryServiceClient localInventoryServiceClient =
        LocalInventoryServiceClient.create(localInventoryServiceSettings)) {

      //  The parent product has the format: accounts/{account}/products/{product}
      ListLocalInventoriesRequest request =
          ListLocalInventoriesRequest.newBuilder().setParent(parent).build();

      System.out.println("Sending list Local inventory request:");
      ListLocalInventoriesPagedResponse response =
          localInventoryServiceClient.listLocalInventories(request);

      int count = 0;

      // Iterates over all rows in all pages and prints the Local inventory
      // in each row.
      for (LocalInventory element : response.iterateAll()) {
        System.out.println(element);
        count++;
      }
      System.out.print("The following count of elements were returned: ");
      System.out.println(count);
    } catch (Exception e) {
      System.out.println(e);
    }
  }

cURL

  curl --location
  'https://merchantapi.googleapis.com/inventories/v1beta/accounts/987654321/products/en~US~12345/localInventories' \
  --header 'Authorization: Bearer <API_TOKEN>'

PHP

class ListLocalInventories
{

    // ENSURE you fill in the merchant account and product ID for the sample to
    // work.
    private const PARENT = 'accounts/[INSERT_ACCOUNT_HERE]/products/[INSERT_PRODUCT_HERE]';

    /**
     * Lists all the local inventories of a given product.
     *
     * @param string $parent The `name` of the parent product to list `LocalInventory`
     *     resources for.
     *     Format: `accounts/{account}/products/{product}`
     */
    function listLocalInventoriesSample(string $parent): void
    {
        // Gets the OAuth credentials to make the request.
        $credentials = Authentication::useServiceAccountOrTokenFile();

        // Creates options config containing credentials for the client to use.
        $options = ['credentials' => $credentials];

        // Creates a client.
        $localInventoryServiceClient = new LocalInventoryServiceClient($options);

        // Calls the API and catches and prints any network failures/errors.
        try {
            // Page size is set to the default value. If you are returned more
            // responses than your page size, this code will automatically
            // re-call the service with the `pageToken` until all responses
            // are returned.
            $parameters = ['pageSize' => 25000];

            /** @var PagedListResponse $response */
            $response =
                $localInventoryServiceClient->listLocalInventories($parent, $parameters);

            /** @var LocalInventory $element */
            foreach ($response as $element) {
                printf('LocalInventory data: %s%s', $element->serializeToJsonString(), PHP_EOL);
            }
        } catch (ApiException $ex) {
            printf('Call failed with message: %s%s', $ex->getMessage(), PHP_EOL);
        }
    }

    // Helper to execute the sample.
    function callSample(): void
    {
        // Lists all the local inventories of the parent product.
        $this->listLocalInventoriesSample($this::PARENT);
    }
}

Python

from examples.authentication import generate_user_credentials
from google.shopping import merchant_inventories_v1beta

# ENSURE you fill in the merchant account and product ID for the sample to
# work.
_ACCOUNT = "[INSERT_ACCOUNT_HERE]"
_PRODUCT = "[INSERT_PRODUCT_HERE]"
_PARENT = f"accounts/{_ACCOUNT}/products/{_PRODUCT}"


def list_local_inventories():
  """Lists the `LocalInventory` resources for the given product.

  The response might contain fewer items than specified by
  `pageSize`. If `pageToken` was returned in previous request, it can be
  used to obtain additional results.

  `LocalInventory` resources are listed per product for a given account.
  """

  # Gets OAuth Credentials.
  credentials = generate_user_credentials.main()

  # Creates a client.
  client = merchant_inventories_v1beta.LocalInventoryServiceClient(
      credentials=credentials)

  # Creates the request.
  # Page size is set to the default value.
  request = merchant_inventories_v1beta.ListLocalInventoriesRequest(
      parent=_PARENT,
      page_size=25000
  )

  try:
    # Makes the request and catch and print any error messages.
    # If you are returned more responses than your page size, this code
    # will automatically re-call the service with the `pageToken` until all
    # responses are returned.
    page_result = client.list_local_inventories(request=request)

    # Print the response.
    for response in page_result:
      print(response)

  except Exception as e:
    print("List failed")
    print(e)

按照客戶篩選

你可以在商家頁面 商家檔案,或透過 Google 我的商家 API。您無法使用 Merchant API 查看或 請在帳戶層級管理商店,因為這項資訊來自 。

移除商店

以下說明如何移除不再販售產品的商店。

來自產品

如果特定商店已不再販售某項產品,請移除店面 建立商品目錄別擔心!您可以使用 localInventories.delete敬上 從產品中移除特定的店面商品目錄資料。

以下舉例說明如何移除產品中的店面商品目錄資料項目:

Java

  public static void deleteLocalInventory(Config config, String productId, String storeCode)
      throws Exception {
    GoogleCredentials credential = new Authenticator().authenticate();

    LocalInventoryServiceSettings localInventoryServiceSettings =
        LocalInventoryServiceSettings.newBuilder()
            .setCredentialsProvider(FixedCredentialsProvider.create(credential))
            .build();

    String name =
        LocalInventoryName.newBuilder()
            .setAccount(config.getMerchantId().toString())
            .setProduct(productId)
            .setStoreCode(storeCode)
            .build()
            .toString();

    try (LocalInventoryServiceClient localInventoryServiceClient =
        LocalInventoryServiceClient.create(localInventoryServiceSettings)) {
      DeleteLocalInventoryRequest request =
          DeleteLocalInventoryRequest.newBuilder().setName(name).build();

      System.out.println("Sending deleteLocalInventory request");
      localInventoryServiceClient.deleteLocalInventory(request); // no response returned on success
      System.out.println(
          "Delete successful, note that it may take up to 30 minutes for the delete to update in"
              + " the system.");
    } catch (Exception e) {
      System.out.println(e);
    }
  }

cURL

  curl --location --request DELETE
  'https://merchantapi.googleapis.com/inventories/v1beta/accounts/987654321/products/en~US~12345/localInventories/123456' \
  --header 'Authorization: Bearer <API_TOKEN>'

PHP

class DeleteLocalInventory
{

    // ENSURE you fill in the merchant account, product, and region ID for the
    // sample to work.
    private const ACCOUNT = 'INSERT_ACCOUNT_ID_HERE';
    private const PRODUCT = 'INSERT_PRODUCT_ID_HERE';
    private const STORE_CODE = 'INSERT_STORE_CODE_HERE';

    /**
     * Deletes a specific local inventory of a given product.
     *
     * @param string $formattedName The name of the `LocalInventory` resource
     * to delete.
     *     Format: `accounts/{account}/products/{product}/localInventories/{store_code}`
     *     Please see {@see LocalInventoryServiceClient::localInventoryName()}
     *     for help formatting this field.
     */
    function deleteLocalInventorySample(string $formattedName): void
    {
         // Gets the OAuth credentials to make the request.
         $credentials = Authentication::useServiceAccountOrTokenFile();

         // Creates options config containing credentials for the client to use.
         $options = ['credentials' => $credentials];

         // Creates a client.
         $localInventoryServiceClient = new LocalInventoryServiceClient($options);

         // Calls the API and catches and prints any network failures/errors.
         try {
             $localInventoryServiceClient->deleteLocalInventory($formattedName);
             print 'Delete call completed successfully.' . PHP_EOL;
         } catch (ApiException $ex) {
             printf('Call failed with message: %s%s', $ex->getMessage(), PHP_EOL);
         }
    }

    /**
     * Helper to execute the sample.
     */
    function callSample(): void
    {
        // These variables are defined at the top of the file.
        $formattedName = LocalInventoryServiceClient::localInventoryName(
            $this::ACCOUNT,
            $this::PRODUCT,
            $this::STORE_CODE
        );

        // Deletes the specific local inventory of the parent product.
        $this->deleteLocalInventorySample($formattedName);
    }
}

Python

from examples.authentication import generate_user_credentials
from google.shopping import merchant_inventories_v1beta

# ENSURE you fill in the merchant account and product ID and store code
# for the sample to work.
_ACCOUNT = "[INSERT_ACCOUNT_HERE]"
_PRODUCT = "[INSERT_PRODUCT_HERE]"
_STORE_CODE = "[INSERT_STORE_CODE_HERE]"
_NAME = (f"accounts/{_ACCOUNT}/products/{_PRODUCT}/localInventories/"
         f"{_STORE_CODE}")


def delete_local_inventory():
  """Deletes the specified `LocalInventory` resource from the given product.

  It might take up to an hour for the `LocalInventory` to be deleted
  from the specific product. Once you have received a successful delete
  response, wait for that period before attempting a delete again.
  """

  # Gets OAuth Credentials.
  credentials = generate_user_credentials.main()

  # Creates a client.
  client = merchant_inventories_v1beta.LocalInventoryServiceClient(
      credentials=credentials)

  # Creates the request.
  request = merchant_inventories_v1beta.DeleteLocalInventoryRequest(name=_NAME)

  # Makes the request and catch and print any error messages.
  try:
    client.delete_local_inventory(request=request)
    print("Delete successful")
  except Exception as e:
    print("Delete failed")
    print(e)

這個呼叫只會從 指定產品的類型

從帳戶

您可以從帳戶中移除不再販售產品的商店 從您的商家檔案中移除他們。詳情請見 將商家標示為已停業或移除: 瞭解詳情