คุณสามารถใช้ Merchant API เพื่ออัปเดตข้อมูลระดับภูมิภาคสำหรับผลิตภัณฑ์ออนไลน์ ให้เป็นปัจจุบันอยู่เสมอ ซึ่งรวมถึงการอัปเดตราคาและความพร้อมจำหน่ายสินค้า และการนำภูมิภาคที่ไม่มีการขายผลิตภัณฑ์ออก
หากคุณเป็นแพลตฟอร์มอีคอมเมิร์ซ คุณสามารถใช้ Merchant API เพื่อสร้างอินเทอร์เฟซ ที่ลูกค้าจะอัปเดตราคาและความพร้อมจำหน่ายผลิตภัณฑ์ระดับภูมิภาคได้
อัปเดตราคาและความพร้อมจำหน่ายสินค้าตามภูมิภาค
ใช้
regionalInventories.insert
เพื่ออัปเดตข้อมูลระดับภูมิภาคสำหรับผลิตภัณฑ์ การเรียกนี้จะแทนที่
RegionalInventory
ทรัพยากรทั้งหมด ดังนั้นโปรดตรวจสอบว่าคุณได้รวมช่องทั้งหมดแล้ว ดูตัวอย่างโค้ดและรายละเอียดเพิ่มเติมได้ที่เพิ่มข้อมูลระดับภูมิภาคให้กับ
ผลิตภัณฑ์ออนไลน์
ดูภูมิภาคที่มีอยู่
ส่วนนี้จะอธิบายวิธีดูภูมิภาคที่เชื่อมโยงกับผลิตภัณฑ์หรือบัญชี
ตามผลิตภัณฑ์
ใช้
accounts.products.regionalInventories.list
เพื่อแสดงสินค้าคงคลังระดับภูมิภาคทั้งหมดที่เชื่อมต่อกับผลิตภัณฑ์ที่เฉพาะเจาะจงในบัญชี
ของคุณ ใช้ฟิลด์ region เพื่อระบุภูมิภาคที่สินค้าคงคลังระดับภูมิภาคแต่ละรายการอ้างอิง
ต่อไปนี้คือตัวอย่างที่คุณใช้เพื่อแสดงสินค้าคงคลังระดับภูมิภาคสำหรับผลิตภัณฑ์ได้
Java
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.inventories.v1.ListRegionalInventoriesRequest;
import com.google.shopping.merchant.inventories.v1.RegionalInventory;
import com.google.shopping.merchant.inventories.v1.RegionalInventoryServiceClient;
import com.google.shopping.merchant.inventories.v1.RegionalInventoryServiceClient.ListRegionalInventoriesPagedResponse;
import com.google.shopping.merchant.inventories.v1.RegionalInventoryServiceSettings;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;
/** This class demonstrates how to list all the regional inventories on a given product */
public class ListRegionalInventoriesSample {
  private static String getParent(String accountId, String productId) {
    return String.format("accounts/%s/products/%s", accountId, productId);
  }
  public static void listRegionalInventories(Config config, String productId) 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)) {
      //  The parent product has the format: accounts/{account}/products/{product}
      ListRegionalInventoriesRequest request =
          ListRegionalInventoriesRequest.newBuilder().setParent(parent).build();
      System.out.println("Sending list regional inventory request:");
      ListRegionalInventoriesPagedResponse response =
          regionalInventoryServiceClient.listRegionalInventories(request);
      int count = 0;
      // Iterates over all rows in all pages and prints the regional inventory
      // in each row.
      for (RegionalInventory 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);
    }
  }
  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";
    listRegionalInventories(config, productId);
  }
}
cURL
  curl --location
  'https://merchantapi.googleapis.com/inventories/v1/accounts/987654321/products/en~US~12345/regionalInventories' \
  --header 'Authorization: Bearer <API_TOKEN>'
PHP
use Google\ApiCore\ApiException;
use Google\ApiCore\PagedListResponse;
use Google\Shopping\Merchant\Inventories\V1\RegionalInventory;
use Google\Shopping\Merchant\Inventories\V1\Client\RegionalInventoryServiceClient;
use Google\Shopping\Merchant\Inventories\V1\ListRegionalInventoriesRequest;
/**
 * Class to list the `RegionalInventory` resources for the given product in your
 * merchant account. 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.
 *
 * `RegionalInventory` resources are listed per product for a given account.
 */
class ListRegionalInventories
{
    // 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 regional inventories of a given product.
     *
     * @param string $parent The `name` of the parent product to list `RegionalInventory`
     *     resources for.
     *     Format: `accounts/{account}/products/{product}`
     */
    function listRegionalInventoriesSample(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.
        $regionalInventoryServiceClient = new RegionalInventoryServiceClient($options);
        // Prepare the request message.
        $request = (new ListRegionalInventoriesRequest())
            ->setParent($parent);
        // 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 =
                $regionalInventoryServiceClient->listRegionalInventories($request, $parameters);
            /** @var RegionalInventory $element */
            foreach ($response as $element) {
                printf('RegionalInventory 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 regional inventories of the parent product.
        $this->listRegionalInventoriesSample($this::PARENT);
    }
}
$sample = new ListRegionalInventories();
$sample->callSample();
Python
from examples.authentication import configuration
from examples.authentication import generate_user_credentials
from google.shopping import merchant_inventories_v1
# ENSURE you fill in the product ID for the sample to
# work.
_ACCOUNT = configuration.Configuration().read_merchant_info()
_PRODUCT = "[INSERT_PRODUCT_HERE]"
_PARENT = f"accounts/{_ACCOUNT}/products/{_PRODUCT}"
def list_regional_inventories():
  """Lists the `RegionalInventory` 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.
  `RegionalInventory` resources are listed per product for a given account.
  """
  # Gets OAuth Credentials.
  credentials = generate_user_credentials.main()
  # Creates a client.
  client = merchant_inventories_v1.RegionalInventoryServiceClient(
      credentials=credentials)
  # Creates the request.
  # Page size is set to the default value.
  request = merchant_inventories_v1.ListRegionalInventoriesRequest(
      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_regional_inventories(request=request)
    # Print the response.
    for response in page_result:
      print(response)
  except RuntimeError as e:
    print("List failed")
    print(e)
if __name__ == "__main__":
  list_regional_inventories()
ตามบัญชี
คุณสามารถใช้เมธอด
regions.list
ใน Merchant API เพื่อดูภูมิภาคทั้งหมดสำหรับบัญชีของคุณ
นำภูมิภาคออก
วิธีนำภูมิภาคที่คุณไม่ได้ขายผลิตภัณฑ์อีกต่อไปออกมีดังนี้
จากผลิตภัณฑ์
หากไม่ได้ขายผลิตภัณฑ์ในภูมิภาคใดภูมิภาคหนึ่งอีกต่อไป คุณควรนำข้อมูลสินค้าคงคลังในภูมิภาคนั้นออกจากผลิตภัณฑ์ คุณใช้
regionalInventories.delete
เพื่อนำข้อมูลสินค้าคงคลังระดับภูมิภาคที่เฉพาะเจาะจงออกจากผลิตภัณฑ์ได้
ต่อไปนี้คือตัวอย่างที่คุณใช้เพื่อนำรายการสินค้าคงคลังระดับภูมิภาคออกจากผลิตภัณฑ์ได้
Java
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.inventories.v1.DeleteRegionalInventoryRequest;
import com.google.shopping.merchant.inventories.v1.RegionalInventoryName;
import com.google.shopping.merchant.inventories.v1.RegionalInventoryServiceClient;
import com.google.shopping.merchant.inventories.v1.RegionalInventoryServiceSettings;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;
/** This class demonstrates how to delete a regional inventory for a given product */
public class DeleteRegionalInventorySample {
  public static void deleteRegionalInventory(Config config, String productId, String regionId)
      throws Exception {
    GoogleCredentials credential = new Authenticator().authenticate();
    RegionalInventoryServiceSettings regionalInventoryServiceSettings =
        RegionalInventoryServiceSettings.newBuilder()
            .setCredentialsProvider(FixedCredentialsProvider.create(credential))
            .build();
    String name =
        RegionalInventoryName.newBuilder()
            .setAccount(config.getAccountId().toString())
            .setProduct(productId)
            .setRegion(regionId)
            .build()
            .toString();
    try (RegionalInventoryServiceClient regionalInventoryServiceClient =
        RegionalInventoryServiceClient.create(regionalInventoryServiceSettings)) {
      DeleteRegionalInventoryRequest request =
          DeleteRegionalInventoryRequest.newBuilder().setName(name).build();
      System.out.println("Sending deleteRegionalInventory request");
      regionalInventoryServiceClient.deleteRegionalInventory(
          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);
    }
  }
  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";
    deleteRegionalInventory(config, productId, regionId);
  }
}
cURL
  curl --location --request DELETE
  'https://merchantapi.googleapis.com/inventories/v1/accounts/987654321/products/en~US~12345/regionalInventories/123456' \
  --header 'Authorization: Bearer <API_TOKEN>'
PHP
use Google\ApiCore\ApiException;
use Google\Shopping\Merchant\Inventories\V1\Client\RegionalInventoryServiceClient;
use Google\Shopping\Merchant\Inventories\V1\DeleteRegionalInventoryRequest;
/**
 * Deletes the specified `RegionalInventory` resource from the given product
 * in your merchant account.  It might take up to an hour for the
 * `RegionalInventory` to be deleted from the specific product.
 * Once you have received a successful delete response, wait for that
 * period before attempting a delete again.
 */
class DeleteRegionalInventory
{
    // 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 REGION = 'INSERT_REGION_ID_HERE';
    /**
     * Deletes a specific regional inventory of a given product.
     *
     * @param string $formattedName The name of the `RegionalInventory` resource
     * to delete.
     *     Format: `accounts/{account}/products/{product}/regionalInventories/{region}`
     *     Please see {@see RegionalInventoryServiceClient::regionalInventoryName()}
     *     for help formatting this field.
     */
    function deleteRegionalInventorySample(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.
         $regionalInventoryServiceClient = new RegionalInventoryServiceClient($options);
         // Prepare the request message.
         $request = (new DeleteRegionalInventoryRequest())
            ->setName($formattedName);
         // Calls the API and catches and prints any network failures/errors.
         try {
             $regionalInventoryServiceClient->deleteRegionalInventory($request);
             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 = RegionalInventoryServiceClient::regionalInventoryName(
            $this::ACCOUNT,
            $this::PRODUCT,
            $this::REGION
        );
        // Deletes the specific regional inventory of the parent product.
        $this->deleteRegionalInventorySample($formattedName);
    }
}
$sample = new DeleteRegionalInventory();
$sample->callSample();
Python
from examples.authentication import configuration
from examples.authentication import generate_user_credentials
from google.shopping import merchant_inventories_v1
# ENSURE you fill in the product ID and region ID
# for the sample to work.
_ACCOUNT = configuration.Configuration().read_merchant_info()
_PRODUCT = "[INSERT_PRODUCT_HERE]"
_REGION = "[INSERT_REGION_HERE]"
_NAME = f"accounts/{_ACCOUNT}/products/{_PRODUCT}/regionalInventories/{_REGION}"
def delete_regional_inventory():
  """Deletes the specified `RegionalInventory` resource from the given product.
  It might take up to an hour for the `RegionalInventory` 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_v1.RegionalInventoryServiceClient(
      credentials=credentials)
  # Creates the request.
  request = merchant_inventories_v1.DeleteRegionalInventoryRequest(
      name=_NAME,
  )
  # Makes the request and catch and print any error messages.
  try:
    client.delete_regional_inventory(request=request)
    print("Delete successful")
  except RuntimeError as e:
    print("Delete failed")
    print(e)
if __name__ == "__main__":
  delete_regional_inventory()
โดยอาจใช้เวลาถึง 30 นาทีในการนำรายการ RegionalInventory ออกจากผลิตภัณฑ์
การเรียกนี้จะนำข้อมูลสำหรับ region ที่ระบุเท่านั้นออกจาก product ที่ระบุเท่านั้น
จากบัญชี
หากต้องการนำภูมิภาคออกจากบัญชีที่คุณไม่ได้ขายผลิตภัณฑ์อีกต่อไป ให้ใช้วิธีaccounts.products.regionalInventories.delete