تسهِّل مصادر البيانات المبرمَجة إرسال بيانات منتجاتك إلى Google. تضمن مصادر البيانات هذه وصول المعلومات الأحدث عن المنتجات ذات الصلة من موقعك الإلكتروني إلى Google.
توضّح هذه الصفحة كيفية إنشاء مصادر البيانات وتعديلها آليًا والتي تسمح لك بإدراج المنتجات.
تتيح لك Content API for Shopping إنشاء مصادر بيانات أساسية. باستخدام واجهة برمجة التطبيقات Merchant Data sources API، يمكنك أيضًا إنشاء الأنواع التالية من مصادر البيانات:
- مصادر بيانات المنتجات الأساسية
- مصادر بيانات المنتجات التكميلية
- مصادر بيانات المنتجات داخل المتجر
- مصادر بيانات المستودع على مستوى منطقة معيّنة
- مصادر بيانات العروض الترويجية
- مصادر بيانات مراجعات المنتجات
- مصادر بيانات مراجعات التجار
لا تتيح لك Content API for Shopping إدارة مصادر البيانات إلا من خلال إدخال الملفات. تتيح لك Merchant API إدارة مصادر البيانات باستخدام مدخلات الملفات وواجهات برمجة التطبيقات.
لمزيد من المعلومات حول كيفية مقارنة هذه الواجهة بـ Content API for Shopping، يُرجى الاطّلاع على مقالة نقل إدارة مصادر البيانات.
باستخدام Merchant Data sources API، يمكنك إجراء ما يلي:
- أنشئ مصدر بيانات أساسيًا باستخدام
feedLabel
وcontentLanguage
محدّدَين. - أنشئ مصدر بيانات لم يتم ضبط حقلَي
feedLabel
وcontentLanguage
فيه. باستخدام هذا النوع من مصادر البيانات، يمكنك استهداف بلدان متعددة لمنتجاتك، لأنّه يمكنك إدراج منتجات بمجموعات مختلفة منfeedLabel
وcontentLanguage
في مصدر بيانات واحد. - أنشئ مصدر بيانات تكميليًا لربطه بمصدر بيانات أساسي حالي.
- اضبط جدولاً زمنيًا لمصدر بيانات ملف.
- سجِّل حسابك لإدارة مصادر البيانات تلقائيًا.
- إدارة مصادر بيانات واجهة برمجة التطبيقات
- يمكنك إدارة القاعدة التلقائية لمصادر البيانات باستخدام مصادر بيانات المنتجات الأساسية.
- استخدِم أنواعًا أخرى من مصادر البيانات، مثل العروض الترويجية.
لمزيد من المعلومات عن قنوات مصادر البيانات، يُرجى الاطّلاع على القنوات.
المتطلبات الأساسية
- يجب أن يكون قد تم نقل حسابك إلى خلاصات لغة واحدة.
للتأكّد من أنّه سبق نقل الحساب إلى تقسيم استهداف البيانات، استخدِم قائمة مصادر البيانات أو احصل على الطرق. في حال عدم استيفاء معايير الأهلية، ستتلقّى رسالة الاستثناء التالية وعليك التواصل مع فريق الدعم.
This account is in the data sources migration process and can't be used with this API yet. Contact support for more info on when this account will be able to use the data sources endpoint.
إنشاء مصدر بيانات
مصادر البيانات الأساسية هي مصادر البيانات الرئيسية لمستودع Merchant Center. لا يمكنك إضافة منتجات أو إزالتها إلا باستخدام مصدر بيانات أساسي. إذا كان كل منتج تضيفه إلى مصدر بياناتك الأساسي يستوفي متطلبات البيانات والأهلية في Merchant Center، لن تحتاج إلى إنشاء المزيد من مصادر البيانات.
لإنشاء مصدر بيانات أساسي يحتوي على feedLabel
و
contentLanguage
محدّدَين، اضبط حقلَي feedLabel
وcontentLanguage
في الإعدادات الخاصة بالنوع. لمزيد من المعلومات عن هذه الحقول،
اطّلِع على PrimaryProductDataSource
.
يوضّح نموذج الطلب التالي كيفية إنشاء مصدر بيانات أساسي لمنتجاتك:
POST https://merchantapi.googleapis.com/datasources/v1beta/accounts/{ACCOUNT_ID}/dataSources
{
"displayName": "{DISPLAY_NAME}",
"primaryProductDataSource": {
"contentLanguage": "{CONTENT_LANGUAGE}",
"feedLabel": "{FEED_LABEL}",
"countries": [
"{COUNTRY}"
],
"channel": "ONLINE_PRODUCTS"
}
}
غيِّر القيم في السلسلة على الشكل التالي:
- {ACCOUNT_ID}: المعرّف الفريد لحسابك على Merchant Center.
- {DISPLAY_NAME}: الاسم المعروض لمصدر البيانات
- {CONTENT_LANGUAGE}: رمز اللغة المكوّن من حرفَين وفقًا لمعيار ISO 639-1 للمنتجات في مصدر البيانات
- {FEED_LABEL}: تصنيف الخلاصة لمصدر البيانات
- {COUNTRY}: رمز منطقة CLDR للبلد المستهدَف للمنتجات التي سيتم تحميلها باستخدام مصدر البيانات.
بعد تنفيذ الطلب بنجاح، يظهر الردّ التالي:
{
"name": "accounts/{ACCOUNT_ID}/dataSources/{DATASOURCE_ID}",
"dataSourceId": "{DATASOURCE_ID}",
"displayName": "{DISPLAY_NAME}",
"primaryProductDataSource": {
"channel": "ONLINE_PRODUCTS",
"feedLabel": "{FEED_LABEL}",
"contentLanguage": "{CONTENT_LANGUAGE}",
"countries": [
"{COUNTRY}"
],
"defaultRule": {
"takeFromDataSources": [
{
"self": true
}
]
}
},
"input": "API"
}
لمزيد من المعلومات عن إنشاء مصدر بيانات، يُرجى الاطّلاع على الإجراء accounts.dataSources.create.
للاطّلاع على مصدر البيانات الذي تم إنشاؤه حديثًا، استخدِم الأسلوب accounts.dataSources.get أو accounts.dataSources.list.
يوضّح المثال التالي كيفية إنشاء مصدر بيانات أساسي
للمنتجات في مجموعة GB
وen
feedLabel
وcontentLanguage
.
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.PrimaryProductDataSource;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;
/**
* This class demonstrates how to create a primary product datasource for all `feedLabel` and
* `contentLanguage` combinations. Note that rules functionality is limited for wildcard feeds.
*/
public class CreatePrimaryProductDataSourceWildCardSample {
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());
// The type of data that this datasource will receive.
PrimaryProductDataSource primaryProductDataSource =
PrimaryProductDataSource.newBuilder()
// Channel can be "ONLINE_PRODUCTS" or "LOCAL_PRODUCTS" or "PRODUCTS" .
// While accepted, datasources with channel "products" representing unified products
// currently cannot be used with the Products bundle.
.setChannel(PrimaryProductDataSource.Channel.ONLINE_PRODUCTS)
.addCountries("GB")
.build();
try (DataSourcesServiceClient dataSourcesServiceClient =
DataSourcesServiceClient.create(dataSourcesServiceSettings)) {
CreateDataSourceRequest request =
CreateDataSourceRequest.newBuilder()
.setParent(parent)
.setDataSource(
DataSource.newBuilder()
.setDisplayName(displayName)
.setPrimaryProductDataSource(primaryProductDataSource)
.build())
.build();
System.out.println("Sending Create PrimaryProduct DataSource request");
DataSource response = dataSourcesServiceClient.createDataSource(request);
System.out.println("Created DataSource Name below");
System.out.println(response.getName());
return response.getName();
} catch (Exception e) {
System.out.println(e);
System.exit(1);
// Null is necessary to satisfy the compiler as we're not returning a String on failure.
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 = "Primary Product Data Wildcard";
createDataSource(config, displayName);
}
}
إنشاء مصدر بيانات أساسي جديد يساعد في استهداف بلدان متعدّدة
لإنشاء خلاصة أساسية جديدة تساعدك في استهداف بلدان متعدّدة، عليك ضبط
مصدر بياناتك باستخدام
PrimaryProductDataSource
ولا تضبط حقلَي feedLabel
وcontentLanguage
.
باستخدام Content API for Shopping، يتم إنشاء مصدر بيانات واحد فقط لواجهة برمجة التطبيقات
لحسابك. باستخدام Merchant Data sources API، يمكنك الحصول على مصادر بيانات متعددة من واجهة برمجة التطبيقات،
وبعضها يمكن أن يكون بدون ضبط الحقلين feedLabel
وcontentLanguage
.
يمكن أن تكون مصادر البيانات التي تتضمّن إدخال واجهة برمجة التطبيقات فقط بدون ضبط حقلَي feedLabel
و
contentLanguage
. لا يمكن استخدام هذا النوع من مصادر البيانات مع مدخلات الملفات.
إنشاء مصدر بيانات تكميلي وربطه بمصدر البيانات الأساسي
لا تُستخدَم مصادر البيانات التكميلية إلّا لتعديل بيانات المنتجات التي سبق أن تمّت إضافتها إلى مصدر بيانات أساسي واحد أو أكثر. يمكنك إنشاء عدّة مصادر بيانات تكميلية، ويمكن لكلّ منها إضافة بيانات إلى أي عدد من مصادر البيانات الأساسية.
يمكنك استخدام مصادر البيانات التكميلية لإجراء تعديلات جزئية على بيانات المنتجات من خلال
إضافة المعرّف الفريد لمصدر البيانات كمَعلمة طلب بحث عند إجراء
طلبات إلى الأسلوبين
accounts.productInputs.insert
و
accounts.productInputs.delete
. لا يمكنك استخدام مصادر البيانات التكميلية إلّا لتعديل المنتجات الحالية.
لإنشاء مصدر بيانات تكميلي، عليك ضبط مصدر البيانات باستخدام
SupplementalProductDataSource
ثم ربطه من خلال تعديل الحقل defaultRule
في مصدر البيانات الأساسي.
يجب ضبط الحقلين feedLabel
وcontentLanguage
في مصادر بيانات الملفات التكميلية. يجب عدم ضبط حقلَي feedLabel
و
contentLanguage
في مصادر بيانات البيانات التكميلية من واجهة برمجة التطبيقات.
يوضّح العيّنة التالية كيفية إنشاء ملف تكميلي لملف مصدر بيانات المنتجات
للتوفّر في كل من en
وGB
contentLanguage
وfeedLabel
.
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.SupplementalProductDataSource;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;
/**
* This class demonstrates how to create a File Supplemental product datasource for the "en" and
* "GB" `feedLabel` and `contentLanguage` combination. This supplemental feed is eligible to be
* linked to both a wildcard primary feed and/or a primary feed with the same `feedLabel` and
* `contentLanguage` combination.
*/
public class CreateFileSupplementalProductDataSourceSample {
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 Supplemental 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());
try (DataSourcesServiceClient dataSourcesServiceClient =
DataSourcesServiceClient.create(dataSourcesServiceSettings)) {
CreateDataSourceRequest request =
CreateDataSourceRequest.newBuilder()
.setParent(parent)
.setDataSource(
DataSource.newBuilder()
.setDisplayName(displayName)
.setSupplementalProductDataSource(
SupplementalProductDataSource.newBuilder()
.setContentLanguage("en")
.setFeedLabel("GB")
.build())
.setFileInput(fileInput)
.build())
.build();
System.out.println("Sending create SupplementalProduct DataSource request");
DataSource response = dataSourcesServiceClient.createDataSource(request);
System.out.println("Created DataSource Name below");
System.out.println(response.getName());
return response.getName();
} catch (Exception e) {
System.out.println(e);
System.exit(1);
// Null is necessary to satisfy the compiler as we're not returning a String on failure.
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 File Supplemental Product Data";
// The file input data that this datasource will receive.
FileInput fileInput = setFileInput();
createDataSource(config, displayName, fileInput);
}
}
لإنشاء مصدر بيانات تكميلي يناسب جميع مجموعات feedLabel
و
contentLanguage
، شغِّل العيّنة التالية.
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.SupplementalProductDataSource;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;
/**
* This class demonstrates how to create a Supplemental product datasource all `feedLabel` and
* `contentLanguage` combinations. This works only for API supplemental feeds.
*/
public class CreateSupplementalProductDataSourceWildCardSample {
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)
.setSupplementalProductDataSource(
SupplementalProductDataSource.newBuilder().build())
.build())
.build();
System.out.println("Sending create SupplementalProduct DataSource request");
DataSource response = dataSourcesServiceClient.createDataSource(request);
System.out.println("Created DataSource Name below");
System.out.println(response.getName());
return response.getName();
} catch (Exception e) {
System.out.println(e);
System.exit(1);
return null; // Necessary to satisfy the compiler as we're not returning a
// String on failure.
}
}
public static void main(String[] args) throws Exception {
Config config = Config.load();
// The displayed datasource name in the Merchant Center UI.
String displayName = "Supplemental API Product Data Wildcard";
createDataSource(config, displayName);
}
}
إعداد جدول زمني لمصدر بيانات الملفات
لإعداد جدول زمني لخلاصة الملفات، اضبط مصدر البيانات ليكون مصدر بياناتملف باستخدام الحقل FileInput
، ثم اضبط
fetchsettings
باستخدام الحقل FileInput.FetchSettings
.
حذف مصدر بيانات
لحذف مصدر بيانات حالي من حسابك، استخدِم accounts.dataSources.delete
هذه الطريقة.
يوضّح العيّنة التالية كيفية استخدام حزمة
DeleteDataSourceRequest
لحذف مصدر data.
Java
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.datasources.v1beta.DataSourceName;
import com.google.shopping.merchant.datasources.v1beta.DataSourcesServiceClient;
import com.google.shopping.merchant.datasources.v1beta.DataSourcesServiceSettings;
import com.google.shopping.merchant.datasources.v1beta.DeleteDataSourceRequest;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;
/** This class demonstrates how to delete a datasource. */
public class DeleteDataSourceSample {
public static void deleteDataSource(Config config, String dataSourceId) throws Exception {
GoogleCredentials credential = new Authenticator().authenticate();
DataSourcesServiceSettings dataSourcesServiceSettings =
DataSourcesServiceSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(credential))
.build();
String name =
DataSourceName.newBuilder()
.setAccount(config.getAccountId().toString())
.setDatasource(dataSourceId)
.build()
.toString();
try (DataSourcesServiceClient dataSourcesServiceClient =
DataSourcesServiceClient.create(dataSourcesServiceSettings)) {
DeleteDataSourceRequest request = DeleteDataSourceRequest.newBuilder().setName(name).build();
System.out.println("Sending deleteDataSource request");
// Delete works for any datasource type.
// If Type "Supplemental", delete will only work if it's not linked to any primary feed.
// If a link exists and the Type is "Supplemental", you will need to remove the supplemental
// feed from the default and/or custom rule(s) of any primary feed(s) that references it. Then
// retry the delete.
dataSourcesServiceClient.deleteDataSource(request); // No response returned on success.
System.out.println(
"Delete successful, note that it may take a few 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 automatically assigned to the datasource after creation by Google.
String dataSourceId = "1111111111"; // Replace with your datasource ID.
deleteDataSource(config, dataSourceId);
}
}
استرجاع مصدر البيانات
لجلب ملف تم ضبطه في مصدر البيانات، استخدِم الأسلوب
accounts.dataSources.fetch
. تُجري هذه الطريقة عملية استرجاع البيانات على الفور من مصدر بيانات في
حسابك. لا تعمل هذه الطريقة إلا على مصادر البيانات التي تتضمّن مجموعة إدخال ملف.
الحصول على مصدر البيانات
لاسترداد إعدادات مصدر البيانات لحسابك، استخدِم الإجراء
accounts.dataSources.get
.
يوضّح العيّنة التالية كيفية استخدام حزمة
GetDataSourceRequest
لاسترداد
مصدر بيانات معيّن لحساب معيّن على Merchant Center.
Java
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.datasources.v1beta.DataSource;
import com.google.shopping.merchant.datasources.v1beta.DataSourceName;
import com.google.shopping.merchant.datasources.v1beta.DataSourcesServiceClient;
import com.google.shopping.merchant.datasources.v1beta.DataSourcesServiceSettings;
import com.google.shopping.merchant.datasources.v1beta.GetDataSourceRequest;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;
/** This class demonstrates how to get a specific datasource for a given Merchant Center account. */
public class GetDataSourceSample {
public static DataSource getDataSource(Config config, String dataSourceId) throws Exception {
// Obtains OAuth token based on the user's configuration.
GoogleCredentials credential = new Authenticator().authenticate();
// Creates service settings using the credentials retrieved above.
DataSourcesServiceSettings dataSourcesServiceSettings =
DataSourcesServiceSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(credential))
.build();
// Creates datasource name to identify datasource.
String name =
DataSourceName.newBuilder()
.setAccount(config.getAccountId().toString())
.setDatasource(dataSourceId)
.build()
.toString();
// Calls the API and catches and prints any network failures/errors.
try (DataSourcesServiceClient dataSourcesServiceClient =
DataSourcesServiceClient.create(dataSourcesServiceSettings)) {
// The name has the format: accounts/{account}/datasources/{datasource}
GetDataSourceRequest request = GetDataSourceRequest.newBuilder().setName(name).build();
System.out.println("Sending GET DataSource request:");
DataSource response = dataSourcesServiceClient.getDataSource(request);
System.out.println("Retrieved DataSource below");
System.out.println(response);
return response;
} catch (Exception e) {
System.out.println(e);
System.exit(1);
return null; // Necessary to satisfy the compiler as we're not returning a
// DataSource on failure.
}
}
public static void main(String[] args) throws Exception {
Config config = Config.load();
// An ID assigned to a datasource by Google.
String datasourceId = "1111111111"; // Replace with your datasource ID.
getDataSource(config, datasourceId);
}
}
مصدر بيانات القائمة
لعرض إعدادات مصادر البيانات لحسابك، استخدِم الطريقة
accounts.dataSources.list
.
يوضّح العيّنة التالية كيفية استخدام حزمة
ListDataSourceRequest
لعرض جميع مصدر
البيانات لحساب معيّن على Merchant Center.
Java
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.shopping.merchant.datasources.v1beta.DataSource;
import com.google.shopping.merchant.datasources.v1beta.DataSourcesServiceClient;
import com.google.shopping.merchant.datasources.v1beta.DataSourcesServiceClient.ListDataSourcesPagedResponse;
import com.google.shopping.merchant.datasources.v1beta.DataSourcesServiceSettings;
import com.google.shopping.merchant.datasources.v1beta.ListDataSourcesRequest;
import java.util.ArrayList;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;
/** This class demonstrates how to list all the datasources for a given Merchant Center account */
public class ListDataSourcesSample {
private static String getParent(String accountId) {
return String.format("accounts/%s", accountId);
}
public static ArrayList<DataSource> listDataSources(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.
DataSourcesServiceSettings dataSourcesServiceSettings =
DataSourcesServiceSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(credential))
.build();
// Creates parent to identify the account from which to list all the datasources.
String parent = getParent(config.getAccountId().toString());
// Calls the API and catches and prints any network failures/errors.
try (DataSourcesServiceClient dataSourcesServiceClient =
DataSourcesServiceClient.create(dataSourcesServiceSettings)) {
// The parent has the format: accounts/{account}
ListDataSourcesRequest request =
ListDataSourcesRequest.newBuilder().setParent(parent).build();
System.out.println("Sending list datasources request:");
ListDataSourcesPagedResponse response = dataSourcesServiceClient.listDataSources(request);
int count = 0;
ArrayList<DataSource> dataSources = new ArrayList<DataSource>();
ArrayList<DataSource> justPrimaryDataSources = new ArrayList<DataSource>();
// Iterates over all rows in all pages and prints the datasource in each row.
// Automatically uses the `nextPageToken` if returned to fetch all pages of data.
for (DataSource element : response.iterateAll()) {
System.out.println(element);
count++;
dataSources.add(element);
// The below lines show how to filter datasources based on type.
// `element.hasSupplementalProductDataSource()` would give you supplemental
// datasources, etc.
if (element.hasPrimaryProductDataSource()) {
justPrimaryDataSources.add(element);
}
}
System.out.print("The following count of elements were returned: ");
System.out.println(count);
return dataSources;
} catch (Exception e) {
System.out.println(e);
System.exit(1);
return null; // Necessary to satisfy the compiler as we're not returning an
// ArrayList<DataSource> on failure.
}
}
public static void main(String[] args) throws Exception {
Config config = Config.load();
listDataSources(config);
}
}
مصدر بيانات التصحيح
لتعديل إعدادات مصدر بيانات حالي، استخدِم الأسلوب
accounts.dataSources.patch
.
يوضّح العيّنة التالية كيفية استخدام حزمة
UpdateDataSourceRequest
لتعديل مصدر data. ويوضّح أيضًا كيفية تعديل مصدر بيانات أساسي لإضافة
مصادر بيانات تكميلية إلى قاعدته التلقائية.
Java
import com.google.api.gax.core.FixedCredentialsProvider;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.protobuf.FieldMask;
import com.google.shopping.merchant.datasources.v1beta.DataSource;
import com.google.shopping.merchant.datasources.v1beta.DataSourceName;
import com.google.shopping.merchant.datasources.v1beta.DataSourceReference;
import com.google.shopping.merchant.datasources.v1beta.DataSourcesServiceClient;
import com.google.shopping.merchant.datasources.v1beta.DataSourcesServiceSettings;
import com.google.shopping.merchant.datasources.v1beta.PrimaryProductDataSource;
import com.google.shopping.merchant.datasources.v1beta.PrimaryProductDataSource.DefaultRule;
import com.google.shopping.merchant.datasources.v1beta.UpdateDataSourceRequest;
import shopping.merchant.samples.utils.Authenticator;
import shopping.merchant.samples.utils.Config;
/**
* This class demonstrates how to update a datasource to change its name in the MC UI. It also
* demonstrates how to update a primary datasource to add supplemental datasources to its default
* rule (https://support.google.com/merchants/answer/7450276).
*/
public class UpdateDataSourceSample {
public static String updateDataSource(Config config, String displayName, String dataSourceId)
throws Exception {
GoogleCredentials credential = new Authenticator().authenticate();
DataSourcesServiceSettings dataSourcesServiceSettings =
DataSourcesServiceSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(credential))
.build();
// Creates datasource name to identify datasource.
String name =
DataSourceName.newBuilder()
.setAccount(config.getAccountId().toString())
.setDatasource(dataSourceId)
.build()
.toString();
DataSource dataSource =
DataSource.newBuilder()
// Update the datasource to have the new display name
.setDisplayName(displayName)
.setName(name)
.build();
FieldMask fieldMask = FieldMask.newBuilder().addPaths("display_name").build();
try (DataSourcesServiceClient dataSourcesServiceClient =
DataSourcesServiceClient.create(dataSourcesServiceSettings)) {
UpdateDataSourceRequest request =
UpdateDataSourceRequest.newBuilder()
.setDataSource(dataSource)
.setUpdateMask(fieldMask)
.build();
System.out.println("Sending Update DataSource request");
DataSource response = dataSourcesServiceClient.updateDataSource(request);
System.out.println("Updated DataSource Name below");
System.out.println(response.getName());
return response.getName();
} catch (Exception e) {
System.out.println(e);
System.exit(1);
return null;
}
}
public String updateDataSource(
Config config,
String primaryDataSourceName,
String firstSupplementalDataSourceName,
String secondSupplementalDataSourceName)
throws Exception {
GoogleCredentials credential = new Authenticator().authenticate();
DataSourcesServiceSettings dataSourcesServiceSettings =
DataSourcesServiceSettings.newBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(credential))
.build();
// Setting self to 'true' refers to the primary datasource itself.
DataSourceReference dataSourceReferenceSelf =
DataSourceReference.newBuilder().setSelf(true).build();
DataSourceReference firstSupplementalDataSourceReference =
DataSourceReference.newBuilder()
.setSupplementalDataSourceName(firstSupplementalDataSourceName)
.build();
DataSourceReference secondSupplementalDataSourceReference =
DataSourceReference.newBuilder()
.setSupplementalDataSourceName(secondSupplementalDataSourceName)
.build();
// The attributes will first be taken from the primary DataSource.
// Then the first supplemental DataSource if the attribute is not in the primary DataSource
// And finally the second supplemental DataSource if not in the first two DataSources.
// Note that CustomRules could change the behavior of how updates are applied.
DefaultRule defaultRule =
DefaultRule.newBuilder()
.addTakeFromDataSources(dataSourceReferenceSelf)
.addTakeFromDataSources(firstSupplementalDataSourceReference)
.addTakeFromDataSources(secondSupplementalDataSourceReference)
.build();
// The type of data that this datasource will receive.
PrimaryProductDataSource primaryProductDataSource =
PrimaryProductDataSource.newBuilder().setDefaultRule(defaultRule).build();
DataSource dataSource =
DataSource.newBuilder()
// Update the primary datasource to have the default rule datasources in the correct
// order.
.setPrimaryProductDataSource(primaryProductDataSource)
.setName(primaryDataSourceName)
.build();
// The '.' signifies a nested field.
FieldMask fieldMask =
FieldMask.newBuilder().addPaths("primary_product_data_source.default_rule").build();
try (DataSourcesServiceClient dataSourcesServiceClient =
DataSourcesServiceClient.create(dataSourcesServiceSettings)) {
UpdateDataSourceRequest request =
UpdateDataSourceRequest.newBuilder()
.setDataSource(dataSource)
.setUpdateMask(fieldMask)
.build();
System.out.println("Sending Update DataSource request");
DataSource response = dataSourcesServiceClient.updateDataSource(request);
System.out.println("Updated 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 updated displayed datasource name in the Merchant Center UI.
String displayName = "Great Britain Primary Product Data";
// The ID of the datasource to update
String dataSourceId = "11111111"; // Replace with your datasource ID.
updateDataSource(config, displayName, dataSourceId);
}
}
ربط مصادر البيانات
تتيح لك مصادر بيانات المنتجات الأساسية إدارة القاعدة التلقائية لمصادر البيانات. القاعدة التلقائية هي القاعدة التي تنطبق على كل السمات في مصدر بياناتك. يمكن ضبط القاعدة التلقائية أثناء إنشاء مصدر البيانات أو من خلال تعديل مصدر بيانات حالي من خلال حقل القاعدة التلقائية.
لمزيد من المعلومات عن إعداد القواعد، يُرجى الاطّلاع على إعداد قواعد لمصادر بيانات المنتجات.
يضمن نموذج الإعداد التالي أنّه يتم أولاً أخذ جميع السمات
من مصدر البيانات الذي يحمل المعرّف الفريد 1001
. بعد ذلك، تتم إضافة السمات
غير المتوفّرة من مصدر البيانات الأساسي. في النهاية، سيتم أخذ السمات
المتبقية من مصدر البيانات التكميلية باستخدام المعرّف
الفريد 1002
إذا لم يتم تقديمها في أي مصدر بيانات آخر. إذا تم تقديم السمة نفسها في مصادر بيانات متعددة، يتم اختيار القيمة الأعلى في القائمة.
defaultRule {
takeFromDataSources: [
'1001', // Supplemental product data source
'self', // Self reference to the primary data source
'1002' // Supplemental product data source
]
}
الإدارة التلقائية للخلاصات
لتسجيل حسابك لإدارة مصادر البيانات تلقائيًا، عليك تنفيذ ما يلي:
- تحقَّق ممّا إذا كان حسابك مؤهّلاً للتسجيل من خلال استدعاء الأسلوب
accounts.autofeedSettings.getAutofeedSettings
. - تأكَّد من أنّ حسابك ليس حساب سوق.
بعد أن يصبح حسابك مؤهّلاً للتسجيل، يمكنك استخدام الطريقة
accounts.autofeedSettings.updateAutofeedSettings
لتفعيل الإدارة التلقائية لمصادر البيانات. من خلال تفعيل ميزة
الإدارة التلقائية لمصادر البيانات، يمكن لمحرّك بحث Google إضافة منتجاتك تلقائيًا من
متجرك على الإنترنت والتأكّد من أنّها محدّثة دائمًا على منصات Google.
استرداد حالة تحميل الملف
للحصول على حالة مصدر بيانات باستخدام ملف أو استرجاع أو جدول بيانات،
يمكنك استدعاء طريقة GET
للخدمة
accounts.dataSources.fileUploads
. للحصول على نتيجة آخر عملية استرجاع لمصدر البيانات يتم احتسابها
بشكل غير متزامن عند الانتهاء من معالجة مصدر البيانات، استخدِم اسم
المعرّف latest
.
GET https://merchantapi.googleapis.com/accounts/v1beta/{ACCOUNT_ID}/datasources/{DATASOURCE_ID}/fileUploads/latest
قد تحتوي حالة تحميل الملف على عرض تفصيلي لمنتجاتك، بما في ذلك أي مشاكل محتملة.
يُرجى العِلم أنّه قد لا تتوفّر حالة تحميل الملف إذا لم يتم تحميله مطلقًا. قد تكون حالة تحميل الملف في وضع المعالجة إذا تم طلبها بعد تحميل الملف بوقت قصير.