Interfejs Merchant API obsługuje wiele typów źródeł danych i metod wprowadzania, aby dostarczać informacje o produktach zgodnie z potrzebami Twojej firmy. Źródła danych mogą zawierać różne typy danych:
- produkt
- zasoby
- promocja
- ocena
Źródła danych możesz skonfigurować na kilka sposobów, m.in.:
- Wywołania interfejsu API
- przesyłanie plików,
- Autofeed
Możesz łączyć niektóre typy źródeł danych, którymi można zarządzać za pomocą interfejsu Data Sources API (np. produkty lub promocje), z wieloma obsługiwanymi metodami wprowadzania danych (API, przesyłanie plików lub pobieranie plików). Podstawowe źródło danych o produktach może być na przykład:
- plik danych API,
- pobrany plik danych,
- przesłany plik danych,
- automatyczny plik danych,
W tym przewodniku znajdziesz przykłady zarządzania źródłami danych z różnymi typami danych i metodami wprowadzania.
Specjalne uwagi
W przypadku niektórych typów źródeł danych należy wziąć pod uwagę te kwestie:
- Źródła danych tylko do odczytu: niektóre typy źródeł danych są dostępne tylko do odczytu w ramach interfejsu Data sources Sub-API. Oznacza to, że możesz je wyświetlać i wyświetlać ich szczegóły, ale nie możesz ich tworzyć, aktualizować ani usuwać za pomocą tego interfejsu API. Obejmują one:
- Źródła danych z produktami zarządzanymi bezpośrednio w interfejsie Merchant Center (typ danych wejściowych
UI
). - Automatyczne pliki danych (typ danych wejściowych
AUTOFEED
). Same automatyczne pliki danych są tylko do odczytu w ramach interfejsu Data sources API, ale możesz włączyć lub wyłączyć funkcję automatycznych plików danych na swoim koncie za pomocą metodautofeedSettings
w interfejsie Accounts API. Więcej informacji znajdziesz w sekcji Konfigurowanie ustawień automatycznego przesyłania.
- Źródła danych z produktami zarządzanymi bezpośrednio w interfejsie Merchant Center (typ danych wejściowych
- Reguły pliku danych: podrzędny interfejs API źródeł danych obsługuje głównie domyślne reguły pliku danych do łączenia dodatkowych źródeł danych z podstawowymi. Złożone tworzenie niestandardowych reguł i zarządzanie nimi nie są obsługiwane bezpośrednio w tym interfejsie API. Możesz zarządzać kolejnością dodatkowych źródeł danych w regule domyślnej, aby określić, w jakiej kolejności atrybuty z podstawowego i dodatkowych źródeł są łączone.
Konfigurowanie źródła danych o lokalnym asortymencie z zaplanowanym pobieraniem plików
Możesz utworzyć źródło danych o lokalnym asortymencie, które automatycznie pobiera plik z określonego adresu URL zgodnie z harmonogramem. Aby utworzyć podobne źródło danych dla regionalnego asortymentu, w treści żądania zastąp pole localInventoryDataSource
polem regionalInventoryDataSource
.
Aby utworzyć źródło danych, użyj metody
dataSources.create
i podaj obiekt fileInput
ze skonfigurowanym parametrem fetchSettings
.
POST https://merchantapi.googleapis.com/datasources/v1beta/accounts/{ACCOUNT_ID}/dataSources
{
"displayName": "My Scheduled Local Inventory Feed",
"localInventoryDataSource": {
"feedLabel": "US_Stores",
"contentLanguage": "en"
},
"fileInput": {
"fetchSettings": {
"enabled": true,
"timeOfDay": {
"hours": 23
},
"timeZone": "America/New_York",
"frequency": "FREQUENCY_DAILY",
"fetchUri": "https://www.example.com/inventory/local_inventory_feed.csv"
}
}
}
Pomyślne żądanie zwraca utworzony zasób DataSource
.
{
"name": "accounts/{ACCOUNT_ID}/dataSources/{DATASOURCE_ID}",
"dataSourceId": "{DATASOURCE_ID}",
"displayName": "My Scheduled Local Inventory Feed",
"localInventoryDataSource": {
"feedLabel": "US_Stores",
"contentLanguage": "en"
},
"input": "FILE",
"fileInput": {
"fetchSettings": {
"enabled": true,
"timeOfDay": {
"hours": 23
},
"timeZone": "America/New_York",
"frequency": "FREQUENCY_DAILY",
"fetchUri": "https://www.example.com/inventory/local_inventory_feed.csv"
},
"fileInputType": "FETCH"
}
}
Poniższe przykłady kodu pokazują, jak utworzyć źródło danych lokalnego asortymentu z zaplanowanym pobieraniem.
Java
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.datasources.v1beta.CreateDataSourceRequest;
import com.google.shopping.merchant.datasources.v1beta.DataSource;
import com.google.shopping.merchant.datasources.v1beta.DataSourcesServiceClient;
import com.google.shopping.merchant.datasources.v1beta.DataSourcesServiceSettings;
import com.google.shopping.merchant.datasources.v1beta.FileInput;
import com.google.shopping.merchant.datasources.v1beta.LocalInventoryDataSource;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;
/** This class demonstrates how to create a local inventory datasource */
public class CreateFileLocalInventoryDataSourceSample {
private static String getParent(String merchantId) {
return String.format("accounts/%s", merchantId);
}
private static FileInput setFileInput() {
// If FetchSettings are not set, then this will be an `UPLOAD` file type
// that you must manually upload via the Merchant Center UI.
return FileInput.newBuilder()
// FileName is required for `UPLOAD` fileInput type.
.setFileName("British T-shirts Local Inventory Data")
.build();
}
public static String createDataSource(Config config, String displayName, FileInput fileInput)
throws Exception {
GoogleCredentials credential = new Authenticator().authenticate();
DataSourcesServiceSettings dataSourcesServiceSettings =
DataSourcesServiceSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(credential))
.build();
String parent = getParent(config.getAccountId().toString());
// As LocalInventoryDataSources are a type of file feed, therefore wildcards are not available.
// LocalInventoryDataSources can only be created for a specific `feedLabel` and
// `contentLanguage` combination.
LocalInventoryDataSource localInventoryDataSource =
LocalInventoryDataSource.newBuilder().setContentLanguage("en").setFeedLabel("GB").build();
try (DataSourcesServiceClient dataSourcesServiceClient =
DataSourcesServiceClient.create(dataSourcesServiceSettings)) {
CreateDataSourceRequest request =
CreateDataSourceRequest.newBuilder()
.setParent(parent)
.setDataSource(
DataSource.newBuilder()
.setDisplayName(displayName)
.setLocalInventoryDataSource(localInventoryDataSource)
.setFileInput(fileInput)
.build())
.build();
System.out.println("Sending Create Local Inventory DataSource request");
DataSource response = dataSourcesServiceClient.createDataSource(request);
System.out.println("Inserted DataSource Name below");
System.out.println(response.getName());
return response.getName();
} catch (Exception e) {
System.out.println(e);
System.exit(1);
return null;
}
}
public static void main(String[] args) throws Exception {
Config config = Config.load();
// The displayed datasource name in the Merchant Center UI.
String displayName = "British Local Inventory File";
// The file input data that this datasource will receive.
FileInput fileInput = setFileInput();
createDataSource(config, displayName, fileInput);
}
}
PHP
use Google\ApiCore\ApiException;
use Google\Shopping\Merchant\DataSources\V1beta\Client\DataSourcesServiceClient;
use Google\Shopping\Merchant\DataSources\V1beta\CreateDataSourceRequest;
use Google\Shopping\Merchant\DataSources\V1beta\DataSource;
use Google\Shopping\Merchant\DataSources\V1beta\FileInput;
use Google\Shopping\Merchant\DataSources\V1beta\LocalInventoryDataSource;
/**
* This class demonstrates how to create a local inventory datasource with a
* file input.
*/
class CreateFileLocalInventoryDataSourceSample
{
private static function getFileInput(): FileInput
{
// If FetchSettings is not set, then this will be an `UPLOAD` file type
// that you must manually upload via the Merchant Center UI.
return (new FileInput())
// FileName is required for `UPLOAD` fileInput type.
->setFileName('British T-shirts Local Inventory Data');
}
public function createDataSource(string $merchantId, string $displayName, FileInput $fileInput): 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.
$dataSourcesServiceClient = new DataSourcesServiceClient($options);
$parent = sprintf('accounts/%s', $merchantId);
// As LocalInventoryDataSources are a type of file feed, therefore wildcards are not available.
// LocalInventoryDataSources can only be created for a specific `feedLabel` and
// `contentLanguage` combination.
$localInventoryDataSource =
(new LocalInventoryDataSource())
->setContentLanguage('en')
->setFeedLabel('GB');
try {
// Prepare the request message.
$request = (new CreateDataSourceRequest())
->setParent($parent)
->setDataSource(
(new DataSource())
->setDisplayName($displayName)
->setLocalInventoryDataSource($localInventoryDataSource)
->setFileInput($fileInput)
);
print('Sending Create Local Inventory DataSource request' . PHP_EOL);
$response = $dataSourcesServiceClient->createDataSource($request);
print('Inserted DataSource Name below' . PHP_EOL);
print($response->getName() . PHP_EOL);
} catch (ApiException $ex) {
printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage());
}
}
// Helper to execute the sample.
function callSample(): void
{
$config = Config::generateConfig();
// The Merchant Center Account ID.
$merchantId = $config['accountId'];
// The displayed datasource name in the Merchant Center UI.
$displayName = 'British Primary Inventory File';
$fileInput = self::getFileInput();
$this->createDataSource($merchantId, $displayName, $fileInput);
}
}
$sample = new CreateFileLocalInventoryDataSourceSample();
$sample->callSample();
Python
from examples.authentication import configuration
from examples.authentication import generate_user_credentials
from google.shopping.merchant_datasources_v1beta import CreateDataSourceRequest
from google.shopping.merchant_datasources_v1beta import DataSource
from google.shopping.merchant_datasources_v1beta import DataSourcesServiceClient
from google.shopping.merchant_datasources_v1beta import FileInput
from google.shopping.merchant_datasources_v1beta import LocalInventoryDataSource
_ACCOUNT = configuration.Configuration().read_merchant_info()
_PARENT = f"accounts/{_ACCOUNT}"
def create_file_local_inventory_data_source():
"""Creates a `DataSource` resource."""
# Gets OAuth Credentials.
credentials = generate_user_credentials.main()
# Creates a client.
client = DataSourcesServiceClient(credentials=credentials)
# If FetchSettings are not set, then this will be an `UPLOAD` file type
# that you must manually upload via the Merchant Center UI or via SFTP.
file_input = FileInput()
file_input.file_name = "British T-shirts Local Inventory Data.txt"
# Creates a SupplementalProductDataSource.
local_inventory_datasource = LocalInventoryDataSource()
# As LocalInventoryDataSources are a type of file feed, wildcards are not
# available. LocalInventoryDataSources can only be created for a specific
# `feedLabel` and `contentLanguage` combination.
local_inventory_datasource.content_language = "en"
local_inventory_datasource.feed_label = "GB"
# Creates a DataSource and populates its attributes.
data_source = DataSource()
data_source.display_name = "Example Local Inventory DataSource"
data_source.local_inventory_data_source = local_inventory_datasource
data_source.file_input = file_input
# Creates the request.
request = CreateDataSourceRequest(parent=_PARENT, data_source=data_source)
# Makes the request and catches and prints any error messages.
try:
response = client.create_data_source(request=request)
print(f"DataSource successfully created: {response}")
except RuntimeError as e:
print("DataSource creation failed")
print(e)
if __name__ == "__main__":
create_file_local_inventory_data_source()
cURL
curl -X POST \
"https://merchantapi.googleapis.com/datasources/v1beta/accounts/{ACCOUNT_ID}/dataSources" \
-H "Authorization: Bearer <API_TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"displayName": "My Scheduled Local Inventory Feed",
"localInventoryDataSource": {
"feedLabel": "US_Stores",
"contentLanguage": "en"
},
"fileInput": {
"fetchSettings": {
"enabled": true,
"timeOfDay": {
"hours": 23
},
"timeZone": "America/New_York",
"frequency": "FREQUENCY_DAILY",
"fetchUri": "https://www.example.com/inventory/local_inventory_feed.csv"
}
}
}'
Tworzenie źródła danych o promocjach za pomocą interfejsu API
Źródła danych o promocjach umożliwiają przesyłanie ofert promocyjnych dotyczących Twoich produktów. Możesz utworzyć źródło danych o promocjach oparte na interfejsie API, które umożliwia bezpośrednie przesyłanie danych o promocjach bez konieczności zarządzania plikami.
Użyj metody dataSources.create
i określ promotionDataSource
.
W przypadku pliku danych interfejsu API pomiń pole fileInput
.
POST https://merchantapi.googleapis.com/datasources/v1beta/accounts/{ACCOUNT_ID}/dataSources
{
"displayName": "My API Promotions Source",
"promotionDataSource": {
"targetCountry": "US",
"contentLanguage": "en"
}
}
Pomyślne żądanie zwraca nowo utworzony zasób DataSource
.
{
"name": "accounts/{ACCOUNT_ID}/dataSources/{DATASOURCE_ID}",
"dataSourceId": "{DATASOURCE_ID}",
"displayName": "My API Promotions Source",
"promotionDataSource": {
"targetCountry": "US",
"contentLanguage": "en"
},
"input": "API"
}
Poniższe przykłady kodu pokazują, jak utworzyć źródło danych o promocjach oparte na interfejsie API.
Java
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.datasources.v1beta.CreateDataSourceRequest;
import com.google.shopping.merchant.datasources.v1beta.DataSource;
import com.google.shopping.merchant.datasources.v1beta.DataSourcesServiceClient;
import com.google.shopping.merchant.datasources.v1beta.DataSourcesServiceSettings;
import com.google.shopping.merchant.datasources.v1beta.PromotionDataSource;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;
/** This class demonstrates how to create a promotion datasource. */
public class CreatePromotionDataSourceSample {
private static String getParent(String merchantId) {
return String.format("accounts/%s", merchantId);
}
public static String createDataSource(Config config, String displayName) throws Exception {
GoogleCredentials credential = new Authenticator().authenticate();
DataSourcesServiceSettings dataSourcesServiceSettings =
DataSourcesServiceSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(credential))
.build();
String parent = getParent(config.getAccountId().toString());
try (DataSourcesServiceClient dataSourcesServiceClient =
DataSourcesServiceClient.create(dataSourcesServiceSettings)) {
CreateDataSourceRequest request =
CreateDataSourceRequest.newBuilder()
.setParent(parent)
.setDataSource(
DataSource.newBuilder()
.setDisplayName(displayName)
// Wildcards are not available for PromotionDataSources. PromotionDataSources
// can only be created for a specific `targetCountry` and `contentLanguage`
// combination.
.setPromotionDataSource(
PromotionDataSource.newBuilder()
.setContentLanguage("en")
.setTargetCountry("GB")
.build())
.build())
.build();
System.out.println("Sending Create Promotion DataSource request");
DataSource response = dataSourcesServiceClient.createDataSource(request);
System.out.println("Inserted DataSource Name below");
System.out.println(response.getName());
return response.getName();
} catch (Exception e) {
System.out.println(e);
System.exit(1);
return null;
}
}
public static void main(String[] args) throws Exception {
Config config = Config.load();
// The displayed datasource name in the Merchant Center UI.
String displayName = "British Promotions";
createDataSource(config, displayName);
}
}
PHP
use Google\ApiCore\ApiException;
use Google\Shopping\Merchant\DataSources\V1beta\Client\DataSourcesServiceClient;
use Google\Shopping\Merchant\DataSources\V1beta\CreateDataSourceRequest;
use Google\Shopping\Merchant\DataSources\V1beta\DataSource;
use Google\Shopping\Merchant\DataSources\V1beta\PromotionDataSource;
/**
* This class demonstrates how to create a promotion datasource.
*/
class CreatePromotionDataSource
{
/**
* Creates a new PromotionDataSource.
*
* @param int $merchantId The Merchant Center account ID.
* @param string $displayName The displayed datasource name in the Merchant Center UI.
* @return string The name of the newly created PromotionDataSource.
*/
function createPromotionDataSourceSample(int $merchantId, string $displayName): string
{
// 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.
$dataSourcesServiceClient = new DataSourcesServiceClient($options);
$parent = sprintf('accounts/%s', $merchantId);
// Creates the data source.
$dataSource = (new DataSource())
->setDisplayName($displayName)
->setPromotionDataSource(
(new PromotionDataSource())
->setContentLanguage('en')
->setTargetCountry('GB')
);
// Creates the request.
$request = (new CreateDataSourceRequest())
->setParent($parent)
->setDataSource($dataSource);
// Sends the request to the API.
try {
print('Sending Create Promotion DataSource request' . PHP_EOL);
$response = $dataSourcesServiceClient->createDataSource($request);
print('Inserted DataSource Name below' . PHP_EOL);
print($response->getName() . PHP_EOL);
return $response->getName();
} catch (ApiException $ex) {
printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage());
return '';
}
}
// Helper to execute the sample.
public function callSample(): void
{
$config = Config::generateConfig();
// The Merchant Center Account ID.
$merchantId = $config['accountId'];
// The displayed datasource name in the Merchant Center UI.
$displayName = 'British Promotions';
$this->createPromotionDataSourceSample($merchantId, $displayName);
}
}
$sample = new CreatePromotionDataSource();
$sample->callSample();
Python
from examples.authentication import configuration
from examples.authentication import generate_user_credentials
from google.shopping import merchant_datasources_v1beta
_ACCOUNT = configuration.Configuration().read_merchant_info()
_PARENT = f"accounts/{_ACCOUNT}"
def create_promotion_data_source():
"""Creates a `DataSource` resource."""
# Gets OAuth Credentials.
credentials = generate_user_credentials.main()
# Creates a client.
client = merchant_datasources_v1beta.DataSourcesServiceClient(
credentials=credentials
)
# Creates a PromotionDataSource.
# Wildcards are not available for PromotionDataSources. PromotionDataSources
# can only be created for a specific `targetCountry` and `contentLanguage`
# combination.
promotion_datasource = merchant_datasources_v1beta.PromotionDataSource()
promotion_datasource.target_country = "CH"
promotion_datasource.content_language = "fr"
# Creates a DataSource and populates its attributes.
data_source = merchant_datasources_v1beta.DataSource()
data_source.display_name = "Example DataSource"
data_source.promotion_data_source = promotion_datasource
# Creates the request.
request = merchant_datasources_v1beta.CreateDataSourceRequest(
parent=_PARENT, data_source=data_source
)
# Makes the request and catches and prints any error messages.
try:
response = client.create_data_source(request=request)
print(f"DataSource successfully created: {response}")
except RuntimeError as e:
print("DataSource creation failed")
print(e)
if __name__ == "__main__":
create_promotion_data_source()
cURL
curl -X POST \
"https://merchantapi.googleapis.com/datasources/v1beta/accounts/{ACCOUNT_ID}/dataSources" \
-H "Authorization: Bearer <API_TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"displayName": "My API Promotions Source",
"promotionDataSource": {
"targetCountry": "US",
"contentLanguage": "en"
}
}'
Tworzenie źródła danych z opiniami o produktach do przesyłania plików
Używaj źródeł danych opinii o produktach, aby przesyłać opinie klientów o Twoich produktach. Możesz skonfigurować źródło danych tak, aby akceptowało ręcznie przesyłane pliki z opiniami o produktach.
Użyj metody dataSources.create
, określ productReviewDataSource
i uwzględnij fileInput
z wyznaczonym fileName
.
POST https://merchantapi.googleapis.com/datasources/v1beta/accounts/{ACCOUNT_ID}/dataSources
{
"displayName": "My Product Reviews Upload Feed",
"productReviewDataSource": {},
"fileInput": {
"fileName": "product_reviews.xml"
}
}
Pomyślne żądanie zwraca nowo utworzony zasób DataSource
.
{
"name": "accounts/{ACCOUNT_ID}/dataSources/{DATASOURCE_ID}",
"dataSourceId": "{DATASOURCE_ID}",
"displayName": "My Product Reviews Upload Feed",
"productReviewDataSource": {},
"input": "FILE",
"fileInput": {
"fileName": "product_reviews.xml",
"fileInputType": "UPLOAD"
}
}
Aby utworzyć źródło danych dla opinii o sprzedawcy, możesz użyć podobnej prośby, zastępując obiekt productReviewDataSource
pustym obiektem merchantReviewDataSource
.
Poniższe przykłady kodu pokazują, jak utworzyć źródło danych z opiniami o produktach do ręcznego przesyłania plików.
Java
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.datasources.v1beta.CreateDataSourceRequest;
import com.google.shopping.merchant.datasources.v1beta.DataSource;
import com.google.shopping.merchant.datasources.v1beta.DataSourcesServiceClient;
import com.google.shopping.merchant.datasources.v1beta.DataSourcesServiceSettings;
import com.google.shopping.merchant.datasources.v1beta.ProductReviewDataSource;
import java.io.IOException;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;
/** This class demonstrates how to create a product review data source. */
public class CreateProductReviewsDataSourceSample {
private static void createProductReviewsDataSource(String accountId) throws IOException {
GoogleCredentials credential = new Authenticator().authenticate();
DataSourcesServiceSettings dataSourcesServiceSettings =
DataSourcesServiceSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(credential))
.build();
try (DataSourcesServiceClient dataSourcesServiceClient =
DataSourcesServiceClient.create(dataSourcesServiceSettings)) {
CreateDataSourceRequest request =
CreateDataSourceRequest.newBuilder()
.setParent(String.format("accounts/%s", accountId))
.setDataSource(
DataSource.newBuilder()
.setDisplayName("Product Reviews Data Source")
.setProductReviewDataSource(ProductReviewDataSource.newBuilder().build())
.build())
.build();
System.out.println("Creating product reviews data source...");
DataSource dataSource = dataSourcesServiceClient.createDataSource(request);
System.out.println(
String.format("Datasource created successfully: %s", dataSource.getName()));
} catch (Exception e) {
System.out.println(e);
System.exit(1);
}
}
public static void main(String[] args) throws Exception {
Config config = Config.load();
createProductReviewsDataSource(config.getAccountId().toString());
}
}
cURL
curl -X POST \
"https://merchantapi.googleapis.com/datasources/v1beta/accounts/{ACCOUNT_ID}/dataSources" \
-H "Authorization: Bearer <API_TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"displayName": "My Product Reviews Upload Feed",
"productReviewDataSource": {},
"fileInput": {
"fileName": "product_reviews.xml"
}
}'
Konfigurowanie ustawień automatycznego pliku danych
Automatyczne pliki danych tworzą dane produktów na podstawie zawartości Twojej witryny.
Samo źródło danych automatycznego pliku danych jest tylko do odczytu w ramach interfejsu API źródeł danych, ale możesz włączyć lub wyłączyć funkcję automatycznego pliku danych na swoim koncie za pomocą metody autofeedSettings.update
w interfejsie API kont.
Ten przykład umożliwia indeksowanie produktów za pomocą automatycznego pliku danych na koncie.
PATCH https://merchantapi.googleapis.com/accounts/v1beta/accounts/{ACCOUNT_ID}/autofeedSettings?updateMask=enableProducts
{
"name": "accounts/{ACCOUNT_ID}/autofeedSettings",
"enableProducts": true
}
Pomyślne żądanie zwraca zaktualizowany zasób AutofeedSettings
.
{
"name": "accounts/{ACCOUNT_ID}/autofeedSettings",
"enableProducts": true,
"eligible": true
}
Poniższe przykłady kodu pokazują, jak włączyć ustawienia automatycznego przesyłania danych na koncie.
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.v1beta.AutofeedSettings;
import com.google.shopping.merchant.accounts.v1beta.AutofeedSettingsName;
import com.google.shopping.merchant.accounts.v1beta.AutofeedSettingsServiceClient;
import com.google.shopping.merchant.accounts.v1beta.AutofeedSettingsServiceSettings;
import com.google.shopping.merchant.accounts.v1beta.UpdateAutofeedSettingsRequest;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;
/** This class demonstrates how to update AutofeedSettings to be enabled. */
public class UpdateAutofeedSettingsSample {
public static void updateAutofeedSettings(Config config) throws Exception {
GoogleCredentials credential = new Authenticator().authenticate();
AutofeedSettingsServiceSettings autofeedSettingsServiceSettings =
AutofeedSettingsServiceSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(credential))
.build();
// Creates AutofeedSettings name to identify AutofeedSettings.
String name =
AutofeedSettingsName.newBuilder()
.setAccount(config.getAccountId().toString())
.build()
.toString();
// Create AutofeedSettings with the updated fields.
AutofeedSettings autofeedSettings = AutofeedSettings.newBuilder().setName(name).build();
FieldMask fieldMask = FieldMask.newBuilder().addPaths("*").build();
try (AutofeedSettingsServiceClient autofeedSettingsServiceClient =
AutofeedSettingsServiceClient.create(autofeedSettingsServiceSettings)) {
UpdateAutofeedSettingsRequest request =
UpdateAutofeedSettingsRequest.newBuilder()
.setAutofeedSettings(autofeedSettings)
.setUpdateMask(fieldMask)
.build();
System.out.println("Sending Update AutofeedSettings request");
AutofeedSettings response = autofeedSettingsServiceClient.updateAutofeedSettings(request);
System.out.println("Updated AutofeedSettings 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();
updateAutofeedSettings(config);
}
}
PHP
use Google\ApiCore\ApiException;
use Google\Protobuf\FieldMask;
use Google\Shopping\Merchant\Accounts\V1beta\AutofeedSettings;
use Google\Shopping\Merchant\Accounts\V1beta\Client\AutofeedSettingsServiceClient;
use Google\Shopping\Merchant\Accounts\V1beta\UpdateAutofeedSettingsRequest;
/**
* This class demonstrates how to update AutofeedSettings to be enabled.
*/
class UpdateAutofeedSettingsSample
{
/**
* Update AutofeedSettings to be enabled.
*
* @param array $config The configuration data for authentication and account ID.
* @return void
*/
public static function updateAutofeedSettingsSample(array $config): void
{
// Get OAuth credentials.
$credentials = Authentication::useServiceAccountOrTokenFile();
// Create options for the client.
$options = ['credentials' => $credentials];
// Create a client.
$autofeedSettingsServiceClient = new AutofeedSettingsServiceClient($options);
// Create the AutofeedSettings name.
$name = "accounts/" . $config['accountId'] . "/autofeedSettings";
// Create AutofeedSettings object.
$autofeedSettings = (new AutofeedSettings())
->setName($name);
// Create FieldMask.
$fieldMask = (new FieldMask())
->setPaths(["*"]);
// Call the API.
try {
// Prepare the request.
$request = (new UpdateAutofeedSettingsRequest())
->setAutofeedSettings($autofeedSettings)
->setUpdateMask($fieldMask);
print "Sending Update AutofeedSettings request\n";
$response = $autofeedSettingsServiceClient->updateAutofeedSettings($request);
print "Updated AutofeedSettings Name below\n";
print $response->getName() . "\n";
} catch (ApiException $e) {
print $e->getMessage();
}
}
/**
* Helper to execute the sample.
*
* @return void
*/
public function callSample(): void
{
$config = Config::generateConfig();
self::updateAutofeedSettingsSample($config);
}
}
// Run the script
$sample = new UpdateAutofeedSettingsSample();
$sample->callSample();
Python
from examples.authentication import configuration
from examples.authentication import generate_user_credentials
from google.protobuf import field_mask_pb2
from google.shopping.merchant_accounts_v1beta import AutofeedSettings
from google.shopping.merchant_accounts_v1beta import AutofeedSettingsServiceClient
from google.shopping.merchant_accounts_v1beta import UpdateAutofeedSettingsRequest
_ACCOUNT = configuration.Configuration().read_merchant_info()
def update_autofeed_settings():
"""Updates the AutofeedSettings of a Merchant Center account."""
# Gets OAuth Credentials.
credentials = generate_user_credentials.main()
# Creates a client.
client = AutofeedSettingsServiceClient(credentials=credentials)
# Creates name to identify the AutofeedSettings.
name = "accounts/" + _ACCOUNT + "/autofeedSettings"
# Create AutofeedSettings with the updated fields.
autofeed_settings = AutofeedSettings(name=name, enable_products=False)
# Create the field mask.
field_mask = field_mask_pb2.FieldMask(paths=["enable_products"])
# Creates the request.
request = UpdateAutofeedSettingsRequest(
autofeed_settings=autofeed_settings, update_mask=field_mask
)
# Makes the request and catches and prints any error messages.
try:
response = client.update_autofeed_settings(request=request)
print("Updated AutofeedSettings Name below")
print(response.name)
except RuntimeError as e:
print("Update AutofeedSettings request failed")
print(e)
if __name__ == "__main__":
update_autofeed_settings()
cURL
curl -X PATCH \
"https://merchantapi.googleapis.com/accounts/v1beta/accounts/{ACCOUNT_ID}/autofeedSettings?updateMask=enableProducts" \
-H "Authorization: Bearer <API_TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"name": "accounts/{ACCOUNT_ID}/autofeedSettings",
"enableProducts": true
}'