Omówienie interfejsu Merchant Data Source API

Na tej stronie znajdziesz informacje o tym, jak programowo tworzyć i aktualizować źródła danych, które umożliwiają wstawianie produktów. Automatyczne źródła danych ułatwiają przesyłanie danych produktów do Google. Automatyczne źródła danych dbają o to, aby Google otrzymywało najbardziej aktualne informacje o odpowiednich produktach z Twojej witryny.

Content API for Shopping umożliwia tworzenie tylko podstawowych źródeł danych. Za pomocą interfejsu API źródeł danych sprzedawcy możesz tworzyć te typy źródeł danych:

Interfejs Content API for Shopping umożliwia zarządzanie źródłami danych tylko za pomocą plików wejściowych. Interfejs Merchant API umożliwia zarządzanie źródłami danych za pomocą plików i danych wejściowych interfejsu API.

Za pomocą interfejsu Merchant Data sources API możesz:

  • Utwórz nowe podstawowe źródło danych z określonym feedLabel i contentLanguage.
  • Utwórz źródło danych, które nie ma ustawionych pól feedLabel i contentLanguage. Za pomocą tego typu źródła danych możesz kierować swoje produkty na wiele krajów, ponieważ możesz wstawiać produkty z różnymi kombinacjami wartości feedLabel i contentLanguage do jednego źródła danych.
  • Utwórz dodatkowe źródło danych, aby połączyć je z dotychczasowym podstawowym źródłem danych.
  • Skonfiguruj harmonogram dla źródła danych pliku.
  • Zarejestruj konto, aby automatycznie zarządzać źródłami danych.
  • Zarządzaj źródłami danych interfejsu API.
  • Zarządzaj domyślną regułą źródeł danych, korzystając z podstawowych źródeł danych o produktach.
  • Korzystaj z innych typów źródeł danych, np. promocji.

Nie możesz używać interfejsu Merchant API do wstawiania produktów w źródle danych, które zawiera zarówno produkty dostępne lokalnie, jak i online. Więcej informacji o kanałach źródeł danych znajdziesz w artykule Kanały.

Wymagania wstępne

  • Twoje konto musi zostać przeniesione do plików danych w jednym języku.
  • Aby sprawdzić, czy konto zostało już przeniesione do podziału na docelowe dane, użyj listy źródeł danych lub metod get. Jeśli nie kwalifikujesz się do udziału w programie, otrzymasz następujący komunikat o wyjątku i musisz skontaktować się z zespołem pomocy.

    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.
    

Tworzenie nowego źródła danych

Podstawowe źródła danych to główne źródła danych o asortymencie produktów w Merchant Center. Produkty możesz dodawać i usuwać tylko za pomocą podstawowego źródła danych. Jeśli każdy produkt dodany do podstawowego źródła danych spełnia wymagania Merchant Center dotyczące danych i wyświetlania, nie musisz tworzyć kolejnych źródeł danych.

Aby utworzyć nowe podstawowe źródło danych z określonym feedLabel i contentLanguage, skonfiguruj pola feedLabel i contentLanguage w konfiguracji odpowiedniej dla typu. Więcej informacji o tych polach znajdziesz w artykule PrimaryProductDataSource.

Poniższy przykładowy żądanie pokazuje, jak utworzyć podstawowe źródło danych o produktach:

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

Zastąp następujące elementy:

  • {ACCOUNT_ID}: unikalny identyfikator Twojego konta Merchant Center.
  • {DISPLAY_NAME}: wyświetlana nazwa źródła danych.
  • {CONTENT_LANGUAGE}: dwuliterowy kod języka ISO 639-1 produktów w źródle danych.
  • {FEED_LABEL}: etykieta pliku danych źródła danych.
  • {COUNTRY}: kod regionu CLDR kraju docelowego produktów, które zostaną przesłane za pomocą źródła danych.

Po pomyślnym wykonaniu żądania wyświetli się taka odpowiedź:

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

Więcej informacji o tworzeniu źródła danych znajdziesz w metodzie accounts.dataSources.create.

Aby wyświetlić nowo utworzone źródło danych, użyj metody accounts.dataSources.get lub accounts.dataSources.list.

Ten przykład pokazuje, jak utworzyć podstawowe źródło danych o produktach dla kombinacji GB i en feedLabel oraz contentLanguage.

Java
     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;
    }
  }

Tworzenie nowego podstawowego źródła danych, które ułatwia kierowanie reklam na wiele krajów

Aby utworzyć nowy podstawowy plik danych, który pomoże Ci kierować reklamy na wiele krajów, skonfiguruj źródło danych za pomocą PrimaryProductDataSource i nie ustawiaj pól feedLabel ani contentLanguage.

W przypadku Content API for Shopping jest tworzone tylko jedno źródło danych API. Za pomocą interfejsu Merchant Data sources API możesz mieć wiele źródeł danych API, z których niektóre mogą nie mieć ustawionych pól feedLabel i contentLanguage.

Pola feedLabelcontentLanguage mogą być puste tylko w przypadku źródeł danych z danymi wejściowymi z interfejsu API. Ten typ źródeł danych nie jest obsługiwany w przypadku danych wejściowych typu plik.

Tworzenie dodatkowego źródła danych i połączenie go z podstawowym źródłem danych

Dodatkowe źródła danych służą wyłącznie do aktualizowania danych produktów, które znajdują się już w co najmniej jednym podstawowym źródle danych. Możesz mieć wiele dodatkowych źródeł danych, a każde z nich może zawierać dane uzupełniające dowolną liczbę podstawowych źródeł danych.

Za pomocą dodatkowych źródeł danych możesz wprowadzać częściowe zmiany w danych produktów, dodając niepowtarzalny identyfikator źródła danych jako parametr zapytania podczas wywoływania metod accounts.productInputs.insert i accounts.productInputs.delete. Źródeł danych uzupełniających możesz używać tylko do aktualizowania istniejących produktów.

Aby utworzyć dodatkowe źródło danych, skonfiguruj źródło danych za pomocą opcji SupplementalProductDataSource, a następnie połącz je, aktualizując pole defaultRule w podstawowym źródle danych.

Dodatkowe źródła danych oparte na plikach muszą mieć ustawione pola feedLabel i contentLanguage. W dodatkowych źródłach danych interfejsu API pola feedLabelcontentLanguage muszą być zawsze puste.

W tym przykładzie pokazujemy, jak utworzyć dodatkowe źródło danych o produktach w pliku w przypadku kombinacji enGB contentLanguage oraz feedLabel.

Java
     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;
    }
  }

Aby utworzyć dodatkowe źródło danych, które działa we wszystkich kombinacjach feedLabelcontentLanguage, uruchom ten przykład.

Java
     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.
    }
  }

Konfigurowanie harmonogramu dla źródła danych o plikach

Aby skonfigurować harmonogram dla pliku danych, użyj pola FileInput, aby skonfigurować źródło danych jako źródło danych pliku, a następnie skonfiguruj pole fetchsettings za pomocą pola FileInput.FetchSettings.

Usuwanie źródła danych

Aby usunąć z konta dotychczasowe źródło danych, użyj metody accounts.dataSources.delete.

Ten przykład pokazuje, jak za pomocą pakietu DeleteDataSourceRequest usunąć źródło danych.

Java
     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);
    }
  }

Pobieranie źródła danych

Aby pobrać plik skonfigurowany w źródle danych, użyj metody accounts.dataSources.fetch. Ta metoda umożliwia natychmiastowe pobieranie danych ze źródła danych na Twoim koncie. Ta metoda działa tylko w przypadku źródeł danych z ustawionym zestawem danych wejściowych.

Pobieranie źródła danych

Aby pobrać konfigurację źródła danych na swoim koncie, użyj metody accounts.dataSources.get.

Ten przykład pokazuje, jak za pomocą pakietu GetDataSourceRequest pobrać konkretne źródło danych na danym koncie Merchant Center.

Java
     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.
    }
  }

Wyświetlanie listy źródeł danych

Aby wyświetlić listę konfiguracji źródeł danych na swoim koncie, użyj metody accounts.dataSources.list.

Ten przykład pokazuje, jak za pomocą pakietu ListDataSourceRequest możesz wyświetlić wszystkie źródła danych na danym koncie Merchant Center.

Java
     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.
    }
  }

Źródło danych poprawki

Aby zaktualizować konfigurację dotychczasowego źródła danych, użyj metody accounts.dataSources.patch.

Ten przykład pokazuje, jak za pomocą pakietu UpdateDataSourceRequest zaktualizować źródło danych. Pokazuje też, jak zaktualizować podstawowe źródło danych, aby dodać do jego reguły domyślnej dodatkowe źródła danych.

Java
     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;
    }
  }

Główne źródła danych o produktach umożliwiają zarządzanie domyślną regułą źródeł danych. Reguła domyślna to reguła, która jest stosowana do wszystkich atrybutów w źródle danych. Regułę domyślną można ustawić podczas tworzenia źródła danych lub zaktualizować istniejące źródło danych za pomocą pola reguły domyślnej.

Więcej informacji o konfigurowaniu reguł znajdziesz w artykule Konfigurowanie reguł źródeł danych o produktach.

Dzięki tej przykładowej konfiguracji wszystkie atrybuty są najpierw pobierane ze źródła danych o wyjątkowym identyfikatorze 1001. Następnie brakujące atrybuty są dodawane z podstawowego źródła danych. Pozostałe atrybuty zostaną ostatecznie pobrane ze źródła danych uzupełniających za pomocą unikalnego identyfikatora 1002, o ile nie zostały jeszcze podane w żadnym innym źródle danych. Jeśli ten sam atrybut jest podany w kilku źródłach danych, wybrana zostanie wartość znajdująca się wyżej na liście.

defaultRule {
 takeFromDataSources: [
   '1001', // Supplemental product data source
   'self', //  Self reference to the primary data source
   '1002' // Supplemental product data source
 ]
}

Automatyczne zarządzanie plikami danych

Aby zarejestrować konto na potrzeby automatycznego zarządzania źródłami danych, wykonaj te czynności:

Gdy Twoje konto kwalifikuje się do rejestracji, możesz użyć metody accounts.autofeedSettings.updateAutofeedSettings, aby włączyć automatyczne zarządzanie źródłami danych. Włączenie automatycznego zarządzania źródłami danych pozwala Google automatycznie dodawać Twoje produkty ze sklepu internetowego i zapewniać, że są one zawsze aktualne na platformach Google.

Pobieranie stanu przesyłania pliku

Aby uzyskać stan źródła danych z pliku, funkcji pobierania lub arkusza kalkulacyjnego, możesz wywołać metodę GET usługi accounts.dataSources.fileUploads. Aby uzyskać wynik ostatniego wyszukiwania źródła danych obliczonego asynchronicznie po zakończeniu przetwarzania, użyj nazwy identyfikator latest.

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

Stan przesyłania pliku może zawierać szczegółowy widok Twoich produktów, w tym ewentualne problemy.

Pamiętaj, że stan przesyłania pliku może nie być widoczny, jeśli plik nie został przesłany. Jeśli prośba została wysłana wkrótce po przesłaniu pliku, jego stan może być „w trakcie przetwarzania”.