自动改进是一组功能,可让 Google 根据您网站的着陆页自动更新商品、图片和运费估算值。启用这些自动改进功能可以改善用户体验,增加商品流量并提高转化率。
您可以使用 Accounts 子 API 中的 AutomaticImprovements
资源执行以下操作:
- 查看 Merchant Center 账号的当前自动改进设置。
- 启用或停用商品价格、库存状况和状况的自动更新功能。如需了解详情,请参阅自动商品更新功能简介。
- 启用或停用自动图片校正功能。如需了解详情,请参阅允许 Merchant Center 优化商品图片。
- 启用或停用自动改进预计运费功能。如需详细了解自动配送估算,请参阅我希望 Google 根据我选择的运输公司为我计算配送速度。
特殊注意事项
- 设置的继承:
- Merchant Center 界面:
shippingImprovements
只能通过 API 管理,无法通过 Merchant Center 界面管理。
- 更新行为:
- 更新
itemUpdates
、imageImprovements
或shippingImprovements
的设置时,API 会完全替换指定的顶级组件(例如,整个itemUpdates
对象)。验证您的更新请求是否包含您打算修改的组件的所有预期子字段,如update_mask
中所指定。
- 更新
- 前提条件:
- 在启用自动商品更新功能之前,请验证您是否已在网站上设置结构化数据。
检索自动改进设置
检索 Merchant Center 账号的当前自动改进设置。这包括商品更新(价格、库存状况、商品状况)、图片改进和物流改进方面的设置。响应会显示直接在账号中配置的设置(如果有)以及有效设置,后者会考虑从高级账号继承的商品和图片更新设置。
GET https://merchantapi.googleapis.com/accounts/v1/accounts/<var>ACCOUNT_ID</var>/automaticImprovements
如果请求成功,系统会在响应正文中返回 AutomaticImprovements
资源。响应会显示直接在账号中配置的设置和有效设置。effective
设置会应用于相应账号,如果未明确设置,则可能会从更高级别的账号(例如多客户账号)继承。
{
"name": "accounts/12345/automaticImprovements",
// Example 1: Settings are directly configured on the account.
"itemUpdates": {
// When `accountItemUpdatesSettings` is present, `effective` values match the configured ones.
"accountItemUpdatesSettings": {
"allowPriceUpdates": true,
"allowAvailabilityUpdates": true,
"allowStrictAvailabilityUpdates": false,
"allowConditionUpdates": true
},
"effectiveAllowPriceUpdates": true,
"effectiveAllowAvailabilityUpdates": true,
"effectiveAllowStrictAvailabilityUpdates": false,
"effectiveAllowConditionUpdates": true
},
// Example 2: Settings are inherited from a parent account.
"imageImprovements": {
// `accountImageImprovementsSettings` is omitted, thus the `effective` value of `true` is inherited.
"effectiveAllowAutomaticImageImprovements": true
},
"shippingImprovements": {
"accountShippingImprovementsSettings": {
"allowShippingImprovements": true
},
"effectiveAllowShippingImprovements": true
}
}
此示例展示了如何检索 Merchant Center 账号的自动优化设置。
Java
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.accounts.v1.AutomaticImprovements;
import com.google.shopping.merchant.accounts.v1.AutomaticImprovementsName;
import com.google.shopping.merchant.accounts.v1.AutomaticImprovementsServiceClient;
import com.google.shopping.merchant.accounts.v1.AutomaticImprovementsServiceSettings;
import com.google.shopping.merchant.accounts.v1.GetAutomaticImprovementsRequest;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;
/** This class demonstrates how to get the automatic improvements of a Merchant Center account. */
public class GetAutomaticImprovementsSample {
public static void getAutomaticImprovements(Config config) throws Exception {
// Obtains OAuth token based on the user's configuration.
GoogleCredentials credential = new Authenticator().authenticate();
// Creates service settings using the credentials retrieved above.
AutomaticImprovementsServiceSettings automaticImprovementsServiceSettings =
AutomaticImprovementsServiceSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(credential))
.build();
// Creates AutomaticImprovements name to identify the AutomaticImprovements.
String name =
AutomaticImprovementsName.newBuilder()
.setAccount(config.getAccountId().toString())
.build()
.toString();
// Calls the API and catches and prints any network failures/errors.
try (AutomaticImprovementsServiceClient automaticImprovementsServiceClient =
AutomaticImprovementsServiceClient.create(automaticImprovementsServiceSettings)) {
// The name has the format: accounts/{account}/automaticImprovements
GetAutomaticImprovementsRequest request =
GetAutomaticImprovementsRequest.newBuilder().setName(name).build();
System.out.println("Sending get AutomaticImprovements request:");
AutomaticImprovements response =
automaticImprovementsServiceClient.getAutomaticImprovements(request);
System.out.println("Retrieved AutomaticImprovements below");
System.out.println(response);
} catch (Exception e) {
System.out.println(e);
}
}
public static void main(String[] args) throws Exception {
Config config = Config.load();
getAutomaticImprovements(config);
}
}
PHP
use Google\ApiCore\ApiException;
use Google\Shopping\Merchant\Accounts\V1\Client\AutomaticImprovementsServiceClient;
use Google\Shopping\Merchant\Accounts\V1\GetAutomaticImprovementsRequest;
/**
* This class demonstrates how to get the automatic improvements of a Merchant Center account.
*/
class GetAutomaticImprovementsSample
{
/**
* Helper function to construct the resource name for AutomaticImprovements.
*
* @param string $accountId The Merchant Center account ID.
* @return string The resource name in the format: accounts/{account}/automaticImprovements
*/
private static function getAutomaticImprovementsName(string $accountId): string
{
return sprintf("accounts/%s/automaticImprovements", $accountId);
}
/**
* Retrieves the automatic improvements settings for a given Merchant Center account.
*
* @param array $config The configuration array containing the account ID.
* @return void
*/
public static function getAutomaticImprovementsSample(array $config): void
{
// Obtains OAuth credentials for authentication.
$credentials = Authentication::useServiceAccountOrTokenFile();
// Contructs an options array for the client.
$options = ['credentials' => $credentials];
// Creates a new AutomaticImprovementsServiceClient.
$automaticImprovementsServiceClient = new AutomaticImprovementsServiceClient($options);
// Constructs the full resource name for the automatic improvements settings.
$name = self::getAutomaticImprovementsName($config['accountId']);
// Creates the GetAutomaticImprovementsRequest.
$request = new GetAutomaticImprovementsRequest(['name' => $name]);
printf("Sending get AutomaticImprovements request:%s", PHP_EOL);
try {
// Makes the API call to retrieve automatic improvements settings.
$response = $automaticImprovementsServiceClient->getAutomaticImprovements($request);
printf("Retrieved AutomaticImprovements below%s", PHP_EOL);
// Prints the response in JSON format for readability.
print_r($response);
} catch (ApiException $e) {
printf("ApiException was thrown: %s%s", $e->getMessage(), PHP_EOL);
}
}
/**
* Helper to execute the sample.
*
* @return void
*/
public function callSample(): void
{
$config = Config::generateConfig();
self::getAutomaticImprovementsSample($config);
}
}
// Runs the script.
$sample = new GetAutomaticImprovementsSample();
$sample->callSample();
Python
"""Gets the automatic improvements settings for a Merchant Center account."""
from examples.authentication import configuration
from examples.authentication import generate_user_credentials
from google.shopping.merchant_accounts_v1 import AutomaticImprovementsServiceClient
from google.shopping.merchant_accounts_v1 import GetAutomaticImprovementsRequest
# Fetches the account ID from the config file.
# This is a placeholder for your actual account ID.
_ACCOUNT_ID = configuration.Configuration().read_merchant_info()
# Construct the resource name for AutomaticImprovements.
# The format is accounts/{account}/automaticImprovements
_NAME = f"accounts/{_ACCOUNT_ID}/automaticImprovements"
def get_automatic_improvements_sample():
"""Gets the automatic improvements settings for a Merchant Center account."""
# Generates OAuth 2.0 credentials for authentication.
credentials = generate_user_credentials.main()
# Creates a client for the AutomaticImprovementsService.
client = AutomaticImprovementsServiceClient(credentials=credentials)
# Creates the request to get automatic improvements.
# The name parameter is the resource name of the automatic improvements
# settings.
request = GetAutomaticImprovementsRequest(name=_NAME)
print("Sending get AutomaticImprovements request:")
# Makes the API request to get automatic improvements.
try:
response = client.get_automatic_improvements(request=request)
print("Retrieved AutomaticImprovements below")
print(response)
except RuntimeError as e:
print(f"An API error occurred: {e}")
if __name__ == "__main__":
get_automatic_improvements_sample()
cURL
curl --location 'https://merchantapi.googleapis.com/accounts/v1/accounts/YOUR_ACCOUNT_ID/automaticImprovements' \
--header 'Authorization: Bearer <var>API_TOKEN</var>'
更新自动改进设置
修改 Merchant Center 账号的自动改进设置。
提供 AutomaticImprovements
对象,其中包含 itemUpdates
、imageImprovements
和 shippingImprovements
的预期状态。使用 update_mask
查询参数指定要更新的字段(例如,如需更新所有提供的设置,请使用 update_mask=*
)。
更新设置时,您可以覆盖现有配置,也可以清除现有配置以沿用父账号的设置。
如需覆盖某项设置:请在
update_mask
中添加顶级字段名称(例如itemUpdates
或imageImprovements
),并在请求正文中提供其新配置。此操作会替换子账号中相应字段的所有现有设置。如需清除设置并从父级继承:请在
update_mask
中添加相应字段名称,但从请求正文中完全省略该字段。这会从子账号中移除特定配置,使其继承父账号的设置。如果父账号也未配置任何设置,则应用系统默认设置。
以下示例演示了如何清除子账号的 imageImprovements
设置,使其从父账号继承这些设置,同时更新 itemUpdates
设置。
PATCH https://merchantapi.googleapis.com/accounts/v1/accounts/{account}/automaticImprovements?update_mask=itemUpdates,imageImprovements
请求正文(省略了 imageImprovements
):
{
"name": "accounts/12345/automaticImprovements",
"itemUpdates": {
"accountItemUpdatesSettings": {
"allowPriceUpdates": true,
"allowAvailabilityUpdates": true,
"allowStrictAvailabilityUpdates": true,
"allowConditionUpdates": true
}
}
}
PATCH https://merchantapi.googleapis.com/accounts/v1/accounts/<var>ACCOUNT_ID</var>/automaticImprovements?update_mask=itemUpdates,imageImprovements,shippingImprovements
请求正文示例(启用所有改进):
{
"name": "accounts/<var>ACCOUNT_ID</var>/automaticImprovements",
"itemUpdates": {
"accountItemUpdatesSettings": {
"allowPriceUpdates": true,
"allowAvailabilityUpdates": true,
"allowStrictAvailabilityUpdates": true,
"allowConditionUpdates": true
}
},
"imageImprovements": {
"accountImageImprovementsSettings": {
"allowAutomaticImageImprovements": true
}
},
"shippingImprovements": {
"allowShippingImprovements": true
}
}
如果请求成功,系统会在响应正文中返回更新后的 AutomaticImprovements
资源。
{
"name": "accounts/12345/automaticImprovements",
"itemUpdates": {
"accountItemUpdatesSettings": {
"allowPriceUpdates": true,
"allowAvailabilityUpdates": true,
"allowStrictAvailabilityUpdates": true,
"allowConditionUpdates": true
},
"effectiveAllowPriceUpdates": true,
"effectiveAllowAvailabilityUpdates": true,
"effectiveAllowStrictAvailabilityUpdates": true,
"effectiveAllowConditionUpdates": true
},
"imageImprovements": {
"accountImageImprovementsSettings": {
"allowAutomaticImageImprovements": true
},
"effectiveAllowAutomaticImageImprovements": true
},
"shippingImprovements": {
"allowShippingImprovements": true
"effectiveAllowShippingImprovements": true
}
}
此示例演示了如何更新“自动改进”设置,为 Merchant Center 账号启用所有可用的自动改进功能。update_mask
设置为 *
,表示应用请求正文中 automatic_improvements
对象中提供的所有字段。响应会显示更新后的设置,包括配置值和有效值。
Java
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.protobuf.FieldMask;
import com.google.shopping.merchant.accounts.v1.AutomaticImageImprovements;
import com.google.shopping.merchant.accounts.v1.AutomaticImageImprovements.ImageImprovementsAccountLevelSettings;
import com.google.shopping.merchant.accounts.v1.AutomaticImprovements;
import com.google.shopping.merchant.accounts.v1.AutomaticImprovementsName;
import com.google.shopping.merchant.accounts.v1.AutomaticImprovementsServiceClient;
import com.google.shopping.merchant.accounts.v1.AutomaticImprovementsServiceSettings;
import com.google.shopping.merchant.accounts.v1.AutomaticItemUpdates;
import com.google.shopping.merchant.accounts.v1.AutomaticItemUpdates.ItemUpdatesAccountLevelSettings;
import com.google.shopping.merchant.accounts.v1.AutomaticShippingImprovements;
import com.google.shopping.merchant.accounts.v1.UpdateAutomaticImprovementsRequest;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;
/** This class demonstrates how to update AutomaticImprovements to be enabled. */
public class UpdateAutomaticImprovementsSample {
public static void updateAutomaticImprovements(Config config) throws Exception {
GoogleCredentials credential = new Authenticator().authenticate();
AutomaticImprovementsServiceSettings automaticImprovementsServiceSettings =
AutomaticImprovementsServiceSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(credential))
.build();
// Creates AutomaticImprovements name to identify AutomaticImprovements.
String name =
AutomaticImprovementsName.newBuilder()
.setAccount(config.getAccountId().toString())
.build()
.toString();
// Create AutomaticImprovements with the updated fields.
AutomaticImprovements automaticImprovements =
AutomaticImprovements.newBuilder()
.setName(name)
.setItemUpdates(
AutomaticItemUpdates.newBuilder()
.setAccountItemUpdatesSettings(
ItemUpdatesAccountLevelSettings.newBuilder()
.setAllowPriceUpdates(true)
.setAllowAvailabilityUpdates(true)
.setAllowStrictAvailabilityUpdates(true)
.setAllowConditionUpdates(true)
.build())
.build())
.setImageImprovements(
AutomaticImageImprovements.newBuilder()
.setAccountImageImprovementsSettings(
ImageImprovementsAccountLevelSettings.newBuilder()
.setAllowAutomaticImageImprovements(true)
.build())
.build())
.setShippingImprovements(
AutomaticShippingImprovements.newBuilder()
.setAllowShippingImprovements(true)
.build())
.build();
FieldMask fieldMask = FieldMask.newBuilder().addPaths("*").build();
try (AutomaticImprovementsServiceClient automaticImprovementsServiceClient =
AutomaticImprovementsServiceClient.create(automaticImprovementsServiceSettings)) {
UpdateAutomaticImprovementsRequest request =
UpdateAutomaticImprovementsRequest.newBuilder()
.setAutomaticImprovements(automaticImprovements)
.setUpdateMask(fieldMask)
.build();
System.out.println("Sending Update AutomaticImprovements request");
AutomaticImprovements response =
automaticImprovementsServiceClient.updateAutomaticImprovements(request);
System.out.println("Updated AutomaticImprovements 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();
updateAutomaticImprovements(config);
}
}
PHP
use Google\ApiCore\ApiException;
use Google\Protobuf\FieldMask;
use Google\Shopping\Merchant\Accounts\V1beta\AutomaticImageImprovements;
use Google\Shopping\Merchant\Accounts\V1beta\AutomaticImageImprovements\ImageImprovementsAccountLevelSettings;
use Google\Shopping\Merchant\Accounts\V1beta\AutomaticImprovements;
use Google\Shopping\Merchant\Accounts\V1beta\Client\AutomaticImprovementsServiceClient;
use Google\Shopping\Merchant\Accounts\V1beta\AutomaticItemUpdates;
use Google\Shopping\Merchant\Accounts\V1beta\AutomaticItemUpdates\ItemUpdatesAccountLevelSettings;
use Google\Shopping\Merchant\Accounts\V1beta\AutomaticShippingImprovements;
use Google\Shopping\Merchant\Accounts\V1beta\UpdateAutomaticImprovementsRequest;
/**
* This class demonstrates how to update AutomaticImprovements to be enabled.
*/
class UpdateAutomaticImprovementsSample
{
/**
* Helper function to construct the resource name for AutomaticImprovements.
*
* @param string $accountId The Merchant Center account ID.
* @return string The resource name in the format: accounts/{account}/automaticImprovements
*/
private static function getAutomaticImprovementsName(string $accountId): string
{
return sprintf("accounts/%s/automaticImprovements", $accountId);
}
/**
* Updates the automatic improvements settings for a Merchant Center account.
* This sample enables all automatic improvements.
*
* @param array $config The configuration array containing the account ID.
* @return void
*/
public static function updateAutomaticImprovementsSample(array $config): void
{
// Obtains OAuth credentials for authentication.
$credentials = Authentication::useServiceAccountOrTokenFile();
// Contructs an options array for the client.
$options = ['credentials' => $credentials];
// Creates a new AutomaticImprovementsServiceClient.
$automaticImprovementsServiceClient = new AutomaticImprovementsServiceClient($options);
// Constructs the full resource name for the automatic improvements settings.
$name = self::getAutomaticImprovementsName($config['accountId']);
// Prepares the AutomaticImprovements object with all settings enabled.
$automaticImprovements = new AutomaticImprovements([
'name' => $name,
'item_updates' => new AutomaticItemUpdates([
'account_item_updates_settings' => new ItemUpdatesAccountLevelSettings([
'allow_price_updates' => true,
'allow_availability_updates' => true,
'allow_strict_availability_updates' => true,
'allow_condition_updates' => true
])
]),
'image_improvements' => new AutomaticImageImprovements([
'account_image_improvements_settings' => new ImageImprovementsAccountLevelSettings([
'allow_automatic_image_improvements' => true
])
]),
'shipping_improvements' => new AutomaticShippingImprovements([
'allow_shipping_improvements' => true
])
]);
// Creates a FieldMask to indicate that all paths provided in $automaticImprovements
// should be updated. The "*" path means to replace all updatable fields.
$fieldMask = new FieldMask(['paths' => ['*']]);
// Creates the UpdateAutomaticImprovementsRequest.
$request = new UpdateAutomaticImprovementsRequest([
'automatic_improvements' => $automaticImprovements,
'update_mask' => $fieldMask
]);
printf("Sending Update AutomaticImprovements request%s", PHP_EOL);
try {
// Makes the API call to update automatic improvements settings.
$response = $automaticImprovementsServiceClient->updateAutomaticImprovements($request);
printf("Updated AutomaticImprovements Name below%s", PHP_EOL);
printf("%s%s", $response->getName(), PHP_EOL);
} catch (ApiException $e) {
printf("ApiException was thrown: %s%s", $e->getMessage(), PHP_EOL);
}
}
/**
* Helper to execute the sample.
*
* @return void
*/
public function callSample(): void
{
$config = Config::generateConfig();
self::updateAutomaticImprovementsSample($config);
}
}
// Runs the script.
$sample = new UpdateAutomaticImprovementsSample();
$sample->callSample();
Python
"""Updates the automatic improvements settings for a Merchant Center account."""
from examples.authentication import configuration
from examples.authentication import generate_user_credentials
from google.protobuf import field_mask_pb2
from google.shopping.merchant_accounts_v1 import AutomaticImageImprovements
from google.shopping.merchant_accounts_v1 import AutomaticImprovements
from google.shopping.merchant_accounts_v1 import AutomaticImprovementsServiceClient
from google.shopping.merchant_accounts_v1 import AutomaticItemUpdates
from google.shopping.merchant_accounts_v1 import AutomaticShippingImprovements
from google.shopping.merchant_accounts_v1 import UpdateAutomaticImprovementsRequest
# Fetches the Merchant Center account ID from the configuration.
_ACCOUNT_ID = configuration.Configuration().read_merchant_info()
# The resource name for the AutomaticImprovements settings of the account.
# Format: accounts/{account}/automaticImprovements
_AUTOMATIC_IMPROVEMENTS_RESOURCE_NAME = (
f"accounts/{_ACCOUNT_ID}/automaticImprovements"
)
def update_automatic_improvements_settings():
"""Updates automatic improvements settings for a Merchant Center account to enable all available automatic improvements.
"""
# Generates OAuth 2.0 credentials for authenticating with the API.
credentials = generate_user_credentials.main()
# Creates a client for the AutomaticImprovementsService.
client = AutomaticImprovementsServiceClient(credentials=credentials)
# Prepares the AutomaticImprovements object with all improvements enabled.
# The 'name' field specifies the AutomaticImprovements resource to update.
automatic_improvements_config = AutomaticImprovements(
name=_AUTOMATIC_IMPROVEMENTS_RESOURCE_NAME,
item_updates=AutomaticItemUpdates(
account_item_updates_settings=AutomaticItemUpdates.ItemUpdatesAccountLevelSettings(
allow_price_updates=True,
allow_availability_updates=True,
allow_strict_availability_updates=True,
allow_condition_updates=True,
)
),
image_improvements=AutomaticImageImprovements(
account_image_improvements_settings=
AutomaticImageImprovements.ImageImprovementsAccountLevelSettings(
allow_automatic_image_improvements=True
)
),
shipping_improvements=AutomaticShippingImprovements(
allow_shipping_improvements=True
),
)
# Creates a field mask to specify which fields of the
# AutomaticImprovements resource should be updated.
# Using "*" indicates that all fields provided in the
# automatic_improvements_config object should be updated.
field_mask = field_mask_pb2.FieldMask(paths=["*"])
# Creates the update request, including the configured
# AutomaticImprovements object and the field mask.
request = UpdateAutomaticImprovementsRequest(
automatic_improvements=automatic_improvements_config,
update_mask=field_mask,
)
# Sends the request to update automatic improvements and handles the response.
try:
print("Sending Update AutomaticImprovements request")
response = client.update_automatic_improvements(request=request)
print("Updated AutomaticImprovements Name below")
print(response.name)
except RuntimeError as e:
# Catches and prints any errors that occur during the API call.
print(e)
if __name__ == "__main__":
update_automatic_improvements_settings()
cURL
curl --location --request PATCH 'https://merchantapi.googleapis.com/accounts/v1/accounts/YOUR_ACCOUNT_ID/automaticImprovements?update_mask=*' \
--header 'Authorization: Bearer <var>API_TOKEN</var>' \
--header 'Content-Type: application/json' \
--data '{
"name": "accounts/YOUR_ACCOUNT_ID/automaticImprovements",
"itemUpdates": {
"accountItemUpdatesSettings": {
"allowPriceUpdates": true,
"allowAvailabilityUpdates": true,
"allowStrictAvailabilityUpdates": true,
"allowConditionUpdates": true
}
},
"imageImprovements": {
"accountImageImprovementsSettings": {
"allowAutomaticImageImprovements": true
}
},
"shippingImprovements": {
"accountShippingImprovementsSettings": {
"allowShippingImprovements": true
}
}
}'