เพิ่มข้อมูลระดับภูมิภาคลงในผลิตภัณฑ์ออนไลน์

คุณใช้ Inventories Sub-API เพื่อระบุว่าข้อมูลผลิตภัณฑ์ แตกต่างกันไปตามภูมิภาคได้ ตัวอย่างเช่น คุณอาจขายผลิตภัณฑ์ที่แตกต่างกันในสถานที่ต่างๆ หรือเรียกเก็บเงินในราคาที่แตกต่างกันสำหรับผลิตภัณฑ์เดียวกันโดยขึ้นอยู่กับสถานที่ที่ซื้อ

ดูข้อมูลเพิ่มเติมได้ที่ความพร้อมจำหน่ายสินค้าและการกำหนดราคาระดับภูมิภาค

ข้อมูลระดับภูมิภาคใช้สำหรับผลิตภัณฑ์ที่คุณขายทางออนไลน์ ดูรายละเอียดเกี่ยวกับผลิตภัณฑ์ในร้านได้ที่เพิ่มข้อมูลในร้าน ลงในผลิตภัณฑ์ในร้าน

ขั้นตอนการเพิ่มข้อมูลระดับภูมิภาคให้กับผลิตภัณฑ์ออนไลน์มีดังนี้

สร้างภูมิภาค

ก่อนที่จะเพิ่มข้อมูลระดับภูมิภาคให้กับผลิตภัณฑ์ คุณต้องตั้งค่าภูมิภาค สำหรับบัญชี Merchant Center คุณใช้ Merchant API regions เพื่อสร้างภูมิภาคใหม่ได้

ดูตัวอย่างโค้ดและข้อมูลเพิ่มเติมเกี่ยวกับการจัดการภูมิภาคได้ในคู่มือภูมิภาค

ยืนยันว่าคุณมีผลิตภัณฑ์ออนไลน์

หากต้องการเพิ่มผลิตภัณฑ์ออนไลน์ลงในบัญชี ให้ใช้ Merchant API เพื่อแทรก ผลิตภัณฑ์ ใหม่ หรือสร้างแหล่งข้อมูล

แทรกข้อมูลระดับภูมิภาค

หลังจากมีผลิตภัณฑ์ออนไลน์ในบัญชี Merchant Center แล้ว คุณจะเพิ่ม ข้อมูลระดับภูมิภาค เช่น region, price และ availability ได้

ต่อไปนี้คือตัวอย่างที่คุณใช้เพื่อเพิ่มข้อมูลระดับภูมิภาคไปยังผลิตภัณฑ์ที่มี regionalInventories.insert ได้

Java

import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.inventories.v1.InsertRegionalInventoryRequest;
import com.google.shopping.merchant.inventories.v1.RegionalInventory;
import com.google.shopping.merchant.inventories.v1.RegionalInventoryAttributes;
import com.google.shopping.merchant.inventories.v1.RegionalInventoryAttributes.Availability;
import com.google.shopping.merchant.inventories.v1.RegionalInventoryServiceClient;
import com.google.shopping.merchant.inventories.v1.RegionalInventoryServiceSettings;
import com.google.shopping.type.Price;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;

/** This class demonstrates how to insert a regional inventory for a given product */
public class InsertRegionalInventorySample {

  private static String getParent(String accountId, String productId) {
    return String.format("accounts/%s/products/%s", accountId, productId);
  }

  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.getAccountId().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()
                      .setRegion(regionId)
                      .setRegionalInventoryAttributes(
                          RegionalInventoryAttributes.newBuilder()
                              .setAvailability(Availability.OUT_OF_STOCK)
                              .setPrice(price)
                              .build())
                      .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);
    }
  }

  public static void main(String[] args) throws Exception {
    Config config = Config.load();
    // An ID assigned to a product by Google. In the format
    // channel:contentLanguage:feedLabel:offerId
    String productId = "online:en:label:1111111111";
    // The ID uniquely identifying each region.
    String regionId = "1111111";
    insertRegionalInventory(config, productId, regionId);
  }
}

cURL

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

PHP

use Google\ApiCore\ApiException;
use Google\Shopping\Merchant\Inventories\V1\RegionalInventory;
use Google\Shopping\Merchant\Inventories\V1\Client\RegionalInventoryServiceClient;
use Google\Shopping\Merchant\Inventories\V1\InsertRegionalInventoryRequest;
use Google\Shopping\Merchant\Inventories\V1\RegionalInventoryAttributes;
use Google\Shopping\Merchant\Inventories\V1\RegionalInventoryAttributes\Availability;
use Google\Shopping\Type\Price;

/**
 * Class to insert a `RegionalInventory` to a given product in your
 * merchant account.
 *
 * Replaces the full `RegionalInventory` resource if an entry with the same
 * [`region`]
 * [google.shopping.merchant.inventories.v1beta.RegionalInventory.region]
 * already exists for the product.
 *
 * It might take up to 30 minutes for the new or updated `RegionalInventory`
 * resource to appear in products.
 */

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)
            ->setRegionalInventoryAttributes((new RegionalInventoryAttributes())
                ->setAvailability(Availability::IN_STOCK)
                ->setPrice($price));

        $request = (new InsertRegionalInventoryRequest())
            ->setParent($parent)
            ->setRegionalInventory($regionalInventory);

        // Calls the API and catches and prints any network failures/errors.
        try {
            /** @var RegionalInventory $response */
            $response = $regionalInventoryServiceClient->insertRegionalInventory($request);
            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);
    }

}


$sample = new InsertRegionalInventory();
$sample->callSample();

Python

from examples.authentication import configuration
from examples.authentication import generate_user_credentials
from google.shopping import merchant_inventories_v1
from google.shopping.merchant_inventories_v1.types import RegionalInventoryAttributes

# ENSURE you fill in the product ID and region ID for the sample to
# work.
_ACCOUNT = configuration.Configuration().read_merchant_info()
# ENSURE you fill in the product ID for the sample to work.
_PRODUCT = "PRODUCT_ID"
_PARENT = f"accounts/{_ACCOUNT}/products/{_PRODUCT}"
# ENSURE you fill in region ID for the sample to work.
_REGION = "REGION_ID"


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_v1.RegionalInventoryServiceClient(
      credentials=credentials
  )

  # Creates a regional inventory and populate its attributes.
  regional_inventory = merchant_inventories_v1.RegionalInventory()
  regional_inventory.region = _REGION
  regional_inventory.regional_inventory_attributes.availability = (
      RegionalInventoryAttributes.Availability.IN_STOCK
  )
  regional_inventory.regional_inventory_attributes.price = {
      "currency_code": "USD",
      "amount_micros": 33450000,
  }

  # Creates the request.
  request = merchant_inventories_v1.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 RuntimeError as e:
    print("Insert failed")
    print(e)


if __name__ == "__main__":
  insert_regional_inventory()

การเรียกนี้จะแสดงค่าที่เหมือนกับค่าที่คุณส่งทุกประการ และอาจไม่แสดงข้อมูลสินค้าคงคลังสุดท้ายอย่างครบถ้วน

อาจใช้เวลาถึง 30 นาทีกว่าที่ RegionalInventory ใหม่จะปรากฏในผลิตภัณฑ์

ดูวิธีอื่นๆ ในการเพิ่มข้อมูลสินค้าคงคลังระดับภูมิภาคได้ที่ส่วนแหล่งข้อมูลสินค้าคงคลังของผลิตภัณฑ์ระดับภูมิภาคที่ส่วนท้ายของสร้างแหล่งข้อมูลผลิตภัณฑ์

ลงชื่อสมัครใช้ข้อมูลที่แสดงฟรีบน Google

หากต้องการแสดงผลิตภัณฑ์บน Google โดยไม่เสียค่าใช้จ่าย ให้ตั้งค่าข้อมูลผลิตภัณฑ์ที่แสดงฟรี หลังจากตั้งค่าข้อมูลที่แสดงฟรีแล้ว ผลิตภัณฑ์ที่มีสิทธิ์ซึ่งมี RegionalInventory จะแสดงในแท็บ Shopping ของ Google ตามข้อมูลระดับภูมิภาคที่คุณระบุ