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

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

  • имя
  • статус
  • Дата начала
  • дата окончания
  • бюджет
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.

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

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

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