Добавьте информацию о магазине к местным продуктам

Вы можете использовать API Merchant Inventories, чтобы указать, что ваши продукты доступны в физических магазинах.

Для местных продуктов требуется дополнительная информация, например storeCode и availability . Дополнительную информацию о полях, которые вы можете предоставить, см. в разделе Спецификация данных локальной инвентаризации .

Вот шаги, которые нужно выполнить, чтобы добавить информацию о магазине к вашим местным продуктам:

Подключите свой бизнес к Merchant Center

Чтобы размещать информацию о местных товарах в Google, вам понадобится профиль компании и аккаунт продавца .

Настройте свои учетные записи для местных списков продуктов и Настройте свою учетную запись для местного ассортимента .

После настройки учетных записей свяжите свой бизнес-профиль и учетную запись Merchant Center .

Подпишитесь на бесплатные списки местных продуктов

Связав профиль компании со своей учетной записью Merchant Center, вы можете подписаться на бесплатную рекламу местных товаров . Обязательно соблюдайте правила размещения бесплатных объявлений .

Участвуя в бесплатных местных предложениях товаров , ваши товары из магазина могут появляться в бесплатных объявлениях на ресурсах Google.

Убедитесь, что у вас есть местные продукты

Вы можете использовать Merchant API для фильтрации продуктов в вашей учетной записи по channel чтобы убедиться, что у вас есть существующие местные продукты. Для местных продуктов в качестве значения channel должно быть указано local .

Если вам нужно добавить местные продукты в свою учетную запись, используйте Merchant API для добавления новых продуктов или создайте источник данных .

Вот пример запроса на получение всех местных продуктов в аккаунте:

POST https://merchantapi.googleapis.com/reports/v1beta/accounts/{ACCOUNT_ID}/reports:search
{
  "query": "SELECT id, offer_id, title, channel FROM product_view WHERE channel='LOCAL'"
}

Вставьте информацию о магазине

Добавив местные товары в свою учетную запись Merchant Center, вы можете добавить информацию о них в магазине, например store_code , price и availability .

Вот пример, который вы можете использовать для добавления информации о магазине к продукту с помощью localInventories.insert :

Ява

  public static void insertLocalInventory(Config config, String productId, String storeCode)
      throws Exception {
    GoogleCredentials credential = new Authenticator().authenticate();

    LocalInventoryServiceSettings localInventoryServiceSettings =
        LocalInventoryServiceSettings.newBuilder()
            .setCredentialsProvider(FixedCredentialsProvider.create(credential))
            .build();

    String parent = getParent(config.getMerchantId().toString(), productId);

    try (LocalInventoryServiceClient localInventoryServiceClient =
        LocalInventoryServiceClient.create(localInventoryServiceSettings)) {

      Price price = Price.newBuilder().setAmountMicros(33_450_000).setCurrencyCode("USD").build();

      InsertLocalInventoryRequest request =
          InsertLocalInventoryRequest.newBuilder()
              .setParent(parent)
              .setLocalInventory(
                  LocalInventory.newBuilder()
                      .setAvailability("out of stock")
                      .setStoreCode(storeCode)
                      .setPrice(price)
                      .build())
              .build();

      System.out.println("Sending insert LocalInventory request");
      LocalInventory response = localInventoryServiceClient.insertLocalInventory(request);
      System.out.println("Inserted LocalInventory Name below");
      System.out.println(response.getName());
    } catch (Exception e) {
      System.out.println(e);
    }
  }

КУЛЬ

  curl --location
  'https://merchantapi.googleapis.com/inventories/v1beta/accounts/987654321/products/en~US~12345/localInventories:insert' \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer <API_TOKEN>' \
  --data '{
     "storeCode": "123456",
     "price": {
         "amountMicros": "33450000",
         "currencyCode": "USD"
     },
     "availability": "out of stock"
  }'

PHP

class InsertLocalInventory
{
    // ENSURE you fill in the merchant account and product ID for the sample to
    // work.
    private const PARENT = 'accounts/[INSERT_ACCOUNT_HERE]/products/[INSERT_PRODUCT_HERE]';
    // ENSURE you fill in store code for the sample to work.
    private const LOCAL_INVENTORY_STORE_CODE = 'INSERT_STORE_CODE_HERE';

    /**
     * Inserts a local inventory underneath the parent product.
     *
     * @param string $parent The account and product where this inventory will be inserted.
     *     Format: `accounts/{account}/products/{product}`
     * @param string $localInventoryRegion
     *     ID of the region for this
     *     `LocalInventory` resource. See the [Local availability and
     *     pricing](https://support.google.com/merchants/answer/9698880) for more details.
     */
    public function insertLocalInventorySample(
        string $parent,
        string $localInventoryStoreCode
    ): 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.
        $localInventoryServiceClient = new LocalInventoryServiceClient($options);

        // Creates a price object.
        $price = new Price(
            [
                'currency_code' => "USD",
                'amount_micros' => 33450000,
            ]
        );

        // Creates a new local inventory object.
        $localInventory = (new LocalInventory())
            ->setStoreCode($localInventoryStoreCode)
            ->setAvailability("in stock")
            ->setPrice($price);

        // Calls the API and catches and prints any network failures/errors.
        try {
            /** @var LocalInventory $response */
            $response = $localInventoryServiceClient->insertLocalInventory(
                $parent,
                $localInventory
            );
            printf('Response data: %s%s', $response->serializeToJsonString(), PHP_EOL);
        } catch (ApiException $ex) {
            printf('Call failed with message: %s%s', $ex->getMessage(), PHP_EOL);
        }
    }

    /**
     * Helper to execute the sample.
     */
    public function callSample(): void
    {
        // Makes the call to insert the local inventory to the parent product
        // for the given region.
        $this->insertLocalInventorySample($this::PARENT, $this::LOCAL_INVENTORY_STORE_CODE);
    }

}

Питон

from examples.authentication import generate_user_credentials
from google.shopping import merchant_inventories_v1beta

# ENSURE you fill in the merchant account and product ID for the sample to
# work.
_ACCOUNT = "INSERT_ACCOUNT_HERE"
_PRODUCT = "INSERT_PRODUCT_HERE"
_PARENT = f"accounts/{_ACCOUNT}/products/{_PRODUCT}"
# ENSURE you fill in store code for the sample to work.
_STORE_CODE = "INSERT_STORE_CODE_HERE"


def insert_local_inventory():
  """Inserts a `LocalInventory` to a given product.

  Replaces the full `LocalInventory` resource if an entry with the same
  `region` already exists for the product.

  It might take up to 30 minutes for the new or updated `LocalInventory`
  resource to appear in products.
  """

  # Gets OAuth Credentials.
  credentials = generate_user_credentials.main()

  # Creates a client.
  client = merchant_inventories_v1beta.LocalInventoryServiceClient(
      credentials=credentials)

  # Creates a Local inventory and populate its attributes.
  local_inventory = merchant_inventories_v1beta.LocalInventory()
  local_inventory.store_code = _STORE_CODE
  local_inventory.availability = "in stock"
  local_inventory.price = {
      "currency_code": "USD",
      "amount_micros": 33450000,
  }

  # Creates the request.
  request = merchant_inventories_v1beta.InsertLocalInventoryRequest(
      parent=_PARENT,
      local_inventory=local_inventory,
  )

  # Makes the request and catch and print any error messages.
  try:
    response = client.insert_local_inventory(request=request)

    print("Insert successful")
    print(response)
  except Exception as e:
    print("Insert failed")
    print(e)

Этот вызов возвращает точно те же значения, которые вы отправляете, и может не полностью представлять окончательные данные инвентаризации.

Прежде чем новый LocalInventory появится в продукте, может пройти до 30 минут.