Адреса

Расширение "Адреса" позволяет добавлять в стандартные текстовые объявления адрес, номер телефона и маркер местоположения. Существует два типа таких расширений:

  • Адреса в AdWords – служат для привлечения потенциальных клиентов по адресу компании. Позволяют показывать в объявлениях схему проезда, расстояние и адрес.

  • Партнерские адреса – помогают пользователям находить магазины поблизости, в которых продаются нужные им товары. Это расширение подойдет вам, если вы продаете свои товары через сеть розничных магазинов.

Адреса в AdWords

С помощью расширения "Адреса" вы можете добавлять в стандартные текстовые объявления адрес, номер телефона и маркер местоположения. Управлять адресами можно через Менеджер адресов в сервисе "Google Мой бизнес" или Google My Business API. Из этого раздела вы узнаете, как создавать адреса, используя Google My Business API, а также связывать их с объявлениями с помощью AdWords API.

Google Мой бизнес

В сервисе "Google Мой бизнес" хранится информация обо всех ваших адресах из всех продуктов Google. Поэтому данные этих сервисов синхронизировать с AdWords не нужно. Достаточно один раз выполнить настройку необходимых объектов фидов, и адреса в расширениях AdWords будут автоматически синхронизироваться с новейшими данными в сервисе "Google Мой бизнес".

В этом руководстве даются подробные инструкции, как настраивать адреса программным путем с помощью Google My Business API и связывать их с AdWords, создавая необходимые объекты фидов. Если для этой цели вы хотите использовать Менеджер адресов в сервисе "Google Мой бизнес", сразу переходите к шагу 3.

Процедура

Если вы не знакомы с концепцией фидов в AdWords, советуем сначала ознакомиться с руководством по созданию дополнительных ссылок с использованием фидов. Приведенные ниже инструкции основаны на материалах этого руководства.

Процесс создания и связывания адресов включает следующие шаги:

  1. Выполните аутентификацию для вызовов Google My Business API и AdWords API (OAuth 2.0).

  2. Создайте новое расширение, используя Google My Business API.

    1. Используйте accounts.list, чтобы извлечь аккаунты, которые вам принадлежат или которыми вы управляете в сервисе "Google Мой бизнес".
    2. Выберите нужный аккаунт (например, AccountType = BUSINESS).
    3. Создайте расширение, добавьте ярлык, адрес, часы работы и другую информацию о своей компании.
  3. Создайте новый фид для расширений "Адреса" и свяжите его со своим аккаунтом в сервисе "Google Мой бизнес".

    1. В поле systemFeedGenerationData укажите объект PlacesLocationFeedData, содержащий информацию о вашем аккаунте в сервисе "Google Мой бизнес".
    2. Для переменной origin задайте значение ADWORDS.
    3. Не указывайте никаких атрибутов фида feedAttributes. Они будут созданы автоматически, поскольку фид генерируется системой.
    4. Выполните операцию FeedService.mutate()ADD.
  4. Свяжите фид с клиентом.

    1. Скопируйте идентификатор фида feedId из шага 3.
    2. Укажите Тип заполнителя для LOCATION – 7.
    3. Выберите подходящую функцию сопоставления matchingFunction.
    4. Выполните операцию CustomerFeedService.mutate()ADD.
  5. Свяжите фид с кампаниями или группами объявлений (необязательный шаг).

    1. Скопируйте идентификатор фида feedId из шага 3.
    2. Укажите Тип заполнителя для LOCATION – 7.
    3. Используйте matchingFunction для фильтрации по ярлыку из шага 2c.
    4. Выполните операцию CampaignFeedService.mutate() ADD или AdGroupFeedService.mutate() ADD.

Если вы знакомы с фидами для других расширений, то, возможно, заметили, что указанный список действий не включают в себя создание объекта FeedMapping. Поскольку фид создается системой, AdWords может сопоставить его атрибуты с полями меток-заполнителей для расширений "Адреса", поэтому нет необходимости предоставлять эту информацию. В следующих разделах рассматривается, как создать объект systemFeedGenerationData при настройке фида (шаг 3a). Ниже также приведен полный пример кода.

Создание объекта PlacesLocationFeedData для фида

Назначение атрибута systemFeedGenerationData для фида сообщает системе AdWords, что необходимо выполнить следующие действия:

Задайте атрибуты объекта PlacesLocationFeedData следующим образом:

Атрибут Обязательно? Описание
emailAddress Да Адрес электронной почты владельца или одного из менеджеров аккаунта в сервисе "Google Мой бизнес". Должен совпадать с адресом, указанным в oAuthInfo.
oAuthInfo Да Данные OAuth2, которые обеспечивают вашему аккаунту AdWords доступ к аккаунту в сервисе "Google Мой бизнес".
businessAccountIdentifier Нет Идентификатор аккаунта компании, адреса которой следует использовать. Если вы работаете с Google My Business API, идентификатор можно найти в разделе account_id названия (name) объекта Account. Можно также скопировать содержание BUSINESS_ACCOUNT_ID из URL компании, который выглядит примерно так:

https://business.google.com/b/BUSINESS_ACCOUNT_ID/...
businessNameFilter Нет Название компании для синхронизации с AdWords.
categoryFilters Нет Категории компаний для синхронизации с AdWords.
labelFilters Нет Ярлыки страниц для синхронизации с AdWords.

Создание объекта OAuthInfo для PlacesLocationFeedData

Атрибут oAuthInfo объекта PlacesLocationFeedData предоставляет информацию, обеспечивающую аккаунту AdWords доступ для чтения данных из вашего аккаунта в сервисе "Google Мой бизнес".

Задайте атрибуты объекта OAuthInfo следующим образом:

Атрибут Значение Описание
httpMethod GET или PUT Метод HTTP для получения данных авторизации.
httpRequestUrl https://www.googleapis.com/auth/adwords Область действия OAuth, с помощью которой AdWords API авторизует запросы к сервису "Google Мой бизнес".
httpAuthorizationHeader Bearer OAUTH_ACCESS_TOKEN Заголовок авторизации, содержащий токен доступа OAuth, который предоставляет аккаунту AdWords разрешение на чтение данных из аккаунта в сервисе "Google Мой бизнес". Вместо OAUTH_ACCESS_TOKEN подставьте свой токен доступа, полученный для emailAddress объекта PlacesLocationFeedData, и область действия, соответствующую httpRequestUrl.

Полный пример кода

В следующем примере используются клиентские библиотеки Java для Google My Business API и AdWords API. Инструкции для других языков программирования можно найти здесь.

Шаг 1: выполните аутентификацию для вызовов Google My Business API и AdWords API (OAuth 2.0)

// Creating the default factory and transport (used later)
JsonFactory jsonFactory = JacksonFactory.getDefaultInstance();
HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();

// Load the credentials from the ads.properties file.
// Please note: This example assumes that your AdWords and MyBusiness accounts
// are linked to the same Google account, and that the Adwords API scope
// (https://www.googleapis.com/auth/adwords) was used when generating the
// refresh token.
// If you are using different Google accounts, you must authenticate
// separately and maintain two credentials (see
// /my-business/content/set-up-java-client).
Credential credential =
    new OfflineCredentials.Builder()
        .forApi(Api.ADWORDS)
        .withHttpTransport(httpTransport)
        .fromFile()
        .build()
        .generateCredential();

Шаг 2: создайте новое расширение "Адреса", используя Google My Business API

// Initialize GMB.
Mybusiness gmb =
    new Mybusiness.Builder(httpTransport, jsonFactory, credential)
        .setApplicationName(APPLICATION_NAME)
        .build();
// Get list of GMB accounts (2a).
Mybusiness.Accounts.List listAccounts = gmb.accounts().list();
ListAccountsResponse response = listAccounts.execute();
List<Account> accounts = response.getAccounts();

// Find the account to work with (2b). The first BUSINESS account is used
// here, but you can use any other account as well (e.g., PERSONAL).
Account mainAccount = null;
for (Account account : accounts) {
  if (account.getType().equalsIgnoreCase("BUSINESS")) {
    mainAccount = account;
    break;
  }
}
if (mainAccount == null) {
  throw new RuntimeException("Main GMB account not found");
}
// Create the location (2c).
Location location = new Location();
location.setLocationName("My Company");
location.setStoreCode("Company-1");
location.setPrimaryPhone("16505550001");
location.setPrimaryCategory(new Category().setCategoryId("gcid:software_company"));
location.setWebsiteUrl("https://www.example.com/");
// Create an address.
Address address = new Address();
List<String> addressLines = new ArrayList<String>();
addressLines.add("1600 Amphitheatre Pkwy");
address.setAddressLines(addressLines);
address.setLocality("Mountain View");
address.setAdministrativeArea("CA");
address.setCountry("US");
address.setPostalCode("94043");
location.setAddress(address);
// Create business hours (optional).
BusinessHours businessHours = new BusinessHours();
List<TimePeriod> periods = new ArrayList<TimePeriod>();
List<String> days =
    Arrays.asList("Monday", "Tuesday", "Wednesday", "Thursday", "Friday");
for (String day : days) {
  TimePeriod period = new TimePeriod();
  period.setOpenDay(day);
  period.setOpenTime("9:00");
  period.setCloseTime("17:00");
  period.setCloseDay(day);
  periods.add(period);
}
businessHours.setPeriods(periods);
location.setRegularHours(businessHours);

// Assign a label to the location (optional). This example uses the AdWords
// customer ID as a label to associate the location with an ad group in AdWords.
// You can use any label value to identify locations, or no label at all
// (e.g., filter by business name or category).
location.setLabels(Collections.singletonList(INSERT_CUSTOMER_ID_HERE));
CreateLocationRequest createLocationRequest = new CreateLocationRequest();
createLocationRequest.setLocation(location);
createLocationRequest.setLanguageCode("en-US");
// Use a random request ID.
createLocationRequest.setRequestId(UUID.randomUUID().toString());
Mybusiness.Accounts.Locations.Create createLocation =
    gmb.accounts().locations().create(mainAccount.getName(),
    createLocationRequest);
Location createdLocation = createLocation.execute();

Шаг 3: создайте новый фид, связанный с сервисом "Google Мой бизнес"

// Initialize AdWords.
AdWordsSession session = new AdWordsSession.Builder()
    .fromFile()
    .withOAuth2Credential(credential)
    .build();
session.setClientCustomerId(INSERT_CUSTOMER_ID_HERE);
AdWordsServices services = new AdWordsServices();
FeedServiceInterface feedService =
    services.get(session, FeedServiceInterface.class);
// Create the feed object.
Feed gmbFeed = new Feed();
gmbFeed.setName("GMB feed #" + System.currentTimeMillis());
// Create the PlacesLocationFeedData object (3a).
PlacesLocationFeedData feedData = new PlacesLocationFeedData();
feedData.setEmailAddress(GMB_ACCOUNT_EMAIL);
OAuthInfo oAuthInfo = new OAuthInfo();
oAuthInfo.setHttpMethod("GET");
oAuthInfo.setHttpRequestUrl(
    "https://www.googleapis.com/auth/adwords");
oAuthInfo.setHttpAuthorizationHeader(
    String.format("Bearer %s", credential.getAccessToken()));
feedData.setOAuthInfo(oAuthInfo);
gmbFeed.setSystemFeedGenerationData(feedData);
// Since this feed's feed items will be managed by AdWords,
// you must set its origin to ADWORDS (3b).
gmbFeed.setOrigin(FeedOrigin.ADWORDS);
// Note: No feed attributes for the feed were specified, as this is a
// system-generated feed (3c).
// Create an operation to add the feed.
FeedOperation feedOperation = new FeedOperation();
feedOperation.setOperand(gmbFeed);
feedOperation.setOperator(Operator.ADD);
// Add the feed (3d).
FeedReturnValue addFeedResult = feedService.mutate(
    new FeedOperation[] {feedOperation});
Feed createdFeed = addFeedResult.getValue(0);

Шаг 4: свяжите фид с клиентом

CustomerFeedServiceInterface customerFeedService =
    services.get(session, CustomerFeedServiceInterface.class);
CustomerFeed customerFeed = new CustomerFeed();
// Set feedId and placeholder type (4a + 4b).
customerFeed.setFeedId(createdFeed.getId());
customerFeed.setPlaceholderTypes(new int[] {PLACEHOLDER_LOCATION});
// Create a matching function that will always evaluate to true (4c).
Function customerMatchingFunction = new Function();
ConstantOperand constOperand = new ConstantOperand();
constOperand.setType(ConstantOperandConstantType.BOOLEAN);
constOperand.setBooleanValue(true);
customerMatchingFunction.setLhsOperand(
    new FunctionArgumentOperand[] {constOperand});
customerMatchingFunction.setOperator(FunctionOperator.IDENTITY);
customerFeed.setMatchingFunction(customerMatchingFunction);
// Create an operation to add the customer feed.
CustomerFeedOperation customerFeedOperation = new CustomerFeedOperation();
customerFeedOperation.setOperand(customerFeed);
customerFeedOperation.setOperator(Operator.ADD);
// Add the feed (4d).
CustomerFeedReturnValue customerFeedResult = customerFeedService.mutate(
    new CustomerFeedOperation[] {customerFeedOperation});
CustomerFeed createdCustomerFeed = customerFeedResult.getValue(0);

Шаг 5: свяжите фид с определенными группами объявлений (аналогично с кампаниями)

AdGroupFeedServiceInterface adgroupFeedService =
    services.get(session, AdGroupFeedServiceInterface.class);
// Create the ad group feed.
AdGroupFeed adgroupFeed = new AdGroupFeed();
adgroupFeed.setAdGroupId(AD_GROUP_ID);
// Set feedId and placeholder type (5a + 5b).
adgroupFeed.setFeedId(createdFeed.getId());
adgroupFeed.setPlaceholderTypes(new int[] {PLACEHOLDER_LOCATION});
// Define matching function based on the label (5c).
Function matchingFunction = new Function();
String matchingFunctionString = String.format(
    "EQUALS(FeedAttribute[%d, 14], \"%s\")",
    createdFeed.getId(),
    createdLocation.getLabels().get(0));
matchingFunction.setFunctionString(matchingFunctionString);
adgroupFeed.setMatchingFunction(matchingFunction);
// Create an operation to add the ad group feed.
AdGroupFeedOperation operation = new AdGroupFeedOperation();
operation.setOperand(adgroupFeed);
operation.setOperator(Operator.ADD);
// Add the feed (5d).
AdGroupFeedReturnValue result = adgroupFeedService.mutate(
    new AdGroupFeedOperation[]{operation});
AdGroupFeed createdAdGroupFeed = result.getValue(0);

Фильтрация расширений "Адреса"

Расширения "Адреса" автоматически включаются для всех кампаний и групп объявлений в аккаунте. Чтобы применить их лишь к определенной группе объявлений или кампании, настройте фильтры.

Стратегии фильтрации

Расширения "Адреса" поддерживают фильтры на нескольких уровнях аккаунта. Эти фильтры можно определить с помощью различных механизмов. Используйте matchingFunction объекта CampaignFeed или AdGroupFeed, если вы хотите показывать разные адреса в объявлениях из разных кампаний или групп объявлений.

Приоритет имеет наиболее узкий фильтр. Допустим, у вас есть:

  • CustomerFeed;
  • CampaignFeed для кампании A;
  • AdGroupFeed для группы объявлений G в кампании A;
  • другая кампания B, у которой нет ни CampaignFeed, ни AdGroupFeed.

Вот что вы получите в результате такой настройки (пунктирной линией обозначено, какая функция сопоставления используется для объявлений):

  • В объявлениях из группы G адреса будут показываться только для элементов, которые соответствуют функции сопоставления (matchingFunction) в AdGroupFeed.
  • В объявлениях из всех остальных групп в кампании А адреса будут показываться только для элементов, которые соответствуют функции сопоставления в CampaignFeed.
  • В объявлениях из кампании B адреса будут показываться для элементов, которые соответствуют функции сопоставления в CustomerFeed.

Использование атрибутов для фильтрации

Фильтры в объектах фида ограничивают количество синхронизируемых элементов фида с помощью атрибутов businessNameFilter, categoryFilters или labelFilters объекта PlacesLocationFeedData. Фильтры в других объектах определяют, какие элементы фидов в AdWords будут использоваться в качестве адресов для заданного сочетания клиента, кампании и группы объявлений. Эти фильтры можно применять в следующих случаях:

  • Если один и тот же аккаунт в сервисе "Google Мой бизнес" используется с несколькими аккаунтами AdWords, при этом каждый аккаунт AdWords логически связан с подмножеством адресов.
  • Если в сервисе "Google Мой бизнес" у вас есть адреса, которые никогда не должны показываться в объявлениях.

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

  • Ярлыки (метка-заполнитель 14). Указав ярлыки для каждого адреса в сервисе "Google Мой бизнес", вы сможете выполнять фильтрацию в AdWords по любым нужным вам критериям (например, по идентификатору клиента или уникальному идентификатору, созданному вашим приложением).

    Если задано поле labelFilters, для синхронизации в элементы фида будут отбираться только страницы, у которых есть какие-либо из указанных ярлыков. Если в labelFilters нет значения, для синхронизации будут допущены все страницы. Кроме того, все ярлыки страницы в сервисе "Google Мой бизнес" синхронизируются в атрибут фида с feedAttributeId = 14 и type = STRING_LIST. Вы можете отфильтровать только те элементы фида, у которых есть один или несколько ярлыков, указав соответствующее условие в функции сопоставления:

    CONTAINS_ANY(FeedAttribute[FeedId,14],{"label1","label2","label3"})
    
  • Название компании (метка-заполнитель 1). Для более тщательной фильтрации можно использовать название компании.

  • Категория компании (метка-заполнитель 9). Фильтрация по категориям позволяет находить более широкие соответствия, а также уточнять результаты за счет сочетания категории и названия кампании (с помощью оператора AND).

Автоматическое удаление недействительных фильтров

AdWords выполняет ежедневную проверку фильтров, заданных для ваших адресов. Если будет установлено, что тому или иному фильтру не соответствует ни один из филиалов в сервисе "Google Мой бизнес", фильтр будет удален, как описано ниже.

Где находится фильтр Как он будет удален
PlacesLocationFeedData Перечисленным ниже атрибутам PlacesLocationFeedData будет присвоено значение null.
  • businessNameFilter
  • categoryFilters
  • labelFilters
CampaignFeed Будет удален объект CampaignFeed.
AdGroupFeed Будет удален объект AdGroupFeed.

Дополнительная информация

Подробнее о фильтрации по идентификатору атрибута фида рассказывается в руководстве по функциям сопоставления. Примеры объектов CampaignFeed и AdGroupFeed можно найти в руководстве по созданию дополнительных ссылок с использованием фидов.

Партнерские адреса

С помощью расширения Партнерские адреса можно привлекать потенциальных покупателей в розничные магазины, через которые вы продаете свои товары. Ниже описано, чем адреса в сервисе "Google Мой бизнес" отличаются от партнерских адресов.

Адрес в сервисе "Google Мой бизнес" Партнерский адрес
Рекламодатель должен установить связь с аккаунтом сервиса "Google Мой бизнес". Связь с аккаунтом сервиса "Google Мой бизнес" не требуется.
Фид местоположений создается на основе адресов, указанных в аккаунте сервиса "Google Мой бизнес". Фиды местоположений создаются в AdWords по идентификатору торговой сети.
Не более одного фида на аккаунт. Несколько фидов в аккаунте.

Процедура

Настройка партнерских адресов выполняется так же, как в сервисе "Google Мой бизнес":

  1. Создайте фид партнерских адресов.
  2. Свяжите фид с клиентом, кампанией или группой объявлений.

Шаг 1. Создание фида партнерских адресов

Создайте фид партнерских адресов в аккаунте. Если вы не знакомы с фидами в AdWords, прочтите руководство по созданию дополнительных ссылок с использованием фидов. Приведенные ниже инструкции основаны на материалах этого руководства.

Инициализируйте сеанс и сервисы AdWords.

// Generate a refreshable OAuth2 credential.
Credential oAuth2Credential =
    new OfflineCredentials.Builder()
        .forApi(Api.ADWORDS)
        .fromFile()
        .build()
        .generateCredential();

// Construct an AdWordsSession.
AdWordsSession session =
    new AdWordsSession.Builder().fromFile().withOAuth2Credential(oAuth2Credential).build();

AdWordsServicesInterface adWordsServices = AdWordsServices.getInstance();

Создайте фид и передайте в systemFeedGenerationData объект AffiliateLocationFeedData, содержащий информацию о розничных магазинах, в которых продаются ваши товары. Не забудьте указать, что фид создан системой. Для этого присвойте атрибуту origin значение ADWORDS.

// Create a feed that will be populated with all the addresses that correspond to the chain ID
// you requested. Do not add FeedAttributes to this object, as AdWords will add them
// automatically because this will be a system generated feed.
Feed affiliateFeed = new Feed();
affiliateFeed.setName("Affiliate location extension feed " + System.currentTimeMillis());

Chain chain = new Chain();
chain.setChainId(chainId);

// Since this feed's feed items will be managed by AdWords, you must set its origin to ADWORDS.
affiliateFeed.setOrigin(FeedOrigin.ADWORDS);

// Set the system feed generation data for AdWords.
AffiliateLocationFeedData feedData = new AffiliateLocationFeedData();
feedData.setChains(new Chain[] {chain});
feedData.setRelationshipType(RelationshipType.GENERAL_RETAILERS);

affiliateFeed.setSystemFeedGenerationData(feedData);

// Create an operation to add the feed.
FeedOperation feedOperation = new FeedOperation();
feedOperation.setOperand(affiliateFeed);
feedOperation.setOperator(Operator.ADD);

FeedReturnValue addFeedResult = feedService.mutate(new FeedOperation[] {feedOperation});
return addFeedResult.getValue(0);
Объект AffiliateLocationFeedData

Как и в случае с фидами обычных адресов, вам не нужно создавать FeedMapping или feedAttributes. Поскольку этот фид создается системой, AdWords использует атрибут фида systemFeedGenerationData для выполнения следующих действий:

  • Автоматическое создание атрибутов для фида.
  • Автоматическое создание объектов FeedMapping для фида.
  • Добавление в фид адресов магазинов розничных сетей, которые вы указали в systemFeedGenerationData.

Задайте атрибуты объекта AffiliateLocationFeedData, как показано ниже.

Атрибут Обязательно? Описание
chains Да Розничные сети, которые вы хотите рекламировать (см. список идентификаторов розничных сетей).
relationshipType Да Тип отношений между рекламодателем и торговой сетью.
Подождите, пока фид будет готов

Как и в случае с фидами обычных адресов, нужно подождать, пока фид партнерских адресов будет готов, прежде чем связывать его с клиентом. Разница заключается лишь в том, что при вызове FeedMappingService.query() нужно применить фильтр для PLACEHOLDER ID = 30.

FeedMappingServiceInterface feedMappingService =
    adWordsServices.get(session, FeedMappingServiceInterface.class);

String query =
    String.format(
        "SELECT FeedId, FeedMappingId, AttributeFieldMappings WHERE "
            + "FeedId = %d AND PlaceholderType = %d AND Status = ENABLED",
        feed.getId(), PLACEHOLDER_AFFILIATE_LOCATION);

FeedMapping retval = null;
FeedMappingPage page = null;

int numberOfAttempts = 0;
do {
  numberOfAttempts++;
  page = feedMappingService.query(query);

  if (page.getTotalNumEntries() == 0) {
    long sleepSeconds = (long) Math.scalb(5, numberOfAttempts);
    System.out.printf(
        "Attempt #%d to get FeedMapping was not successful. "
            + "Waiting %d seconds before trying again.%n",
        numberOfAttempts, sleepSeconds);
    Thread.sleep(sleepSeconds * 1000);
  } else {
    retval = page.getEntries(0);
    break;
  }

} while (numberOfAttempts < MAX_FEED_MAPPING_POLL_ATTEMPTS);

if (retval == null) {
  throw new IllegalStateException("Affiliate location feedmapping isn't setup correctly.");
}
return retval;

Шаг 2. Связывание фида с клиентом, кампанией или группой объявлений

Когда фид будет готов, создайте объект CampaignFeed и свяжите его с кампанией. Процедуры связывания фида с группой объявлений и с клиентом похожи. Отличаются они тем, что в первом случае нужно создать объект AdGroupFeed, во втором – CustomerFeed, а также использовать соответствующую функцию сопоставления.

В приведенном ниже фрагменте кода партнерские адреса отфильтрованы так, чтобы в кампании показывались только филиалы одной торговой сети.

/**
 * The placeholder ID for affiliate locations. See
 * https://developers.google.com/adwords/api/docs/appendix/placeholders for a complete list of
 * valid values.
 */
private static final int PLACEHOLDER_AFFILIATE_LOCATION = 30;

/** Placeholder feed ID for chain ID attribute. */
private static final int PLACEHOLDER_FIELD_CHAIN_ID = 10;

...

CampaignFeedServiceInterface campaignFeedService =
    adWordsServices.get(session, CampaignFeedServiceInterface.class);

CampaignFeed campaignFeed = new CampaignFeed();
campaignFeed.setPlaceholderTypes(new int[] {PLACEHOLDER_AFFILIATE_LOCATION});

campaignFeed.setCampaignId(campaignId);
campaignFeed.setFeedId(feed.getId());

Function matchingFunction = new Function();
matchingFunction.setFunctionString(
    String.format(
        "IN(FeedAttribute[%d, %d], {%d})", feed.getId(), attributeIdForChainId, chainId));

campaignFeed.setMatchingFunction(matchingFunction);

CampaignFeedOperation operation = new CampaignFeedOperation();
operation.setOperator(Operator.ADD);
operation.setOperand(campaignFeed);

CampaignFeedReturnValue addedCampaignFeedResult =
    campaignFeedService.mutate(new CampaignFeedOperation[] {operation});
return addedCampaignFeedResult.getValue(0);

Идентификатор атрибута фида можно извлечь из объекта FeedMapping следующим образом:

/**
 * The placeholder ID for affiliate locations. See
 * https://developers.google.com/adwords/api/docs/appendix/placeholders for a complete list of
 * valid values.
 */
private static final int PLACEHOLDER_AFFILIATE_LOCATION = 30;

/** Placeholder feed ID for chain ID attribute. */
private static final int PLACEHOLDER_FIELD_CHAIN_ID = 10;

...

for (AttributeFieldMapping fieldMapping : feedMapping.getAttributeFieldMappings()) {
  if (fieldMapping.getFieldId() == PLACEHOLDER_FIELD_CHAIN_ID) {
    return fieldMapping.getFeedAttributeId();
  }
}
throw new IllegalStateException("Affiliate location feed mapping isn't setup correctly.");

Допустимые функции сопоставления

В таблице ниже вы найдете список поддерживаемых функций сопоставления, а также описание их применения.

Применение Функция сопоставления Примечания
Фильтрация по идентификатору сети IN(FeedAttribute[FeedId, ChainAttributeId], {"CH1234", "CH2345"}) Можно использовать не более 20 идентификаторов сети.
Таргетинг на все адреса фида IDENTITY(true)
Исключение всех адресов фида из таргетинга IDENTITY(false)

Оставить отзыв о...

Текущей странице
Нужна помощь? Обратитесь в службу поддержки.