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

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

В этом руководстве описаны основные принципы работы с проектами и экспериментами в скриптах.

Черновики

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

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

Проект создается на основе существующей исходной кампании с помощью 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 не является кампанией. Она связывает исходную кампанию, черновик и кампанию-эксперимент. Поля кампании-эксперимента можно изменять, за следующими исключениями:

  • name
  • статус
  • дата начала
  • дата окончания
  • бюджет
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 Рекламы появилось понятие базовых объектов. Черновики и кампании-эксперименты, а также группы объявлений в них отличаются от исходных кампаний, поэтому в Campaign и AdGroup теперь есть методы для доступа к исходной кампании и группе объявлений: getBaseCampaign() и getBaseAdGroup().

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

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

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

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

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

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

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

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

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

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

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

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