你可以使用 Inventories 子 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()
這項呼叫會傳回您提交的確切值,可能無法完整呈現最終的商品目錄資料。
新的 RegionalInventory
最多可能需要 30 分鐘才會顯示在產品中。
如要瞭解新增區域商品目錄資訊的其他方式,請參閱「建立產品資料來源」結尾的「區域產品商品目錄資料來源」一節。
註冊在 Google 刊登免費產品資訊
如要在 Google 上免費刊登產品,請設定免費產品資訊。設定免費產品資訊後,系統會根據你提供的區域資訊,在 Google 購物分頁中顯示符合資格的產品,並附上 RegionalInventory
。