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

Скрипты 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 Ads.

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

        draft.startApplying();
    

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

  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 Ads.

        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()

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

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

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

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

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

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