Ao contrário de outros recursos, os de local são criados automaticamente pela API Google Ads depois que você cria um conjunto de recursos. Primeiro, crie um conjunto de recursos de sincronização de local e anexe-o ao cliente. Em seguida, se você precisar selecionar um subconjunto dos recursos de local no conjunto de recursos de uma campanha ou grupo de anúncios, crie um conjunto de recursos de grupo por locais e anexe-o à campanha ou ao grupo de anúncios.
Crie um conjunto de recursos de sincronização de local e anexe-o ao cliente
- Crie um conjunto de recursos de sincronização de locais.
- Anexe a um cliente usando
CustomerAssetSetService
.
Criar um conjunto de recursos de sincronização de local
- Crie um novo
AssetSet
.- Defina
type
comoLOCATION_SYNC
. - Defina
location_set
como um novoLocationSet
.
- Defina
- No novo
LocationSet
,- Defina
location_ownership_type
com base no seu caso de uso:- Defina como
BUSINESS_OWNER
se você for o proprietário do local da empresa. - Defina como
AFFILIATE
se você não for o proprietário do local, mas vender seus produtos lá.
- Defina como
- Defina o campo
source
oneof com base no seu caso de uso:- Defina
business_profile_location_set
se quiser sincronizar com seus locais na conta do Perfil da Empresa no Google. - Defina
chain_location_set
se quiser sincronizar com locais nos IDs de cadeia especificados. - Defina
maps_location_set
se quiser adicionar locais manualmente usando IDs de lugar.
- Defina
- Defina
Depois de concluir essas etapas, a API Google Ads vai gerar recursos de local e adicioná-los ao conjunto de recursos de sincronização de local criado para você, assim como quando você faz isso manualmente usando AssetSetAssetService
. Não é necessário manipular esses recursos, a menos que você queira adicioná-los manualmente a um conjunto de recursos de grupo de locais estáticos.
Só pode haver um conjunto de recursos de sincronização de locais ativo com (status
de ENABLED
) para um cliente. Se você precisar criar um conjunto de recursos de sincronização de local diferente, remova o atual primeiro.
Vincular o conjunto de recursos de sincronização de local a um cliente
Use
CustomerAssetSetService.MutateCustomerAssetSets
para anexar ao cliente o conjunto de recursos de sincronização de local definido na seção anterior.
(Opcional) Crie um conjunto de recursos de grupo por locais e anexe a uma campanha ou um grupo de anúncios
Um conjunto de recursos de grupo por locais só é necessário se você precisar selecionar um subconjunto de recursos de local. Isso acontece porque as campanhas e os grupos de anúncios herdam recursos de local do nível do cliente.
Os conjuntos de recursos do grupo por locais contêm um subconjunto de recursos de locais do conjunto de recursos de sincronização de locais. Você pode criar dinamicamente um conjunto de recursos de grupo por locais usando alguns recursos do Perfil da Empresa no Google, como filtragem por rótulos ou IDs e locais de rede. Como alternativa, você pode criar um conjunto de recursos do grupo de locais de forma estática.
- Crie um conjunto de recursos de grupo por locais. O conjunto de recursos do grupo por locais pode ser dinâmico ou estático.
- Vincule o conjunto de recursos a uma campanha ou um grupo de anúncios, dependendo da sua necessidade.
- (Opcional) Adicione os recursos gerados anteriormente ao conjunto de recursos do grupo de locais estáticos recém-criado.
Para um determinado cliente, é possível criar vários conjuntos de recursos de grupo de locais dinâmicos ou estáticos.
Criar um conjunto de recursos de grupo de locais
Crie um novo AssetSet
e defina
location_group_parent_asset_set_id
como o ID do conjunto de recursos de sincronização de local
criado anteriormente.
Em seguida, defina alguns campos com base no tipo de conjunto de recursos de grupo por locais que você quer criar: dinâmico ou estático.
Conjuntos de recursos dinâmicos
Dependendo do campo definido em LocationSet
, defina os campos com base na seguinte regra:
Se você definir o seguinte campo | Em seguida, defina type como | e defina esse campo como o campo asset_set_source oneof. |
---|---|---|
business_profile_location_set |
BUSINESS_PROFILE_DYNAMIC_LOCATION_GROUP |
business_profile_location_group |
chain_location_set |
CHAIN_DYNAMIC_LOCATION_GROUP |
chain_location_group |
Se você definir maps_location_set
ao criar o conjunto de recursos de sincronização de local, não será possível criar um conjunto de recursos de grupo de locais dinâmicos. Isso acontece porque você adicionou manualmente locais por IDs de lugar e não há recursos de filtragem que possam ser usados para esse tipo de local.
Conjuntos de recursos estáticos
Defina type
como
STATIC_LOCATION_GROUP
.
É possível criar conjuntos de recursos de grupo de locais estáticos para qualquer tipo de conjunto de recursos de sincronização de locais, não importa quais campos (business_profile_location_set
, chain_location_set
ou maps_location_set
) você defina no LocationSet
.
Para conjuntos de recursos de grupo por locais estáticos, você precisa adicionar manualmente os recursos de local gerados aos conjuntos de recursos de grupo por locais.
Anexe o conjunto de recursos a uma campanha ou a um grupo de anúncios.
Use
CampaignAssetSetService.MutateCampaignAssetSets
para anexar o conjunto de recursos do grupo por locais à sua
campanha.
Ou use
AdGroupAssetSetService.MutateAdGroupAssetSets
se quiser anexar o conjunto de recursos do grupo por locais a
um grupo de anúncios.
(Opcional) Adicione os recursos de local ao conjunto de recursos do grupo por locais estático.
Essa etapa só é necessária se você criar um conjunto de recursos de grupo por locais estático.
- Use o relatório
asset_set_asset
para buscar os nomes de recursos dos recursos gerados automaticamente para o conjunto de recursos de sincronização de locais criado anteriormente. Use a filtragem para recuperar apenas os recursos que você quer. - Adicione-os ao conjunto de recursos do grupo por locais estático usando
AssetSetAssetService.MutateAssetSetAssets
.
Gerenciar IDs de locais do Perfil da Empresa
Ao usar um business_profile_location_set
e filtrar listing_id_filters
recuperados do site ou da API Business Profile, talvez seja necessário converter esses valores numéricos do tipo uint64
para int64
. Se o código gerar um erro de execução informando que o ID do local do Perfil da Empresa está fora do intervalo ao adicioná-lo ao campo repetido listing_id_filters[], provavelmente será necessário convertê-lo usando um dos exemplos a seguir:
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;
}
}