Проекты кампаний и эксперименты

Скрипты Google Ads поддерживают проекты кампаний и эксперименты , которые используются для подготовки и тестирования изменений в кампаниях в поисковой и контекстно-медийной сетях.

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

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

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

Черновики

Создать черновик

Черновой вариант создается на основе существующей базовой кампании с помощью DraftBuilder и присваивается уникальное имя. Базовая кампания должна быть поисковой, поисковой с расширением в контекстно-медийной сети или медийной (за исключением кампании мобильных приложений в контекстно-медийной сети) и не должна иметь общий бюджет.

const campaign = AdsApp.campaigns()
    .withCondition(`campaign.name = "${campaignName}"`)
    .get()
    .next();

const draftBuilder = campaign.newDraftBuilder()
    .withName("INSERT_DRAFT_NAME_HERE")
    .build();

const draft = draftBuilder.getResult();

DraftBuilder.build() возвращает DraftOperation — типичную операцию в скриптах. Подробнее см. в нашем руководстве по сборщикам .

draft однозначно идентифицируется комбинацией идентификатора базовой кампании и идентификатора черновика. Подробнее см. в DraftSelector.withIds() .

Предоставить проект кампании

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

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

const draftCampaign = draft.getDraftCampaign();

draftCampaign.setAdRotationType("CONVERSION_OPTIMIZE");
draftCampaign.createNegativeKeyword("shoes");

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

Выполнить проект

После подготовки проекта кампании вы можете выполнить одно из следующих действий:

  1. Если вы не хотите использовать изменения, просто удалите черновик. Удаление черновика необратимо, но его можно будет просмотреть в разделе «Все черновики» на вкладке «Черновики» в интерфейсе Google Рекламы.

    draft.remove();
    
  2. Если вы решили сохранить изменения, внесенные в черновик, вы можете применить их:

    draft.startApplying();
    

    Этот метод запускает процесс применения обновлений к базовой кампании, поэтому черновик будет иметь статус «Применяется...» в интерфейсе Google Рекламы. Однако метод не уведомит вас о завершении процесса.

  3. Если вы хотите сначала протестировать свои изменения, вы можете использовать черновик для создания эксперимента.

Эксперименты

Создать эксперимент

experiment похож на черновик и также создаётся на основе базовой кампании. experiment создаётся с помощью ExperimentBuilder . Это автоматически создаст эксперимент с двумя «рукавами», представляющими разные части эксперимента. Одна ветвь (называемая контрольной) будет содержать базовую кампанию, а другая (называемая экспериментальной) — новый черновик кампании, который вы настроите в соответствии с инструкциями для черновика, описанными выше, перед планированием эксперимента.

При создании эксперимента обязательно задайте в конструкторе все следующие параметры:

withCampaign
Кампания, на которой вы хотите основать эксперимент.
withTrafficSplitPercent
Какая часть трафика пойдёт в экспериментальную группу? Для 50% укажите 50 .
withStartDate и withEndDate
Указывает дату начала и окончания кампании. Укажите в формате YYYYMMdd .
withType
SEARCH_CUSTOM или DISPLAY_CUSTOM , в зависимости от того, какую сеть вы используете.
withSuffix
Указывает суффикс, который будет добавлен к названию лечебной кампании при ее создании.
withGoals
Задаёт цели этого эксперимента. Это просто напоминание вам о том, какие цели вы преследовали при его создании. Рекомендуемое значение по умолчанию — [{metric: 'CLICKS', direction: 'INCREASE'}] .

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

const experiment = AdsApp.newExperimentBuilder()
  .withCampaign(campaign)
  .withTrafficSplitPercent(50)
  .withStartDate("20230501")
  .withEndDate("20230601")
  .withType("SEARCH_CUSTOM")
  .withSuffix("experiment")
  .withGoals([{metric: 'CLICKS', direction: 'INCREASE'}])
  .build();

// The experimentCampaign represents the customizeable draft.
const experimentCampaign = experiment.getExperimentCampaign();

В отличие от черновиков, эксперименты однозначно идентифицируются одним идентификатором. Подробнее см. в разделе ExperimentSelector.withIds() .

Подготовка экспериментальной кампании

Подобно draft , experiment сам по себе не является кампанией. Он связывает базовую кампанию, черновик и экспериментальную кампанию. Поля экспериментальной кампании можно изменять, за исключением следующих:

  • имя
  • статус
  • Дата начала
  • дата окончания
  • бюджет
const experimentCampaign = experiment.getExperimentCampaign();

// Will succeed.
experimentCampaign.setAdRotationType("ROTATE_FOREVER");
experimentCampaign.createNegativeKeyword("sneakers");

// Will fail.
experimentCampaign.setName("INSERT_EXPERIMENT_NAME_HERE");

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

// Will succeed.
experiment.setName("INSERT_EXPERIMENT_NAME_HERE");

// Will succeed if date is acceptable.
const date = "20220601";
experiment.setStartDate(date);

Чтобы запустить эксперимент, вызовите experiment.startScheduling() . Это асинхронный процесс, поскольку он должен скопировать все настройки из базовой кампании.

После окончания эксперимента

После завершения эксперимента у вас есть несколько вариантов действий. Мы рекомендуем дождаться его полного завершения, чтобы показ рекламы прекратился, но вы могли с ним взаимодействовать. Завершённый эксперимент можно удалить, применить или завершить, а статистика эффективности его кампании останется доступной.

experiment.finish();
const stats = experimentCampaign.getStatsFor("INSERT_TIME_PERIOD_HERE");
  • Если статистика эксперимента вас не устраивает, вы можете удалить его, что также приведёт к удалению экспериментальной кампании. Удаление эксперимента необратимо, но его результаты по-прежнему можно просмотреть в разделе «Все эксперименты» на вкладке «Эксперименты» в интерфейсе Google Рекламы.

    experiment.remove();
    
  • Если вы удовлетворены результатами эксперимента, у вас есть два варианта:

    1. Вы можете начать применять изменения, и, как и в случае с черновиками, вы не будете уведомлены о завершении процесса.

      experiment.startApplying();
      
    2. Вы можете создать экспериментальную кампанию как независимую, полностью функционирующую, не влияя на базовую кампанию. Этот процесс, известный как градуировка , завершается немедленно и требует установки нового бюджета.

      const budget = AdsApp.budgets()
          .withCondition(`campaign_budget.id = ${budgetId}`)
          .get()
          .next();
      
      experiment.graduate(budget);
      

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

Другие соображения

Базовые сущности

Появление черновиков и экспериментов в скриптах Google Ads также вводит понятие базовых сущностей. Кампании черновиков и экспериментов, а также группы объявлений в них, отличаются от исходных базовых кампаний, поэтому у Campaign и AdGroup теперь есть методы для доступа к базовой кампании и группе объявлений: getBaseCampaign() и getBaseAdGroup() .

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

Чтобы помочь отслеживать базовые сущности, кампаниям были предоставлены методы isBaseCampaign() , isDraftCampaign() и isExperimentCampaign() .

Новые методы Campaign.draftCampaigns() и Campaign.experimentCampaigns() позволяют получить доступ ко всем черновикам и экспериментальным кампаниям, для которых вызывающая кампания является базовой. Однако вы не можете выбрать черновики кампаний с помощью CampaignSelector.withCondition() ; вместо этого используйте AdsApp.drafts() .

Обработка ошибок

Следующие методы, включающие черновики и эксперименты, выполняются при запуске скрипта, но могут асинхронно завершаться сбоем:

  • Draft.startApplying()
  • Experiment.startApplying()
  • Experiment.startScheduling()

Вам следует дождаться завершения этих операций. В интерфейсе Google Ads отображаются статусы «Применено» или «Активно» после успешного выполнения startApplying() и startScheduling() соответственно. В случае сбоя отображается статус «Невозможно применить» или «Невозможно создать» , позволяя просмотреть ошибки.

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

const draftCampaign = draft.getDraftCampaign();
draftCampaign.createNegativeKeyword("shoes"); // Will fail in preview.

В режиме предварительного просмотра это не удастся, поскольку невозможно немедленно получить доступ к черновику кампании.

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

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