オンライン商品に地域別情報を追加する

Merchant Inventories API を使用すると、商品情報が地域ごとに異なることを示すことができます。たとえば、異なる場所で異なる商品を販売したり、同じ商品に対して購入場所に応じて異なる価格を請求したりできます。

詳細については、地域別の在庫状況と料金をご覧ください。

地域別の情報は、オンラインで販売する商品に使用します。店舗の商品について詳しくは、ローカル商品に店舗情報を追加するをご覧ください。

オンライン商品に地域別情報を追加する手順は次のとおりです。

地域を作成する

商品に地域情報を追加する前に、販売アカウントに地域を設定する必要があります。新しい地域を作成するには、Content API for Shopping の regions リソースを使用します。

コードサンプルについては、リージョン ガイドをご覧ください。リージョンの管理の詳細については、こちらをご覧ください。

オンライン商品があることを確認する

Content API for Shopping を使用すると、channelアカウントの商品をフィルタして、既存のオンライン商品があるかどうかを確認できます。オンライン商品の channel の値として online を指定する必要があります。

オンライン商品をアカウントに追加する必要がある場合は、Content API for Shopping を使用して新しい商品を挿入するか、フィードを作成します。

地域情報を挿入

販売アカウントにオンライン商品を追加したら、regionpriceavailability などの地域情報を追加できます。

次のサンプルを使用すると、regionalInventories.insert を使用して商品に地域情報を追加できます。

Java

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

    RegionalInventoryServiceSettings regionalInventoryServiceSettings =
        RegionalInventoryServiceSettings.newBuilder()
            .setCredentialsProvider(FixedCredentialsProvider.create(credential))
            .build();

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

    try (RegionalInventoryServiceClient regionalInventoryServiceClient =
        RegionalInventoryServiceClient.create(regionalInventoryServiceSettings)) {

      Price price = Price.newBuilder().setAmountMicros(33_450_000).setCurrencyCode("USD").build();

      InsertRegionalInventoryRequest request =
          InsertRegionalInventoryRequest.newBuilder()
              .setParent(parent)
              .setRegionalInventory(
                  RegionalInventory.newBuilder()
                      .setAvailability("out of stock")
                      .setRegion(regionId)
                      .setPrice(price)
                      .build())
              .build();

      System.out.println("Sending insert RegionalInventory request");
      RegionalInventory response = regionalInventoryServiceClient.insertRegionalInventory(request);
      System.out.println("Inserted RegionalInventory Name below");
      System.out.println(response.getName());
    } catch (Exception e) {
      System.out.println(e);
    }
  }

cURL

  curl --location
  'https://merchantapi.googleapis.com/inventories/v1beta/accounts/987654321/products/en~US~12345/regionalInventories:insert' \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer <API_TOKEN>' \
  --data '{
     "region": "123456",
     "price": {
         "amountMicros": "33450000",
         "currencyCode": "USD"
     },
     "availability": "out of stock"
  }'

PHP

class InsertRegionalInventory
{
    // 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]';
    // ENSURE you fill in region ID for the sample to work.
    private const REGIONAL_INVENTORY_REGION = 'INSERT_REGION_HERE';

    /**
     * Inserts a regional inventory underneath the parent product.
     *
     * @param string $parent The account and product where this inventory will be inserted.
     *     Format: `accounts/{account}/products/{product}`
     * @param string $regionalInventoryRegion
     *     ID of the region for this
     *     `RegionalInventory` resource. See the [Regional availability and
     *     pricing](https://support.google.com/merchants/answer/9698880) for more details.
     */
    public function insertRegionalInventorySample(string $parent, string $regionalInventoryRegion): 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.
        $regionalInventoryServiceClient = new RegionalInventoryServiceClient($options);

        // Creates a price object.
        $price = new Price(
            [
                'currency_code' => "USD",
                'amount_micros' => 33450000,
            ]
        );

        // Creates a new regional inventory object.
        $regionalInventory = (new RegionalInventory())
            ->setRegion($regionalInventoryRegion)
            ->setAvailability("in stock")
            ->setPrice($price);

        // Calls the API and catches and prints any network failures/errors.
        try {
            /** @var RegionalInventory $response */
            $response = $regionalInventoryServiceClient->insertRegionalInventory(
                $parent,
                $regionalInventory
            );
            printf('Response data: %s%s', $response->serializeToJsonString(), PHP_EOL);
        } catch (ApiException $ex) {
            printf('Call failed with message: %s%s', $ex->getMessage(), PHP_EOL);
        }
    }

    /**
     * Helper to execute the sample.
     */
    public function callSample(): void
    {
        // Makes the call to insert the regional inventory to the parent product
        // for the given region.
        $this->insertRegionalInventorySample($this::PARENT, $this::REGIONAL_INVENTORY_REGION);
    }

}

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}"
# ENSURE you fill in region ID for the sample to work.
_REGION = "INSERT_REGION_HERE"


def insert_regional_inventory():
  """Inserts a `RegionalInventory` to a given product.

  Replaces the full `RegionalInventory` resource if an entry with the same
  `region` already exists for the product.

  It might take up to 30 minutes for the new or updated `RegionalInventory`
  resource to appear in products.
  """

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

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

  # Creates a regional inventory and populate its attributes.
  regional_inventory = merchant_inventories_v1beta.RegionalInventory()
  regional_inventory.region = _REGION
  regional_inventory.availability = "in stock"
  regional_inventory.price = {
      "currency_code": "USD",
      "amount_micros": 33450000,
  }

  # Creates the request.
  request = merchant_inventories_v1beta.InsertRegionalInventoryRequest(
      parent=_PARENT,
      regional_inventory=regional_inventory,
  )

  # Makes the request and catch and print any error messages.
  try:
    response = client.insert_regional_inventory(request=request)

    print("Insert successful")
    print(response)
  except Exception as e:
    print("Insert failed")
    print(e)

この呼び出しは、送信した値とまったく同じ値を返すため、最終的な在庫データを完全に表しているとは限りません。

新しい RegionalInventory がプロダクトに表示されるまでに 30 分ほどかかることがあります。

地域別の在庫情報を追加するその他の方法については、フィードを作成するの最後にある地域別商品在庫フィードのセクションをご覧ください。

Google の無料リスティングに登録する

Google に商品を無料で掲載するには、無料商品リスティングを設定します。無料リスティングを設定すると、指定した地域情報に基づいて、RegionalInventory の対象商品が Google の [ショッピング] タブに表示されるようになります。