نمای کلی از Merchant Data Sources API

منابع داده خودکار ارسال داده‌های محصول شما را به Google آسان‌تر می‌کنند. این منابع داده تضمین می کنند که به روزترین اطلاعات در مورد محصولات مرتبط از وب سایت شما به گوگل می رسد.

این صفحه نحوه ایجاد و به روز رسانی منابع داده خود را که به شما امکان می دهد محصولات را درج کنید، به صورت برنامه نویسی نشان می دهد.

Content API for Shopping به شما امکان می دهد منابع داده اولیه ایجاد کنید. با Merchant Data Sources API، می‌توانید انواع منابع داده زیر را نیز ایجاد کنید:

Content API for Shopping فقط به شما امکان می دهد منابع داده را با ورودی فایل مدیریت کنید. Merchant API به شما امکان می دهد منابع داده را با ورودی فایل و API مدیریت کنید.

برای اطلاعات بیشتر در مورد اینکه چگونه این مورد با Content API برای خرید مقایسه می‌شود، به مدیریت منابع داده مهاجرت مراجعه کنید.

با استفاده از Merchant Data Sources API، می‌توانید کارهای زیر را انجام دهید:

  • یک منبع داده اولیه با یک feedLabel و contentLanguage خاص ایجاد کنید.
  • منبع داده‌ای ایجاد کنید که فیلدهای feedLabel و contentLanguage تنظیم نشده باشد. با استفاده از این نوع منبع داده، می‌توانید چندین کشور را برای محصولات خود هدف قرار دهید، زیرا می‌توانید محصولات با ترکیب‌های مختلف feedLabel و contentLanguage را در یک منبع داده قرار دهید.
  • یک منبع داده تکمیلی برای پیوند به منبع داده اولیه موجود ایجاد کنید.
  • یک برنامه زمانی برای منبع داده فایل تنظیم کنید.
  • حساب خود را برای مدیریت خودکار منابع داده ثبت کنید.
  • مدیریت منابع داده API
  • قانون پیش فرض منابع داده را با استفاده از منابع داده محصول اولیه مدیریت کنید.
  • از انواع دیگر منابع داده مانند تبلیغات استفاده کنید.

برای اطلاعات بیشتر در مورد کانال های منابع داده، به کانال ها مراجعه کنید.

پیش نیازها

  • حساب شما باید به فیدهای محلی منتقل شده باشد.
  • برای تأیید اینکه حساب قبلاً به تقسیم هدف داده منتقل شده است، از فهرست منبع داده یا روش‌های دریافت استفاده کنید. در صورتی که واجد شرایط نباشید، پیام استثنایی زیر را دریافت خواهید کرد و باید با پشتیبانی تماس بگیرید.

    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 ایجاد کنید.

جاوا

   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 برای خرید، تنها یک منبع داده API برای شما ایجاد شده است. با استفاده از Merchant Data Sources API، می‌توانید چندین منبع داده API داشته باشید که برخی از آنها می‌توانند بدون مجموعه فیلدهای feedLabel و contentLanguage باشند.

فقط منابع داده با ورودی API می توانند بدون تنظیم فیلدهای feedLabel و contentLanguage باشند. این نوع از منابع داده برای ورودی فایل پشتیبانی نمی شود.

یک منبع داده تکمیلی ایجاد کنید و آن را به منبع داده اولیه پیوند دهید

منابع داده تکمیلی فقط برای به‌روزرسانی داده‌های محصولی استفاده می‌شوند که از قبل در یک یا چند منبع داده اولیه وجود دارد. شما می توانید چندین منبع داده تکمیلی داشته باشید، و هر کدام می توانند داده ها را در هر تعداد منبع داده اولیه تکمیل کنند.

هنگام برقراری تماس با روش های accounts.productInputs.insert و accounts.productInputs.delete می توانید از منابع داده تکمیلی برای به روز رسانی جزئی داده های محصول با افزودن شناسه منحصر به فرد منبع داده به عنوان پارامتر جستجو استفاده کنید. شما فقط می توانید از منابع داده تکمیلی برای به روز رسانی محصولات موجود استفاده کنید.

برای ایجاد یک منبع داده تکمیلی، منبع داده خود را با استفاده از SupplementalProductDataSource پیکربندی کنید و سپس آن را با به روز رسانی فیلد defaultRule در منبع داده اصلی خود پیوند دهید.

منابع داده فایل تکمیلی باید دارای فیلدهای feedLabel و contentLanguage باشند. منابع داده API تکمیلی باید همیشه دارای فیلدهای feedLabel و contentLanguage تنظیم نشده باشند.

نمونه زیر نشان می‌دهد که چگونه می‌توانید یک منبع داده محصول تکمیلی برای ترکیب en و GB contentLanguage و feedLabel ایجاد کنید.

جاوا

   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 کار می‌کند، نمونه زیر را اجرا کنید.

جاوا

   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 برای حذف منبع داده استفاده کنید.

جاوا

   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 معین استفاده کنید.

جاوا

   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 معین استفاده کنید.

جاوا

   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 برای به روز رسانی یک منبع داده استفاده کنید. همچنین نشان می دهد که چگونه یک منبع داده اولیه را به روز کنید تا منابع داده تکمیلی را به قانون پیش فرض آن اضافه کنید.

جاوا

   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.updateAutofeedSettings برای فعال کردن مدیریت خودکار منابع داده استفاده کنید. فعال کردن مدیریت خودکار منابع داده به Google اجازه می‌دهد به‌طور خودکار محصولات شما را از فروشگاه آنلاین شما اضافه کند و اطمینان حاصل کند که همیشه در پلتفرم‌های Google به‌روز هستند.

بازیابی وضعیت آپلود فایل

برای دریافت وضعیت منبع داده با فایل، واکشی یا صفحه گسترده، می‌توانید با روش GET سرویس accounts.dataSources.fileUploads تماس بگیرید. برای به دست آوردن نتیجه آخرین بازیابی منبع داده محاسبه شده به صورت ناهمزمان پس از پایان پردازش منبع داده، latest شناسه نام استفاده کنید.

GET https://merchantapi.googleapis.com/accounts/v1beta/{ACCOUNT_ID}/datasources/{DATASOURCE_ID}/fileUploads/latest

وضعیت آپلود فایل ممکن است نمای دقیقی از محصولات شما، از جمله مشکلات احتمالی داشته باشد.

توجه داشته باشید که اگر فایل هرگز آپلود نشده باشد، ممکن است وضعیت آپلود فایل وجود نداشته باشد. اگر بلافاصله پس از آپلود فایل درخواست شود، وضعیت آپلود فایل ممکن است در حالت پردازش باشد.