Gérer différents types de sources de données

Merchant API est compatible avec plusieurs types de sources de données et de méthodes d'entrée pour fournir des informations sur les produits en fonction de vos besoins commerciaux. Les sources de données peuvent contenir différents types de données :

  • produit
  • inventaire
  • promotion
  • review

Vous pouvez configurer des sources de données de différentes manières, y compris :

  • Appels d'API
  • importation de fichiers
  • Autofeed

Vous pouvez combiner certains types de sources de données gérables via la sous-API DataSources (par exemple, les produits ou les promotions) avec plusieurs méthodes d'entrée compatibles (API, importation de fichiers ou récupération de fichiers). Par exemple, une source de données produit principale peut être l'une des suivantes :

  • un flux d'API
  • un flux de fichiers récupérés
  • un flux de fichiers importés ;
  • un flux automatique.

Ce guide fournit des exemples de gestion des sources de données avec différents types de données et méthodes de saisie.

Considérations particulières

Tenez compte des points suivants concernant certains types de sources de données.

  • Sources de données en lecture seule : certains types de sources de données sont en lecture seule via la sous-API Sources de données. Cela signifie que vous pouvez les lister et afficher leurs détails, mais que vous ne pouvez pas les créer, les mettre à jour ni les supprimer à l'aide de cette API. Par exemple :
    • Sources de données avec des produits gérés directement dans l'UI Merchant Center (type d'entrée UI).
    • Flux automatiques (type d'entrée AUTOFEED) : bien que les flux automatiques eux-mêmes soient en lecture seule dans la sous-API Sources de données, vous pouvez activer ou désactiver la fonctionnalité de flux automatique pour votre compte à l'aide des méthodes autofeedSettings dans la sous-API Comptes. Pour en savoir plus, consultez la section Configurer les paramètres de l'auto-alimentation.
  • Règles de flux : la sous-API Sources de données est principalement compatible avec les règles de flux par défaut pour associer des sources de données supplémentaires à des sources de données principales. La création et la gestion de règles personnalisées complexes ne sont pas directement prises en charge dans cette API. Vous pouvez gérer l'ordre des sources de données supplémentaires dans la règle par défaut pour spécifier l'ordre dans lequel les attributs d'une source principale et des sources supplémentaires sont combinés.

Configurer une source de données d'inventaire en magasin avec récupération planifiée de fichiers

Vous pouvez créer une source de données d'inventaire en magasin qui récupère automatiquement un fichier à partir d'une URL spécifiée selon une programmation. Pour créer une source de données similaire pour l'inventaire régional, remplacez le champ localInventoryDataSource par regionalInventoryDataSource dans le corps de la requête.

Pour créer la source de données, utilisez la méthode dataSources.create et fournissez un objet fileInput avec fetchSettings configuré.

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"
    }
  }
}

Une requête réussie renvoie la ressource DataSource créée.

{
  "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"
  }
}

Les exemples de code suivants montrent comment créer une source de données d'inventaire en magasin avec une récupération planifiée.

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"
        }
      }
    }'

Établir une source de données de promotion à l'aide de l'API

Les sources de données des promotions vous permettent d'envoyer des offres promotionnelles pour vos produits. Vous pouvez créer une source de données basée sur l'API pour vos promotions. Cela vous permet d'envoyer directement les données promotionnelles sans avoir à gérer de fichiers.

Utilisez la méthode dataSources.create et spécifiez promotionDataSource. Pour un flux d'API, ignorez le champ fileInput.

POST https://merchantapi.googleapis.com/datasources/v1beta/accounts/{ACCOUNT_ID}/dataSources
{
  "displayName": "My API Promotions Source",
  "promotionDataSource": {
    "targetCountry": "US",
    "contentLanguage": "en"
  }
}

Une requête réussie renvoie la ressource DataSource nouvellement créée.

{
  "name": "accounts/{ACCOUNT_ID}/dataSources/{DATASOURCE_ID}",
  "dataSourceId": "{DATASOURCE_ID}",
  "displayName": "My API Promotions Source",
  "promotionDataSource": {
    "targetCountry": "US",
    "contentLanguage": "en"
  },
  "input": "API"
}

Les exemples de code suivants montrent comment créer une source de données de promotion basée sur l'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"
      }
    }'

Créer une source de données d'avis sur les produits pour les importations de fichiers

Utilisez des sources de données d'avis sur les produits pour envoyer les avis des clients sur vos produits. Vous pouvez configurer une source de données pour accepter les fichiers importés manuellement pour les avis sur les produits.

Utilisez la méthode dataSources.create, spécifiez productReviewDataSource et incluez un fileInput avec un fileName désigné.

POST https://merchantapi.googleapis.com/datasources/v1beta/accounts/{ACCOUNT_ID}/dataSources
{
  "displayName": "My Product Reviews Upload Feed",
  "productReviewDataSource": {},
  "fileInput": {
    "fileName": "product_reviews.xml"
  }
}

Une requête réussie renvoie la ressource DataSource nouvellement créée.

{
  "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"
  }
}

Pour créer une source de données pour les avis sur les marchands, vous pouvez utiliser une requête similaire, en remplaçant l'objet productReviewDataSource par un objet merchantReviewDataSource vide.

Les exemples de code suivants montrent comment créer une source de données d'avis sur les produits pour les importations manuelles de fichiers.

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"
      }
    }'

Configurer les paramètres de l'alimentation automatique

Les flux automatiques créent automatiquement des données produit en fonction du contenu de votre site Web. Bien que la source de données de flux automatique soit en lecture seule dans la sous-API Data sources, vous pouvez activer ou désactiver la fonctionnalité de flux automatique pour votre compte à l'aide de la méthode autofeedSettings.update dans la sous-API Accounts.

Cet exemple active l'exploration des produits via Autofeed pour le compte.

PATCH https://merchantapi.googleapis.com/accounts/v1beta/accounts/{ACCOUNT_ID}/autofeedSettings?updateMask=enableProducts
{
  "name": "accounts/{ACCOUNT_ID}/autofeedSettings",
  "enableProducts": true
}

Une requête réussie renvoie la ressource AutofeedSettings mise à jour.

{
  "name": "accounts/{ACCOUNT_ID}/autofeedSettings",
  "enableProducts": true,
  "eligible": true
}

Les exemples de code suivants montrent comment activer les paramètres de flux automatique pour un compte.

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
    }'