Merchant API รองรับแหล่งข้อมูลและวิธีการป้อนข้อมูลหลายประเภทเพื่อ ให้ข้อมูลที่เกี่ยวข้องกับผลิตภัณฑ์ตามความต้องการทางธุรกิจของคุณ แหล่งข้อมูล อาจมีข้อมูลประเภทต่างๆ ดังนี้
- ผลิตภัณฑ์
- พื้นที่โฆษณา
- โปรโมชัน
- อยู่ระหว่างตรวจสอบ
คุณกำหนดค่าแหล่งข้อมูลได้หลายวิธี เช่น
- การเรียก API
- การอัปโหลดไฟล์
- Autofeed
คุณสามารถรวมแหล่งข้อมูลบางประเภทที่จัดการได้ผ่าน Data sources sub-API (เช่น ผลิตภัณฑ์หรือโปรโมชัน) กับวิธีการป้อนข้อมูลที่รองรับหลายวิธี (API, การอัปโหลดไฟล์ หรือการดึงข้อมูลไฟล์) เช่น แหล่งข้อมูลผลิตภัณฑ์หลัก อาจเป็นแหล่งข้อมูลใดก็ได้ต่อไปนี้
- ฟีด API
- ฟีดไฟล์ที่ดึงข้อมูล
- ฟีดไฟล์ที่อัปโหลด
- ฟีดอัตโนมัติ
คู่มือนี้มีตัวอย่างการจัดการแหล่งข้อมูลที่มีข้อมูลและวิธีการป้อนข้อมูลประเภทต่างๆ
สิ่งที่ควรพิจารณาเป็นพิเศษ
โปรดคำนึงถึงข้อควรพิจารณาพิเศษต่อไปนี้สำหรับแหล่งข้อมูลบางประเภท
- แหล่งข้อมูลแบบอ่านอย่างเดียว: แหล่งข้อมูลบางประเภทเป็นแบบอ่านอย่างเดียวผ่าน
Data sources sub-API ซึ่งหมายความว่าคุณจะแสดงและดูรายละเอียดของผลิตภัณฑ์ได้
แต่จะสร้าง อัปเดต หรือลบผลิตภัณฑ์โดยใช้ API นี้ไม่ได้ ซึ่งรวมถึง
- แหล่งข้อมูลที่มีผลิตภัณฑ์ซึ่งจัดการโดยตรงใน UI ของ Merchant Center
(ประเภทอินพุต
UI
) - ฟีดอัตโนมัติ (ประเภทอินพุต
AUTOFEED
) แม้ว่าฟีดอัตโนมัติจะอยู่ในโหมดอ่านอย่างเดียวภายใน API ย่อยของแหล่งข้อมูล แต่คุณก็เปิดหรือปิดใช้ฟีเจอร์ฟีดอัตโนมัติสำหรับบัญชีได้โดยใช้เมธอดautofeedSettings
ใน API ย่อยของบัญชี ดูข้อมูลเพิ่มเติมได้ที่ส่วนกำหนดการตั้งค่า ฟีดอัตโนมัติ
- แหล่งข้อมูลที่มีผลิตภัณฑ์ซึ่งจัดการโดยตรงใน UI ของ Merchant Center
(ประเภทอินพุต
- กฎฟีด: Sub-API ของแหล่งข้อมูลรองรับกฎฟีดเริ่มต้นเป็นหลักสำหรับการลิงก์แหล่งข้อมูลเสริมกับแหล่งข้อมูลหลัก API นี้ไม่รองรับการสร้างและการจัดการกฎที่ซับซ้อนและกำหนดเองโดยตรง คุณสามารถจัดการลำดับของแหล่งข้อมูลเสริมภายใน กฎเริ่มต้นเพื่อระบุลำดับการรวมแอตทริบิวต์จากแหล่งข้อมูลหลักและ แหล่งข้อมูลเสริม
ตั้งค่าแหล่งข้อมูลสินค้าคงคลังในร้านด้วยการดึงข้อมูลไฟล์ที่กำหนดเวลาไว้
คุณสร้างแหล่งข้อมูลสินค้าคงคลังในร้านที่ดึงข้อมูลไฟล์โดยอัตโนมัติ
จาก URL ที่ระบุตามกำหนดการได้ หากต้องการสร้างแหล่งข้อมูลที่คล้ายกันสำหรับพื้นที่โฆษณาในระดับภูมิภาค
ให้แทนที่ฟิลด์ localInventoryDataSource
ด้วย
regionalInventoryDataSource
ในเนื้อหาคำขอ
หากต้องการสร้างแหล่งข้อมูล ให้ใช้วิธีการ
dataSources.create
และระบุออบเจ็กต์ fileInput
ที่กำหนดค่า 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"
}
}
}
คำขอที่สำเร็จจะแสดงทรัพยากร 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"
}
}
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีสร้างแหล่งข้อมูลสินค้าคงคลังในร้านด้วย การดึงข้อมูลที่กำหนดเวลาไว้
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"
}
}
}'
สร้างแหล่งข้อมูลโปรโมชันโดยใช้ API
แหล่งข้อมูลโปรโมชันช่วยให้คุณส่งข้อเสนอโปรโมชันสำหรับผลิตภัณฑ์ได้ คุณ สร้างแหล่งข้อมูลที่อิงตาม API สำหรับโปรโมชันได้ ซึ่งจะช่วยให้คุณส่ง ข้อมูลโปรโมชันได้โดยตรงโดยไม่ต้องจัดการไฟล์
ใช้วิธีการ
dataSources.create
และระบุ
promotionDataSource
สําหรับฟีด API ให้ละเว้นช่อง fileInput
POST https://merchantapi.googleapis.com/datasources/v1beta/accounts/{ACCOUNT_ID}/dataSources
{
"displayName": "My API Promotions Source",
"promotionDataSource": {
"targetCountry": "US",
"contentLanguage": "en"
}
}
คำขอที่สำเร็จจะแสดงทรัพยากร DataSource
ที่สร้างขึ้นใหม่
{
"name": "accounts/{ACCOUNT_ID}/dataSources/{DATASOURCE_ID}",
"dataSourceId": "{DATASOURCE_ID}",
"displayName": "My API Promotions Source",
"promotionDataSource": {
"targetCountry": "US",
"contentLanguage": "en"
},
"input": "API"
}
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีสร้างแหล่งข้อมูลโปรโมชันที่อิงตาม 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"
}
}'
สร้างแหล่งข้อมูลรีวิวผลิตภัณฑ์สำหรับการอัปโหลดไฟล์
ใช้แหล่งข้อมูลรีวิวผลิตภัณฑ์เพื่อส่งรีวิวของลูกค้าสำหรับผลิตภัณฑ์ คุณกำหนดค่าแหล่งข้อมูลให้ยอมรับไฟล์ที่อัปโหลดด้วยตนเองสำหรับรีวิวผลิตภัณฑ์ได้
ใช้วิธี
dataSources.create
ระบุ productReviewDataSource
และรวม fileInput
ที่มี fileName
ที่
กำหนด
POST https://merchantapi.googleapis.com/datasources/v1beta/accounts/{ACCOUNT_ID}/dataSources
{
"displayName": "My Product Reviews Upload Feed",
"productReviewDataSource": {},
"fileInput": {
"fileName": "product_reviews.xml"
}
}
คำขอที่สำเร็จจะแสดงทรัพยากร 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"
}
}
หากต้องการสร้างแหล่งข้อมูลสำหรับรีวิวของผู้ขาย คุณสามารถใช้คำขอที่คล้ายกัน
โดยแทนที่ออบเจ็กต์ productReviewDataSource
ด้วยออบเจ็กต์ merchantReviewDataSource
ที่ว่างเปล่า
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีสร้างแหล่งข้อมูลรีวิวผลิตภัณฑ์สำหรับการอัปโหลดไฟล์ด้วยตนเอง
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"
}
}'
กำหนดค่าการตั้งค่าฟีดอัตโนมัติ
Autofeed จะสร้างข้อมูลผลิตภัณฑ์โดยอัตโนมัติตามเนื้อหาของเว็บไซต์
แม้ว่าแหล่งข้อมูลฟีดอัตโนมัติจะอยู่ในโหมดอ่านอย่างเดียวภายใน Data sources
sub-API แต่คุณก็เปิดหรือปิดใช้ฟีเจอร์ฟีดอัตโนมัติสำหรับบัญชีได้โดยใช้เมธอด
autofeedSettings.update
ใน Accounts sub-API
ตัวอย่างนี้เปิดใช้การ Crawl ผลิตภัณฑ์ผ่าน Autofeed สำหรับบัญชี
PATCH https://merchantapi.googleapis.com/accounts/v1beta/accounts/{ACCOUNT_ID}/autofeedSettings?updateMask=enableProducts
{
"name": "accounts/{ACCOUNT_ID}/autofeedSettings",
"enableProducts": true
}
คำขอที่สำเร็จจะแสดงทรัพยากร AutofeedSettings
ที่อัปเดตแล้ว
{
"name": "accounts/{ACCOUNT_ID}/autofeedSettings",
"enableProducts": true,
"eligible": true
}
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีเปิดใช้การตั้งค่าฟีดอัตโนมัติสำหรับบัญชี
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
}'