Composants Lieu

Contrairement aux autres composants, les composants Lieu sont créés automatiquement par l'API Google Ads après la création d'un groupe de composants. Commencez par créer un ensemble de composants de synchronisation des lieux et à l'associer au client. Ensuite, si vous devez sélectionner un sous-ensemble de composants Lieu dans l'ensemble de composants pour une campagne ou un groupe d'annonces, créez un ensemble de composants Groupe de zones géographiques et associez-le à la campagne ou au groupe d'annonces.

Créez un ensemble de composants de synchronisation des lieux et associez-le au client.

  1. Créez un ensemble de composants de synchronisation des établissements.
  2. Associez-le à un client à l'aide de CustomerAssetSetService.

Créer un ensemble de composants de synchronisation des lieux

  1. Créez un AssetSet.
    1. Définissez type sur LOCATION_SYNC.
    2. Définissez location_set sur un nouveau LocationSet.
  2. Dans la nouvelle LocationSet,
    1. Définissez location_ownership_type en fonction de votre cas d'utilisation :
      • Définissez-le sur BUSINESS_OWNER si vous êtes propriétaire de l'établissement.
      • Définissez-le sur AFFILIATE si vous ne possédez pas l'établissement, mais que vous y vendez vos produits.
    2. Définissez le champ "oneof" source en fonction de votre cas d'utilisation :
      • Définissez business_profile_location_set si vous souhaitez synchroniser vos lieux dans votre compte Fiche d'établissement Google.
      • Définissez chain_location_set si vous souhaitez effectuer la synchronisation avec des établissements dont les ID de chaîne sont spécifiés.
      • Définissez maps_location_set si vous souhaitez ajouter manuellement des lieux à l'aide d'ID de lieu.

Une fois ces étapes terminées, l'API Google Ads génère des composants Lieu et les ajoute à l'ensemble de composants de synchronisation de lieu créé pour vous, comme lorsque vous le faites manuellement à l'aide de AssetSetAssetService. Vous n'avez pas besoin de les manipuler, sauf si vous souhaitez les ajouter manuellement à des ensembles de composants de groupe de lieux statiques.

Un seul ensemble de composants de synchronisation des lieux actifs avec (status sur ENABLED) peut exister pour un client. Si vous devez créer un autre type d'ensemble de composants de synchronisation des lieux, supprimez d'abord celui qui existe.

Associer l'ensemble de composants de synchronisation des établissements à un client

Utilisez CustomerAssetSetService.MutateCustomerAssetSets pour associer à votre client l'ensemble de composants de synchronisation des lieux défini dans la section précédente.

(Facultatif) Créez un ensemble de composants Groupe de zones géographiques et associez-le à une campagne ou à un groupe d'annonces.

Un ensemble de composants Groupe de zones géographiques n'est nécessaire que si vous devez sélectionner un sous-ensemble de composants Lieu. Cela est dû au fait que les campagnes et les groupes d'annonces héritent des composants Lieu au niveau du client.

Les ensembles de composants de groupe d'établissements contiennent un sous-ensemble de composants d'établissement de l'ensemble de composants Synchronisation des établissements. Vous pouvez créer dynamiquement un ensemble de composants de groupe d'établissements en tirant parti de certaines fonctionnalités de la fiche d'établissement Google (comme le filtrage par libellés) ou des ID et établissements de chaînes. Vous pouvez également créer statiquement un ensemble de composants de groupe de zones géographiques.

  1. Créez un ensemble de composants de groupe d'établissements. L'ensemble de composants du groupe de zones géographiques peut être dynamique ou statique.
  2. Associez l'ensemble de composants à une campagne ou à un groupe d'annonces, selon vos besoins.
  3. (Facultatif) Ajoutez les composants générés précédemment au nouvel ensemble de composants du groupe de lieux statiques.

Pour un client donné, vous pouvez créer plusieurs ensembles de composants de groupe d'établissements dynamiques ou statiques.

Créer un ensemble de composants de groupe d'établissements

Créez un AssetSet et définissez location_group_parent_asset_set_id sur l'ID de l'ensemble de composants de synchronisation des lieux créé précédemment.

Définissez ensuite certains champs selon que vous souhaitez créer un ensemble de composants Groupe de zones géographiques dynamique ou statique.

Ensembles de composants dynamiques

En fonction du champ que vous définissez dans LocationSet, définissez les champs en fonction de la règle suivante :

Si vous définissez le champ suivant Définissez ensuite type sur Définissez ce champ comme champ "oneof" asset_set_source.
business_profile_location_set BUSINESS_PROFILE_DYNAMIC_LOCATION_GROUP business_profile_location_group
chain_location_set CHAIN_DYNAMIC_LOCATION_GROUP chain_location_group

Si vous définissez maps_location_set lorsque vous créez l'ensemble de composants de synchronisation des lieux, vous ne pourrez pas créer d'ensemble de composants de groupe de lieux dynamiques. En effet, vous avez ajouté manuellement des lieux à l'aide d'ID de lieu. Aucune fonctionnalité de filtrage n'est disponible pour ce type de lieux.

Ensembles de composants statiques

Définissez type sur STATIC_LOCATION_GROUP. Vous pouvez créer des ensembles de composants de groupe de lieux statiques pour tous les types d'ensembles de composants de synchronisation des lieux, quels que soient les champs (business_profile_location_set, chain_location_set ou maps_location_set) que vous définissez dans LocationSet.

Pour les ensembles de composants de groupe d'établissements statiques, vous devez ajouter manuellement les composants Lieu générés aux ensembles de composants de groupe d'établissements.

Associer l'ensemble de composants à une campagne ou à un groupe d'annonces

Utilisez CampaignAssetSetService.MutateCampaignAssetSets pour associer l'ensemble de composants Groupe de zones géographiques à votre campagne.

Vous pouvez également utiliser AdGroupAssetSetService.MutateAdGroupAssetSets si vous souhaitez associer l'ensemble de composants Groupe de zones géographiques à un groupe d'annonces.

(Facultatif) Ajoutez les composants Lieu à l'ensemble de composants du groupe de zones géographiques statique.

Cette étape n'est obligatoire que si vous avez déjà créé un ensemble de composants de groupe d'établissements statique.

  1. Utilisez le rapport asset_set_asset pour récupérer les noms de ressources des composants générés automatiquement pour l'ensemble de composants de synchronisation des établissements créé précédemment. Utilisez le filtrage pour ne récupérer que les composants souhaités.
  2. Ajoutez-les à l'ensemble de composants du groupe de zones géographiques statiques à l'aide de AssetSetAssetService.MutateAssetSetAssets.

Gérer les ID de zones géographiques des fiches d'établissement

Lorsque vous utilisez un business_profile_location_set et que vous filtrez sur listing_id_filters récupérés sur le site Web ou l'API Fiche d'établissement, il peut être nécessaire de convertir ces valeurs numériques du type uint64 au type int64. Si votre code génère une erreur d'exécution indiquant que l'ID d'établissement de votre fiche d'établissement est hors plage lorsque vous l'ajoutez au champ répété listing_id_filters[], vous devez probablement le convertir à l'aide de l'un des exemples suivants :

Java

/**
* Converts the business profile location ID to the format expected by the
* DynamicBusinessProfileLocationGroupFilter.listing_id_filters[] repeated field.
* The business profile location ID is an unsigned 64-bit integer, while the
* listing_id_filters[] field expects signed 64-bit integers. This means that
* for business profile location IDs that are out of range, we must perform the
* two's complement to convert it into a signed int.
 *
 * @param businessProfileLocationId The ID of a Business Profile location ID.
 * @return a Business Profile location ID as a signed 64-bit integer (long).
 */
public static long convertBusinessProfileLocationId(String businessProfileLocationId) {
    return Long.parseUnsignedLong(businessProfileLocationId);
}

C#

/// <summary>
/// Converts the business profile location ID to the format expected by the
/// DynamicBusinessProfileLocationGroupFilter.listing_id_filters[] repeated field.
/// The business profile location ID is an unsigned 64-bit integer, while the
/// listing_id_filters[] field expects signed 64-bit integers. This means that
/// for business profile location IDs that are out of range, we must perform the
/// two's complement to convert it into a signed int.
/// </summary>
/// <param name="businessProfileLocationId">The ID of a Business Profile location.</param>
/// <returns>The converted business location ID in signed 64 bit.</returns>
public long ConvertBusinessProfileLocationId(ulong businessProfileLocationId)
{
  return unchecked((long)businessProfileLocationId);
}

PHP

/**
* Converts a business profile location ID to a signed 64 bit integer.
*
* Converts the business profile location ID to the format expected by the
* DynamicBusinessProfileLocationGroupFilter.listing_id_filters[] repeated field.
* The business profile location ID is an unsigned 64-bit integer, while the
* listing_id_filters[] field expects signed 64-bit integers. This means that
* for business profile location IDs that are out of range, we must perform the
* two's complement to convert it into a signed int.
*
* @param string $businessProfileLocationId the ID of a Business Profile location
* @return int the converted business location ID in signed 64 bit
*/
public static function convertBusinessProfileLocationId(string $businessProfileLocationId): int
{
    $unsignedMax = '18446744073709551615'; // 2^64 - 1
    $signedMax = '9223372036854775807'; // 2^63 - 1

    // Check if the business profile location ID is within 64 bit range.
    // If not, throw an error.
    if (bccomp($businessProfileLocationId, '0') < 0 || bccomp($businessProfileLocationId, $unsignedMax) > 0) {
        throw new InvalidArgumentException(
            'The given business profile location id is outside of the range for a 64 bit integer.'
        );
    }

    // Check if the business profile location ID is in signed 64 bit range.
    // If it's not, convert it to its two's complement.
    if (bccomp($businessProfileLocationId, $signedMax) > 0) {
        // Two's complement: ID - 2^64
        return (int) bcsub($businessProfileLocationId, '18446744073709551616');
    }

    return (int) $businessProfileLocationId;
}

Python

import ctypes

def convert_business_profile_location_id(business_profile_location_id):
    """Converts a business profile location ID to a signed 64 bit integer.

    Converts the business profile location ID to the format expected by the
    DynamicBusinessProfileLocationGroupFilter.listing_id_filters[] repeated field.
    The business profile location ID is an unsigned 64-bit integer, while the
    listing_id_filters[] field expects signed 64-bit integers. This means that
    for business profile location IDs that are out of range, we must perform the
    two's complement to convert it into a signed int.

    Args:
        business_profile_location_id: the ID of a Business Profile location ID.

    Returns:
        a Business Profile location ID as a signed 64 bit integer.
    """
    # Check if the business profile location ID is within 64 bit range.
    # If not, throw an error.
    if business_profile_location_id >= 2 ** 64:
        raise ValueError(
            "The given business profile location id is outside of the range for a 64 bit integer."
        )
    # Check if the business profile location ID is in signed 64 bit range.
    # If it's not, convert it to its two's complement.
    elif business_profile_location_id >= 2 ** 63:
        return ctypes.c_int64(business_profile_location_id).value
    else:
        return business_profile_location_id

Ruby

# Converts the business profile location ID to the format expected by the
# DynamicBusinessProfileLocationGroupFilter.listing_id_filters[] repeated field.
# The business profile location ID is an unsigned 64-bit integer, while the
# listing_id_filters[] field expects signed 64-bit integers. This means that
# for business profile location IDs that are out of range, we must perform the
# two's complement to convert it into a signed int.
# Since Ruby supports arbitrary precision numbers, we have to calculate it
# manually.
LONG_MAX = 2 ** 63
ULONG_MAX = LONG_MAX * 2
def convert_business_profile_location_id(business_profile_location_id)
  # Check if the business profile location ID is within 64 bit range.
  # If not, throw an error.
  if business_profile_location_id >= 2 ** 64
    raise "The given business profile location id is outside of the range for a 64 bit integer."
  # Check if the business profile location ID is in signed 64 bit range.
  # If it's not, convert it to its two's complement.
  elseif business_profile_location_id >= 2**63
    -1 * (ULONG_MAX - business_profile_location_id)
  else
    business_profile_location_id
  end
end

Perl

use bigint;

# Converts the business profile location ID to the format expected by the
# DynamicBusinessProfileLocationGroupFilter.listing_id_filters[] repeated field.
# The business profile location ID is an unsigned 64-bit integer, while the
# listing_id_filters[] field expects signed 64-bit integers. This means that
# for business profile location IDs that are out of range, we must perform the
# two's complement to convert it into a signed int.
sub convert_business_profile_location_id {
  my ($business_profile_location_id) = @_;

  # Check if the business profile location ID is within 64 bit range.
  # If not, throw an error.
  if ($business_profile_location_id >= 2**64) {
    die "The given business profile location id is outside of the range for a 64 bit integer";
  # Check if the business profile location ID is in signed 64 bit range.
  # If it's not, convert it to its two's complement.
  } elseif ($business_profile_location_id >= 2**63) {
    return -1 * (2**64 - $business_profile_location_id);
  } else {
    return $business_profile_location_id;
  }
}