Общая информация об объявлениях

В этом руководстве представлен обзор различных типов и функций объявлений в AdWords API с примерами их применения.

Пример

Представьте, что вы владеете магазином гитар Intergalactic Guitar Shop и хотите провести рекламную кампанию, чтобы привлечь новых покупателей. Из этого руководства вы узнаете, какими объявлениями и функциями лучше воспользоваться.

Где вы хотите показывать рекламу?

Показ объявлений AdWords осуществляется через две рекламные сети:

  • Поисковая сеть: страницы с результатами Google Поиска и других сервисов Google (Карты, Покупки и т. д.), а также партнерские поисковые сайты.
  • Контекстно-медийная сеть: сайты YouTube, Blogger, Gmail и других сервисов Google, а также многочисленные партнерские ресурсы в Интернете.

Предположим, что вы хотите разместить рекламу в двух сетях, но вам неудобно управлять сразу двумя кампаниями (поисковой и медийной). Поэтому вам лучше создать кампанию типа Поисковая сеть и оптимизированная контекстно-медийная сеть с одной группой объявлений.

Воспользуйтесь для этого примером AddCampaigns из папки Основные операции вашей клиентской библиотеки.

Объявления какого типа вам нужны?

Итак, вы решили, где хотите показывать рекламу. Теперь нужно понять, какой тип объявлений для этого нужен. В AdWords API доступны типы объявлений, перечисленные ниже.

Тип Поисковая сеть Контекстно-медийная сеть Описание
ExpandedTextAd

Да

Да

Новый стандарт текстовых объявлений AdWords. Такие объявления включают в себя два заголовка, описание продукта или услуги, строки навигации и сгенерированный отображаемый URL.

ProductAd

Да

Нет

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

DynamicSearchAd

Да

Нет

Динамическое поисковое объявление, созданное на основе содержания веб-сайта.

ResponsiveDisplayAd

Нет

Да

Объявление, состоящее из графического файла, короткого и длинного заголовков, описания, а также наименования и логотипа рекламодателя (последние два элемента можно добавлять по собственному усмотрению).

GmailAd

Нет

Да

Объявление для кампаний в Gmail.

CallOnlyAd

Нет

Да

Объявление для кампаний типа "Только номер телефона".

ImageAd

Да1

Да

Объявление с графическим файлом.

TemplateAd

Да2

Да2

Объявление, созданное по готовому шаблону.

1 Графическое объявлениеImageAd для поисковой сети может показываться только на сайтах партнеров Google (но не в Google Поиске).

2 Изучите список шаблонов TemplateAd и руководство по объявлениям на основе шаблонов, чтобы узнать больше (в том числе о том, в каких сетях поддерживается каждый шаблон).

Будем считать, что вы решили начать с самого распространенного типа – развернутых текстовых объявлений ExpandedTextAd – и намерены использовать одно такое объявление ExpandedTextAd для показа в поисковой и контекстно-медийной сетях.

Настройка развернутых текстовых объявлений

ExpandedTextAd – относительно простой объект, для которого нужно задать только следующие атрибуты:

  • HeadlinePart1 – первая часть заголовка.
  • HeadlinePart2 – вторая часть заголовка.
  • Description – описание объявления.
  • FinalUrls – URL-адреса страниц вашего сайта, на которые пользователи переходят после клика.

Подробнее см. в примере AddExpandedTextAds из папки Основные операции вашей клиентской библиотеки.

Настройка объявлений для Gmail

Объект GmailAd можно создавать только в кампаниях, в которых в качестве типа advertisingChannelType выбран DISPLAY, а в качестве типа advertisingChannelSubType – DISPLAY_GMAIL_AD. При создании объектов GmailAd не забывайте о следующем:

  • Необходимо указать значение объекта marketingImage или productVideoList.
  • Если вы выбираете объект productVideoList, видеоролики уже должны быть загружены в систему AdWords. Загрузку можно выполнить через пользовательский интерфейс AdWords или с помощью скриптов AdWords. Идентификаторы видео затем можно извлечь с помощью сервиса MediaService.

Ознакомьтесь с полным списком примеров работы с AddGmailAds в клиентской библиотеке (см. папку Advanced Opмerations).

Добавление расширений

Для начала в группу объявлений можно добавить самое простое развернутое текстовое объявление (ExpandedTextAd). Однако вы наверняка захотите, чтобы в нем появилась также дополнительная информация, ссылки и кнопки.

Такие элементы добавляются с помощью расширений объявлений. Содержание большинства расширений определяется при помощи фидов в AdWords API. Вы можете использовать следующие типы расширений:

  • Дополнительные ссылки – ссылки на определенные страницы сайта.
  • Адреса – адрес компании, номер телефона и маркер местоположения, сопровождающие текст объявления, или ссылка на маршрут до адреса компании (в объявлениях на мобильных устройствах).
  • Ссылки на мобильные приложения для смартфона или планшета.
  • Уточнения – дополнительные сведения о компании, ее товарах и услугах.
  • Отзывы – положительные рецензии, информация о присужденных наградах и независимые рейтинги, которые показываются в дополнительной строке текста под объявлением в Google Поиске.

Как владелец магазина Intergalactic Guitar Shop вы хотите, чтобы все знали, что ваша компания:

  • предоставляет услуги по ремонту гитар;
  • торгует как акустическими, так и электрогитарами;
  • предлагает уроки игры на гитаре.

Дополнительные ссылки – отличный способ донести эту информацию до потенциальных покупателей.

Чтобы настроить дополнительные ссылки, следуйте инструкциям из этого руководства, в котором вы также найдете ссылку на полный пример кода для разных клиентских библиотек.

Добавление адресов в объявления

Теперь ваше объявление содержит дополнительные ссылки. Но вы ещё хотите, чтобы покупатели могли легко найти ваш магазин, особенно с помощью мобильных устройств.

Если адрес магазина уже указан в вашем аккаунте Google Моего бизнеса, то вам нужно просто связать этот аккаунт с AdWords. Информация о местоположении начнет автоматически отображаться в объявлениях.

Пошаговые инструкции по связыванию аккаунтов и примеры кода можно найти в этом руководстве.

Другие расширения объявлений

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

В этом руководстве вы найдете примеры настройки каждого типа расширения.

Ротация объявлений

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

Доступны две настройки ротации объявлений:

  • Оптимизировать: этот вариант ротации обеспечивает показ только наиболее эффективных объявлений группы. Используется по умолчанию.
  • Чередовать без ограничения времени: объявления допускаются на аукцион примерно с одинаковой частотой. При этом настройка действует без ограничений по времени, а оптимизация не включается автоматически.

Настройки ротации определяются на уровне группы объявлений с помощью объекта группы adGroupAdRotationMode. Вы можете отключить настройки ротации, присвоив в объекте AdGroupAdRotationMode значение null оператору adRotationMode.

Планирование показа объявлений

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

Запрограммируйте время показа, и вам не придется каждый раз запускать и приостанавливать показ объявлений вручную.

Планирование показа применяется на уровне кампании и поэтому затрагивает все активные объявления и группы объявлений внутри нее. Время показа задается при помощи объекта CampaignCriterionService и типа критериев AdSchedule.

Критерии AdSchedule позволяют определять такие свойства, как день недели, время начала, время окончания и модификатор ставок (ранее управлялся параметром bid_multiplier объекта CampaignTargetService). С помощью этого модификатора размер ставки можно повышать или понижать в определенные часы.

Примеры кода

Чтобы обеспечить показ объявлений в рабочие часы магазина, установите время начала показа незадолго до открытия магазина, а время окончания – незадолго до закрытия.

Java

// Closed on Sunday, so don't configure an AdSchedule for Sunday.
List<DayOfWeek> mondayThroughSaturday =
    Arrays.asList(
        DayOfWeek.MONDAY,
        DayOfWeek.TUESDAY,
        DayOfWeek.WEDNESDAY,
        DayOfWeek.THURSDAY,
        DayOfWeek.FRIDAY,
        DayOfWeek.SATURDAY);

// Creates an operation to add an AdSchedule for each day of the week in the list.
List<CampaignCriterionOperation> operations = new ArrayList<>();
for (DayOfWeek dayOfWeek : mondayThroughSaturday) {
  AdSchedule schedule = new AdSchedule();
  schedule.setDayOfWeek(dayOfWeek);
  // Start at 8:45 am...
  schedule.setStartHour(8);
  schedule.setStartMinute(MinuteOfHour.FORTY_FIVE);
  // ... and end at 7:45 pm
  schedule.setEndHour(19);
  schedule.setEndMinute(MinuteOfHour.FORTY_FIVE);
  CampaignCriterionOperation operation = new CampaignCriterionOperation();
  CampaignCriterion campaignCriterion = new CampaignCriterion();

  campaignCriterion.setCampaignId(campaignId);
  campaignCriterion.setCriterion(schedule);
  // Run at normal bid rates
  campaignCriterion.setBidModifier(1.0);
  operation.setOperand(campaignCriterion);
  operation.setOperator(Operator.ADD);
  operations.add(operation);
}

CampaignCriterionReturnValue result =
    campaignCriterionService.mutate(
        operations.toArray(new CampaignCriterionOperation[operations.size()]));

CSharp

// Closed on Sunday, so don't configure an AdSchedule for Sunday.
List<DayOfWeek> mondayThroughSaturday = new List<DayOfWeek>() {
  DayOfWeek.MONDAY,
  DayOfWeek.TUESDAY,
  DayOfWeek.WEDNESDAY,
  DayOfWeek.THURSDAY,
  DayOfWeek.FRIDAY,
  DayOfWeek.SATURDAY
};

// Creates an operation to add an AdSchedule for each day of the week in the list.
List<CampaignCriterionOperation> operations = new List<CampaignCriterionOperation>();
foreach (DayOfWeek dayOfWeek in mondayThroughSaturday) {
  AdSchedule schedule = new AdSchedule();
  schedule.dayOfWeek = dayOfWeek;
  // Start at 8:45 am...
  schedule.startHour = 8;
  schedule.startMinute = MinuteOfHour.FORTY_FIVE;
  // ... and end at 7:45 pm
  schedule.endHour = 19;
  schedule.endMinute = MinuteOfHour.FORTY_FIVE;
  CampaignCriterionOperation operation = new CampaignCriterionOperation();
  CampaignCriterion campaignCriterion = new CampaignCriterion();

  campaignCriterion.campaignId = campaignId;
  campaignCriterion.criterion = schedule;
  // Run at normal bid rates
  campaignCriterion.bidModifier = 1.0;
  operation.operand = campaignCriterion;
  operation.@operator = Operator.ADD;
  operations.Add(operation);
}

CampaignCriterionReturnValue result =
    campaignCriterionService.mutate(operations.ToArray());

Python

# Closed on Sunday, so don't configure an AdSchedule for Sunday.
monday_through_saturday = [
    'MONDAY', 'TUESDAY', 'WEDNESDAY', 'THURSDAY', 'FRIDAY', 'SATURDAY'
]

# Creates an operation to add an AdSchedule for each day of the week in the
# list.
operations = [{
    'operator': 'ADD',
    'operand': {
        'campaignId': campaign_id,
        'criterion': {
            'xsi_type': 'AdSchedule',
            'dayOfWeek': day,
            # Start at 8:45 A.M.
            'startHour': 8,
            'startMinute': 'FORTY_FIVE',
            # End at 7:45 P.M.
            'endHour': 19,
            'endMinute': 'FORTY_FIVE',
        },
        # Run at normal bid rates.
        'bidModifier': 1.0
    }
} for day in monday_through_saturday]

result = campaign_criterion_service.mutate(operations)

PHP

// Closed on Sunday, so don't configure an AdSchedule for Sunday.
$mondayThroughSaturday = [
    DayOfWeek::MONDAY,
    DayOfWeek::TUESDAY,
    DayOfWeek::WEDNESDAY,
    DayOfWeek::THURSDAY,
    DayOfWeek::FRIDAY,
    DayOfWeek::SATURDAY
];

// Creates an operation to add an AdSchedule for each day of the week in the
// list.
$operations = [];
foreach ($mondayThroughSaturday as $dayOfWeek) {
    $schedule = new AdSchedule();
    $schedule->setDayOfWeek($dayOfWeek);
    // Start at 8:45 am...
    $schedule->setStartHour(8);
    $schedule->setStartMinute(MinuteOfHour::FORTY_FIVE);
    // ... and end at 7:45 pm
    $schedule->setEndHour(19);
    $schedule->setEndMinute(MinuteOfHour::FORTY_FIVE);

    $campaignCriterion = new CampaignCriterion();
    $campaignCriterion->setCampaignId($campaignId);
    $campaignCriterion->setCriterion($schedule);
    // Run at normal bid rates
    $campaignCriterion->setBidModifier(1.0);

    $operation = new CampaignCriterionOperation();
    $operation->setOperand($campaignCriterion);
    $operation->setOperator(Operator::ADD);
    $operations[] = $operation;
}

$result = $campaignCriterionService->mutate($operations);

Perl

# Closed on Sunday, so don't configure an AdSchedule for Sunday.
my @monday_through_saturday =
  ('MONDAY', 'TUESDAY', 'WEDNESDAY', 'THURSDAY', 'FRIDAY', 'SATURDAY');

# Creates an operation to add an AdSchedule for each day of the week in the list.
my @operations = ();
foreach my $day_of_week (@monday_through_saturday) {
  my $schedule = Google::Ads::AdWords::v201802::AdSchedule->new({
    dayOfWeek => $day_of_week,
    # Start at 8:45 am...
    startHour   => '8',
    startMinute => 'FORTY_FIVE',
    # ... and end at 7:45 pm
    endHour   => '19',
    endMinute => 'FORTY_FIVE'
  });

  my $campaign_criterion =
    Google::Ads::AdWords::v201802::CampaignCriterion->new({
      campaignId => $campaign_id,
      criterion  => $schedule,
      # Run at normal bid rates
      bidModifier => '1.0'
    });

  my $operation =
    Google::Ads::AdWords::v201802::CampaignCriterionOperation->new({
      operand  => $campaign_criterion,
      operator => 'ADD'
    });

  push @operations, $operation;
}

my $result =
  $client->CampaignCriterionService()->mutate({operations => \@operations});

Ruby

# Closed on Sunday, so don't configure an AdSchedule for Sunday.
monday_through_saturday = [
  'MONDAY',
  'TUESDAY',
  'WEDNESDAY',
  'THURSDAY',
  'FRIDAY',
  'SATURDAY'
]

# Creates an operation to add an AdSchedule for each day of the week in the
# list.
operations = monday_through_saturday.map do |day_of_week|
  schedule = {
    :xsi_type => 'AdSchedule',
    :day_of_week => day_of_week,
    # Start at 8:45 AM...
    :start_hour => 8,
    :start_minute => 'FORTY_FIVE',
    # ...and end at 7:45 PM.
    :end_hour => 19,
    :end_minute => 'FORTY_FIVE'
  }

  campaign_criterion = {
    :campaign_id => campaign_id,
    :criterion => schedule,
    :bid_modifier => 1.0
  }

  operation = {
    :operand => campaign_criterion,
    :operator => 'ADD'
  }

  next operation
end

result = campaign_criterion_srv.mutate(operations)

VB.NET

' Closed on Sunday, so don't configure an AdSchedule for Sunday.
Dim mondayThroughSaturday As DayOfWeek() = {
  DayOfWeek.MONDAY,
  DayOfWeek.TUESDAY,
  DayOfWeek.WEDNESDAY,
  DayOfWeek.THURSDAY,
  DayOfWeek.FRIDAY,
  DayOfWeek.SATURDAY
}

' Creates an operation to add an AdSchedule for each day of the week in the list.
Dim operations As New List(Of CampaignCriterionOperation)()
For Each dayOfWeek As DayOfWeek In mondayThroughSaturday
  Dim schedule As New AdSchedule()
  schedule.dayOfWeek = dayOfWeek
  ' Start at 8:45 am...
  schedule.startHour = 8
  schedule.startMinute = MinuteOfHour.FORTY_FIVE
  ' ... And end at 7:45 pm
  schedule.endHour = 19
  schedule.endMinute = MinuteOfHour.FORTY_FIVE
  Dim operation As New CampaignCriterionOperation()
  Dim campaignCriterion As New CampaignCriterion()

  campaignCriterion.campaignId = campaignId
  campaignCriterion.criterion = schedule
  ' Run at normal bid rates
  campaignCriterion.bidModifier = 1.0
  operation.operand = campaignCriterion
  operation.operator = [Operator].ADD
  operations.Add(operation)
Next

Dim result As CampaignCriterionReturnValue =
    campaignCriterionService.mutate(operations.ToArray())

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

Java

List<CampaignCriterionOperation> operations = new ArrayList<>();

// Create operations to remove any existing ad schedules for Monday. Ad schedules cannot
// overlap.
for (Long existingCriterionId : existingCriteriaIds) {
  CampaignCriterion campaignCriterion = new CampaignCriterion();
  campaignCriterion.setCampaignId(campaignId);
  AdSchedule adSchedule = new AdSchedule();
  adSchedule.setId(existingCriterionId);
  campaignCriterion.setCriterion(adSchedule);

  CampaignCriterionOperation removeOperation = new CampaignCriterionOperation();
  removeOperation.setOperand(campaignCriterion);
  removeOperation.setOperator(Operator.REMOVE);

  operations.add(removeOperation);
}

// Create a schedule for 8:00 AM to 12:00 PM (noon) with no change to bids.
AdSchedule early = new AdSchedule();
early.setDayOfWeek(DayOfWeek.MONDAY);
early.setStartHour(8);
early.setStartMinute(MinuteOfHour.ZERO);
early.setEndHour(12);
early.setEndMinute(MinuteOfHour.ZERO);

CampaignCriterion campaignCriterionEarly = new CampaignCriterion();
// Run at normal bid rates.
campaignCriterionEarly.setBidModifier(1.0);
campaignCriterionEarly.setCampaignId(campaignId);
campaignCriterionEarly.setCriterion(early);

// Create a schedule for 12:00 PM (noon) to 2:00 PM with bids doubled.
AdSchedule peak = new AdSchedule();
peak.setDayOfWeek(DayOfWeek.MONDAY);
peak.setStartHour(12);
peak.setStartMinute(MinuteOfHour.ZERO);
peak.setEndHour(14);
peak.setEndMinute(MinuteOfHour.ZERO);

CampaignCriterion campaignCriterionPeak = new CampaignCriterion();
// Double the bid.
campaignCriterionPeak.setBidModifier(2.0);
campaignCriterionPeak.setCampaignId(campaignId);
campaignCriterionPeak.setCriterion(peak);

// Create operations to add the new schedules.
CampaignCriterionOperation operationEarly = new CampaignCriterionOperation();
operationEarly.setOperand(campaignCriterionEarly);
operationEarly.setOperator(Operator.ADD);
operations.add(operationEarly);

CampaignCriterionOperation operationPeak = new CampaignCriterionOperation();
operationPeak.setOperand(campaignCriterionPeak);
operationPeak.setOperator(Operator.ADD);
operations.add(operationPeak);

campaignCriterionService.mutate(
    operations.toArray(new CampaignCriterionOperation[operations.size()]));

CSharp

List<CampaignCriterionOperation> operations = new List<CampaignCriterionOperation>();

// Create operations to remove any existing ad schedules for Monday. Ad schedules cannot
// overlap.
foreach (long existingCriterionId in existingCriteriaIds) {
  CampaignCriterion campaignCriterion = new CampaignCriterion();
  campaignCriterion.campaignId = campaignId;
  AdSchedule adSchedule = new AdSchedule();
  adSchedule.id = existingCriterionId;
  campaignCriterion.criterion = adSchedule;

  CampaignCriterionOperation removeOperation = new CampaignCriterionOperation();
  removeOperation.operand = campaignCriterion;
  removeOperation.@operator = Operator.REMOVE;

  operations.Add(removeOperation);
}

// Create a schedule for 8:00 AM to 12:00 PM (noon) with no change to bids.
AdSchedule early = new AdSchedule();
early.dayOfWeek = DayOfWeek.MONDAY;
early.startHour = 8;
early.startMinute = MinuteOfHour.ZERO;
early.endHour = 12;
early.endMinute = MinuteOfHour.ZERO;

CampaignCriterion campaignCriterionEarly = new CampaignCriterion();
// Run at normal bid rates.
campaignCriterionEarly.bidModifier = 1.0;
campaignCriterionEarly.campaignId = campaignId;
campaignCriterionEarly.criterion = early;

// Create a schedule for 12:00 PM (noon) to 2:00 PM with bids doubled.
AdSchedule peak = new AdSchedule();
peak.dayOfWeek = DayOfWeek.MONDAY;
peak.startHour = 12;
peak.startMinute = MinuteOfHour.ZERO;
peak.endHour = 14;
peak.endMinute = MinuteOfHour.ZERO;

CampaignCriterion campaignCriterionPeak = new CampaignCriterion();
// Double the bid.
campaignCriterionPeak.bidModifier = 2.0;
campaignCriterionPeak.campaignId = campaignId;
campaignCriterionPeak.criterion = peak;

// Create operations to add the new schedules.
CampaignCriterionOperation operationEarly = new CampaignCriterionOperation();
operationEarly.operand = campaignCriterionEarly;
operationEarly.@operator = Operator.ADD;
operations.Add(operationEarly);

CampaignCriterionOperation operationPeak = new CampaignCriterionOperation();
operationPeak.operand = campaignCriterionPeak;
operationPeak.@operator = Operator.ADD;
operations.Add(operationPeak);

campaignCriterionService.mutate(operations.ToArray());

Python

# Create operations to remove existing ad schedules for Monday. Ad schedules
# can't overlap.
operations = [{
    'operator': 'REMOVE',
    'operand': {
        'campaignId': campaign_id,
        'criterion': {
            'id': criteria_id
        }
    }
} for criteria_id in existing_criteria_ids]

# Create a schedule for 8:00 A.M. to 12:00 P.M. (noon) with no change to bids.
operations.append({
    'operator': 'ADD',
    'operand': {
        'campaignId': campaign_id,
        'criterion': {
            'xsi_type': 'AdSchedule',
            'dayOfWeek': 'MONDAY',
            'startHour': 8,
            'startMinute': 'ZERO',
            'endHour': 12,
            'endMinute': 'ZERO'
        },
        # Run at normal bid rates.
        'bidModifier': 1.0
    }
})

# Create a schedule for 12:00 P.M. (noon) to 2 P.M. with bids doubled.
operations.append({
    'operator': 'ADD',
    'operand': {
        'campaignId': campaign_id,
        'criterion': {
            'xsi_type': 'AdSchedule',
            'dayOfWeek': 'MONDAY',
            'startHour': 12,
            'startMinute': 'ZERO',
            'endHour': 14,
            'endMinute': 'ZERO'
        },
        # Double the bid.
        'bidModifier': 2.0
    }
})

campaign_criterion_service.mutate(operations)

PHP

$operations = [];

// Create operations to remove any existing ad schedules for Monday. Ad
// schedules cannot overlap.
foreach ($existingCriteriaIds as $existingCriterionId) {
    $campaignCriterion = new CampaignCriterion();
    $campaignCriterion->setCampaignId($campaignId);
    $adSchedule = new AdSchedule();
    $adSchedule->setId($existingCriterionId);
    $campaignCriterion->setCriterion($adSchedule);

    $removeOperation = new CampaignCriterionOperation();
    $removeOperation->setOperand($campaignCriterion);
    $removeOperation->setOperator(Operator::REMOVE);

    $operations[] = $removeOperation;
}

// Create a schedule for 8:00 AM to 12:00 PM (noon) with no change to bids.
$early = new AdSchedule();
$early->setDayOfWeek(DayOfWeek::MONDAY);
$early->setStartHour(8);
$early->setStartMinute(MinuteOfHour::ZERO);
$early->setEndHour(12);
$early->setEndMinute(MinuteOfHour::ZERO);

$campaignCriterionEarly = new CampaignCriterion();
// Run at normal bid rates.
$campaignCriterionEarly->setBidModifier(1.0);
$campaignCriterionEarly->setCampaignId($campaignId);
$campaignCriterionEarly->setCriterion($early);

// Create a schedule for 12:00 PM (noon) to 2:00 PM with bids doubled.
$peak = new AdSchedule();
$peak->setDayOfWeek(DayOfWeek::MONDAY);
$peak->setStartHour(12);
$peak->setStartMinute(MinuteOfHour::ZERO);
$peak->setEndHour(14);
$peak->setEndMinute(MinuteOfHour::ZERO);

$campaignCriterionPeak = new CampaignCriterion();
// Double the bid.
$campaignCriterionPeak->setBidModifier(2.0);
$campaignCriterionPeak->setCampaignId($campaignId);
$campaignCriterionPeak->setCriterion($peak);

// Create operations to add the new schedules.
$operationEarly = new CampaignCriterionOperation();
$operationEarly->setOperand($campaignCriterionEarly);
$operationEarly->setOperator(Operator::ADD);
$operations[] = $operationEarly;

$operationPeak = new CampaignCriterionOperation();
$operationPeak->setOperand($campaignCriterionPeak);
$operationPeak->setOperator(Operator::ADD);
$operations[] = $operationPeak;

$campaignCriterionService->mutate($operations);

Perl

my @operations = ();

# Create operations to remove any existing ad schedules for Monday. Ad
# schedules cannot overlap.
for my $existing_criterion_id (@{$existing_criterion_ids}) {
  my $campaign_criterion =
    Google::Ads::AdWords::v201802::CampaignCriterion->new({
      campaignId => $campaign_id,
      criterion  => Google::Ads::AdWords::v201802::AdSchedule->new({
          id => $existing_criterion_id
        })});

  my $remove_operation =
    Google::Ads::AdWords::v201802::CampaignCriterionOperation->new({
      operand  => $campaign_criterion,
      operator => 'REMOVE'
    });

  push @operations, $remove_operation;
}

# Create a schedule for 8:00 AM to 12:00 PM (noon) with no change to bids.
my $early = Google::Ads::AdWords::v201802::AdSchedule->new({
  dayOfWeek   => 'MONDAY',
  startHour   => '8',
  startMinute => 'ZERO',
  endHour     => '12',
  endMinute   => 'ZERO'
});

my $campaign_criterion_early =
  Google::Ads::AdWords::v201802::CampaignCriterion->new({
    campaignId => $campaign_id,
    criterion  => $early,
    # Run at normal bid rates
    bidModifier => '1.0'
  });

# Create a schedule for 12:00 PM (noon) to 2:00 PM with bids doubled.
my $peak = Google::Ads::AdWords::v201802::AdSchedule->new({
  dayOfWeek   => 'MONDAY',
  startHour   => '12',
  startMinute => 'ZERO',
  endHour     => '14',
  endMinute   => 'ZERO'
});

my $campaign_criterion_peak =
  Google::Ads::AdWords::v201802::CampaignCriterion->new({
    campaignId => $campaign_id,
    criterion  => $peak,
    # Double the bid.
    bidModifier => '2.0'
  });

# Create operations to add the new schedules.
my $operation_early =
  Google::Ads::AdWords::v201802::CampaignCriterionOperation->new({
    operand  => $campaign_criterion_early,
    operator => 'ADD'
  });
push @operations, $operation_early;

my $operation_peak =
  Google::Ads::AdWords::v201802::CampaignCriterionOperation->new({
    operand  => $campaign_criterion_peak,
    operator => 'ADD'
  });
push @operations, $operation_peak;

$client->CampaignCriterionService()->mutate({operations => \@operations});

Ruby

operations = []

# Create operations to remove any existing ad schedules for Monday. Ad
# schedules cannot overlap.
existing_criteria_ids.each do |existing_criterion_id|
  operations << {
    :operator => 'REMOVE',
    :operand => {
      :campaign_id => campaign_id,
      :criterion => {
        :id => existing_criterion_id
      }
    }
  }
end

# Create a schedule for 8:00 AM to 12:00 PM (noon) with no change to bids.
early = {
  :xsi_type => 'AdSchedule',
  :day_of_week => 'MONDAY',
  :start_hour => 8,
  :start_minute => 'ZERO',
  :end_hour => 12,
  :end_minute => 'ZERO'
}

campaign_criterion_early = {
  :bid_modifier => 1.0,
  :campaign_id => campaign_id,
  :criterion => early
}

operations << {
  :operator => 'ADD',
  :operand => campaign_criterion_early
}

# Create a schedule from 12:00 PM (noon) to 2:00 PM with bids doubled.
peak = {
  :xsi_type => 'AdSchedule',
  :day_of_week => 'MONDAY',
  :start_hour => 12,
  :start_minute => 'ZERO',
  :end_hour => 14,
  :end_minute => 'ZERO'
}

campaign_criterion_peak = {
  # Double the bid.
  :bid_modifier => 2.0,
  :campaign_id => campaign_id,
  :criterion => peak
}

operations << {
  :operator => 'ADD',
  :operand => campaign_criterion_peak
}

campaign_criterion_srv.mutate(operations)

VB.NET

Dim operations As New List(Of CampaignCriterionOperation)()

' Create operations to remove any existing ad schedules for Monday. Ad schedules cannot
' overlap.
For Each existingCriterionId As Long In existingCriteriaIds
  Dim campaignCriterion As New CampaignCriterion()
  campaignCriterion.campaignId = campaignId
  Dim adSchedule As New AdSchedule()
  adSchedule.id = existingCriterionId
  campaignCriterion.criterion = adSchedule

  Dim removeOperation As New CampaignCriterionOperation()
  removeOperation.operand = campaignCriterion
  removeOperation.operator = [Operator].REMOVE

  operations.Add(removeOperation)
Next

' Create a schedule for 800 AM to 1200 PM (noon) with no change to bids.
Dim early As New AdSchedule()
early.dayOfWeek = DayOfWeek.MONDAY
early.startHour = 8
early.startMinute = MinuteOfHour.ZERO
early.endHour = 12
early.endMinute = MinuteOfHour.ZERO

Dim campaignCriterionEarly As New CampaignCriterion()
' Run at normal bid rates.
campaignCriterionEarly.bidModifier = 1.0
campaignCriterionEarly.campaignId = campaignId
campaignCriterionEarly.criterion = early

' Create a schedule for 1200 PM (noon) to 200 PM with bids doubled.
Dim peak As New AdSchedule()
peak.dayOfWeek = DayOfWeek.MONDAY
peak.startHour = 12
peak.startMinute = MinuteOfHour.ZERO
peak.endHour = 14
peak.endMinute = MinuteOfHour.ZERO

Dim campaignCriterionPeak As New CampaignCriterion()
' Double the bid.
campaignCriterionPeak.bidModifier = 2.0
campaignCriterionPeak.campaignId = campaignId
campaignCriterionPeak.criterion = peak

' Create operations to add the New schedules.
Dim operationEarly As New CampaignCriterionOperation()
operationEarly.operand = campaignCriterionEarly
operationEarly.operator = [Operator].ADD
operations.Add(operationEarly)

Dim operationPeak As New CampaignCriterionOperation()
operationPeak.operand = campaignCriterionPeak
operationPeak.operator = [Operator].ADD
operations.Add(operationPeak)

campaignCriterionService.mutate(operations.ToArray())

Чтобы объявления не показывались в определенные периоды времени, удалите критерий AdSchedule, указав его id и id кампании.

Java

List<CampaignCriterionOperation> removeOperations = new ArrayList<>();

for (Long criterionId : criteriaIds) {
  // Remove the schedule with the specified criterion ID.
  AdSchedule scheduleToRemove = new AdSchedule();
  scheduleToRemove.setId(criterionId);

  CampaignCriterion campaignCriterion = new CampaignCriterion();

  campaignCriterion.setCampaignId(campaignId);
  campaignCriterion.setCriterion(scheduleToRemove);

  CampaignCriterionOperation operation = new CampaignCriterionOperation();
  operation.setOperand(campaignCriterion);
  operation.setOperator(Operator.REMOVE);
  removeOperations.add(operation);
}

campaignCriterionService.mutate(
    removeOperations.toArray(new CampaignCriterionOperation[removeOperations.size()]));

CSharp

List<CampaignCriterionOperation> removeOperations = new List<CampaignCriterionOperation>();

foreach (long criterionId in criteriaIds) {
  // Remove the schedule with the specified criterion ID.
  AdSchedule scheduleToRemove = new AdSchedule();
  scheduleToRemove.id = criterionId;

  CampaignCriterion campaignCriterion = new CampaignCriterion();

  campaignCriterion.campaignId = campaignId;
  campaignCriterion.criterion = scheduleToRemove;

  CampaignCriterionOperation operation = new CampaignCriterionOperation();
  operation.operand = campaignCriterion;
  operation.@operator = Operator.REMOVE;
  removeOperations.Add(operation);
}

campaignCriterionService.mutate(removeOperations.ToArray());

Python

operations = [{
    'operator': 'REMOVE',
    'operand': {
        'campaignId': campaign_id,
        'criterion': {
            'id': criteria_id
        }
    }
} for criteria_id in criteria_ids]

if operations:
  campaign_criterion_service.mutate(operations)

PHP

$removeOperations = [];

foreach ($criteriaIds as $criterionId) {
    // Remove the schedule with the specified criterion ID.
    $scheduleToRemove = new AdSchedule();
    $scheduleToRemove->setId($criterionId);

    $campaignCriterion = new CampaignCriterion();

    $campaignCriterion->setCampaignId($campaignId);
    $campaignCriterion->setCriterion($scheduleToRemove);

    $operation = new CampaignCriterionOperation();
    $operation->setOperand($campaignCriterion);
    $operation->setOperator(Operator::REMOVE);
    $removeOperations[] = $operation;
}

if (!empty($removeOperations)) {
    $campaignCriterionService->mutate($removeOperations);
}

Perl

my @remove_operations = ();

foreach my $criterion_id (@{$criteria_ids}) {
  # Remove the schedule with the specified criterion ID.
  my $schedule_to_remove = Google::Ads::AdWords::v201802::AdSchedule->new({
    id => $criterion_id
  });

  my $campaign_criterion =
    Google::Ads::AdWords::v201802::CampaignCriterion->new({
      campaignId => $campaign_id,
      criterion  => $schedule_to_remove
    });

  my $operation =
    Google::Ads::AdWords::v201802::CampaignCriterionOperation->new({
      operand  => $campaign_criterion,
      operator => 'REMOVE'
    });
  push @remove_operations, $operation;
}

$client->CampaignCriterionService()
  ->mutate({operations => \@remove_operations});

Ruby

operations = criteria_ids.map do |criterion_id|
  {
    :operator => 'REMOVE',
    :operand => {
      :campaign_id => campaign_id,
      :criterion => {
        :id => criterion_id
      }
    }
  }
end

campaign_criterion_srv.mutate(operations) unless operations.empty?

VB.NET

Dim removeOperations As New List(Of CampaignCriterionOperation)()

For Each criterionId As Long In criteriaIds
  ' Remove the schedule with the specified criterion ID.
  Dim scheduleToRemove As New AdSchedule()
  scheduleToRemove.id = criterionId

  Dim campaignCriterion As New CampaignCriterion()

  campaignCriterion.campaignId = campaignId
  campaignCriterion.criterion = scheduleToRemove

  Dim operation As New CampaignCriterionOperation()
  operation.operand = campaignCriterion
  operation.operator = [Operator].REMOVE
  removeOperations.Add(operation)
Next

campaignCriterionService.mutate(removeOperations.ToArray())

Пример ниже иллюстрирует, как изменить время показа объявлений. Для этого нужно удалить существующий AdSchedule, а затем добавить такой же новый объект.

Java

List<CampaignCriterionOperation> operations = new ArrayList<>();

// Create an operation that will remove the existing schedule for Friday.
AdSchedule existingScheduleForFriday = new AdSchedule();
existingScheduleForFriday.setId(criterionIdForFriday);

CampaignCriterion existingCampaignCriterionForFriday = new CampaignCriterion();
existingCampaignCriterionForFriday.setCampaignId(campaignId);
existingCampaignCriterionForFriday.setCriterion(existingScheduleForFriday);

CampaignCriterionOperation removeOperation = new CampaignCriterionOperation();
removeOperation.setOperand(existingCampaignCriterionForFriday);
removeOperation.setOperator(Operator.REMOVE);
operations.add(removeOperation);

// Create an operation to add the new schedule for Friday.
AdSchedule newScheduleForFriday = new AdSchedule();
newScheduleForFriday.setDayOfWeek(DayOfWeek.FRIDAY);
// Start at 3:00 pm...
newScheduleForFriday.setStartHour(15);
newScheduleForFriday.setStartMinute(MinuteOfHour.ZERO);
// ... and end at 7:45 pm
newScheduleForFriday.setEndHour(19);
newScheduleForFriday.setEndMinute(MinuteOfHour.FORTY_FIVE);

CampaignCriterion newCampaignCriterionForFriday = new CampaignCriterion();
newCampaignCriterionForFriday.setCampaignId(campaignId);
newCampaignCriterionForFriday.setCriterion(newScheduleForFriday);
// Run at normal bid rates
newCampaignCriterionForFriday.setBidModifier(1.0);

CampaignCriterionOperation addOperation = new CampaignCriterionOperation();
addOperation.setOperand(newCampaignCriterionForFriday);
addOperation.setOperator(Operator.ADD);
operations.add(addOperation);

campaignCriterionService.mutate(
    operations.toArray(new CampaignCriterionOperation[operations.size()]));

CSharp

List<CampaignCriterionOperation> operations = new List<CampaignCriterionOperation>();

// Create an operation that will remove the existing schedule for Friday.
AdSchedule existingScheduleForFriday = new AdSchedule();
existingScheduleForFriday.id = criterionIdForFriday;

CampaignCriterion existingCampaignCriterionForFriday = new CampaignCriterion();
existingCampaignCriterionForFriday.campaignId = campaignId;
existingCampaignCriterionForFriday.criterion = existingScheduleForFriday;

CampaignCriterionOperation removeOperation = new CampaignCriterionOperation();
removeOperation.operand = existingCampaignCriterionForFriday;
removeOperation.@operator = Operator.REMOVE;
operations.Add(removeOperation);

// Create an operation to add the new schedule for Friday.
AdSchedule newScheduleForFriday = new AdSchedule();
newScheduleForFriday.dayOfWeek = DayOfWeek.FRIDAY;
// Start at 3:00 pm...
newScheduleForFriday.startHour = 15;
newScheduleForFriday.startMinute = MinuteOfHour.ZERO;
// ... and end at 7:45 pm
newScheduleForFriday.endHour = 19;
newScheduleForFriday.endMinute = MinuteOfHour.FORTY_FIVE;

CampaignCriterion newCampaignCriterionForFriday = new CampaignCriterion();
newCampaignCriterionForFriday.campaignId = campaignId;
newCampaignCriterionForFriday.criterion = newScheduleForFriday;
// Run at normal bid rates
newCampaignCriterionForFriday.bidModifier = 1.0;

CampaignCriterionOperation addOperation = new CampaignCriterionOperation();
addOperation.operand = newCampaignCriterionForFriday;
addOperation.@operator = Operator.ADD;
operations.Add(addOperation);

campaignCriterionService.mutate(operations.ToArray());

Python

operations = [
    # Create an operation that will remove the existing schedule for Friday.
    {
        'operator': 'REMOVE',
        'operand': {
            'campaignId': campaign_id,
            'criterion': {
                'id': friday_criterion_id
            }
        }
    },
    # Create an operation to add the new schedule for Friday.
    {
        'operator': 'ADD',
        'operand': {
            'campaignId': campaign_id,
            'criterion': {
                'xsi_type': 'AdSchedule',
                'dayOfWeek': 'FRIDAY',
                'startHour': 15,
                'startMinute': 'ZERO',
                'endHour': 19,
                'endMinute': 'FORTY_FIVE'
            },
            # Run at normal bid rates.
            'bidModifier': 1.0
        }
    }
]

campaign_criterion_service.mutate(operations)

PHP

$operations = [];

// Create an operation that will remove the existing schedule for Friday.
$existingScheduleForFriday = new AdSchedule();
$existingScheduleForFriday->setId($criterionIdForFriday);

$existingCampaignCriterionForFriday = new CampaignCriterion();
$existingCampaignCriterionForFriday->setCampaignId($campaignId);
$existingCampaignCriterionForFriday->setCriterion(
    $existingScheduleForFriday
);

$removeOperation = new CampaignCriterionOperation();
$removeOperation->setOperand($existingCampaignCriterionForFriday);
$removeOperation->setOperator(Operator::REMOVE);
$operations[] = $removeOperation;

// Create an operation to add the new schedule for Friday.
$newScheduleForFriday = new AdSchedule();
$newScheduleForFriday->setDayOfWeek(DayOfWeek::FRIDAY);
// Start at 3:00 pm...
$newScheduleForFriday->setStartHour(15);
$newScheduleForFriday->setStartMinute(MinuteOfHour::ZERO);
// ... and end at 7:45 pm
$newScheduleForFriday->setEndHour(19);
$newScheduleForFriday->setEndMinute(MinuteOfHour::FORTY_FIVE);

$newCampaignCriterionForFriday = new CampaignCriterion();
$newCampaignCriterionForFriday->setCampaignId($campaignId);
$newCampaignCriterionForFriday->setCriterion($newScheduleForFriday);
// Run at normal bid rates
$newCampaignCriterionForFriday->setBidModifier(1.0);

$addOperation = new CampaignCriterionOperation();
$addOperation->setOperand($newCampaignCriterionForFriday);
$addOperation->setOperator(Operator::ADD);
$operations[] = $addOperation;

$campaignCriterionService->mutate($operations);

Perl

my @operations = ();

# Create an operation that will remove the existing schedule for Friday.
my $existing_campaign_criterion_for_friday =
  Google::Ads::AdWords::v201802::CampaignCriterion->new({
    campaignId => $campaign_id,
    criterion  => Google::Ads::AdWords::v201802::AdSchedule->new({
        id => $criterion_id_for_friday
      })});

my $remove_operation =
  Google::Ads::AdWords::v201802::CampaignCriterionOperation->new({
    operand  => $existing_campaign_criterion_for_friday,
    operator => 'REMOVE'
  });

push @operations, $remove_operation;

# Create an operation to add the new schedule for Friday.
my $new_schedule_for_friday = Google::Ads::AdWords::v201802::AdSchedule->new({
  dayOfWeek => 'FRIDAY',
  # Start at 3:00 pm...
  startHour   => '15',
  startMinute => 'ZERO',
  # ... and end at 7:45 pm
  endHour   => '19',
  endMinute => 'FORTY_FIVE'
});

my $new_campaign_criterion_for_friday =
  Google::Ads::AdWords::v201802::CampaignCriterion->new({
    campaignId => $campaign_id,
    criterion  => $new_schedule_for_friday,
    # Run at normal bid rates
    bidModifier => '1.0'
  });

my $add_operation =
  Google::Ads::AdWords::v201802::CampaignCriterionOperation->new({
    operand  => $new_campaign_criterion_for_friday,
    operator => 'ADD'
  });
push @operations, $add_operation;

$client->CampaignCriterionService()->mutate({operations => \@operations});

Ruby

operations = []

# Create an operation that will remove the existing schedule for Friday.
operations << {
  :operator => 'REMOVE',
  :operand => {
    :campaign_id => campaign_id,
    :criterion => {
      :id => criterion_id_for_friday
    }
  }
}

# Create an operation to add the new schedule for Friday.
operations << {
  :operator => 'ADD',
  :operand => {
    :campaign_id => campaign_id,
    # Run at normal bid rades.
    :bid_modifier => 1.0,
    :criterion => {
      :xsi_type => 'AdSchedule',
      :day_of_week => 'FRIDAY',
      # Start at 3:00 PM...
      :start_hour => 15,
      :start_minute => 'ZERO',
      # ...and end at 7:45 PM.
      :end_hour => 19,
      :end_minute => 'FORTY_FIVE'
    }
  }
}

campaign_criterion_srv.mutate(operations)

VB.NET

Dim operations As New List(Of CampaignCriterionOperation)()

' Create an operation that will remove the existing schedule for Friday.
Dim existingScheduleForFriday As New AdSchedule()
existingScheduleForFriday.id = criterionIdForFriday

Dim existingCampaignCriterionForFriday As New CampaignCriterion()
existingCampaignCriterionForFriday.campaignId = campaignId
existingCampaignCriterionForFriday.criterion = existingScheduleForFriday

Dim removeOperation As New CampaignCriterionOperation()
removeOperation.operand = existingCampaignCriterionForFriday
removeOperation.operator = [Operator].REMOVE
operations.Add(removeOperation)

' Create an operation to add the New schedule for Friday.
Dim newScheduleForFriday As New AdSchedule()
newScheduleForFriday.dayOfWeek = DayOfWeek.FRIDAY
' Start at 3:00 pm...
newScheduleForFriday.startHour = 15
newScheduleForFriday.startMinute = MinuteOfHour.ZERO
' ... And end at 7:45 pm
newScheduleForFriday.endHour = 19
newScheduleForFriday.endMinute = MinuteOfHour.FORTY_FIVE

Dim newCampaignCriterionForFriday As New CampaignCriterion()
newCampaignCriterionForFriday.campaignId = campaignId
newCampaignCriterionForFriday.criterion = newScheduleForFriday
' Run at normal bid rates
newCampaignCriterionForFriday.bidModifier = 1.0

Dim addOperation As New CampaignCriterionOperation()
addOperation.operand = newCampaignCriterionForFriday
addOperation.operator = [Operator].ADD
operations.Add(addOperation)

campaignCriterionService.mutate(operations.ToArray())

Чтобы узнать, как добавить цель к существующей кампании с помощью объекта CampaignCriterionService, ознакомьтесь с примерами кода.

Анализ эффективности объявлений

Итак, вы настроили кампанию, группу объявлений, текстовое объявление и несколько расширений, и теперь хотите узнать, насколько эффективен каждый из этих компонентов. В этом вам помогут отчеты.

Анализ эффективности кампании по разным критериям позволит вам получить ответы на перечисленные ниже вопросы. Выберите вопрос, чтобы увидеть соответствующие ему отчеты и поля, а также примеры запросов AWQL.

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

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

Возможно, что после анализа отчетов вы захотите сделать следующее:

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

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