Скрипты 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");
Имейте в виду, что проверка рекламной политики для черновика кампании выполняется так же, как и для базовой кампании. Вы не сможете запустить эксперимент на основе черновика кампании, содержащей объявления, нарушающие правила.
Выполнить проект
После подготовки проекта кампании вы можете выполнить одно из следующих действий:
Если вы не хотите использовать изменения, просто удалите черновик. Удаление черновика необратимо, но его можно будет просмотреть в разделе «Все черновики» на вкладке «Черновики» в интерфейсе Google Рекламы.
draft.remove();
Если вы решили сохранить изменения, внесенные в черновик, вы можете применить их:
draft.startApplying();
Этот метод запускает процесс применения обновлений к базовой кампании, поэтому черновик будет иметь статус «Применяется...» в интерфейсе Google Рекламы. Однако метод не уведомит вас о завершении процесса.
Если вы хотите сначала протестировать свои изменения, вы можете использовать черновик для создания эксперимента.
Эксперименты
Создать эксперимент
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();
Если вы удовлетворены результатами эксперимента, у вас есть два варианта:
Вы можете начать применять изменения, и, как и в случае с черновиками, вы не будете уведомлены о завершении процесса.
experiment.startApplying();
Вы можете создать экспериментальную кампанию как независимую, полностью функционирующую, не влияя на базовую кампанию. Этот процесс, известный как градуировка , завершается немедленно и требует установки нового бюджета.
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.
В режиме предварительного просмотра это не удастся, поскольку невозможно немедленно получить доступ к черновику кампании.
Аналогично, создание эксперимента и немедленная попытка извлечь черновик его кампании в режиме предварительного просмотра не увенчаются успехом, поскольку черновик фактически не создается.
По этой причине проверяйте журналы под списком скриптов после их запуска и продолжайте работу со скриптом, не выполнившимся в режиме предварительного просмотра, только если вы считаете, что причина кроется в ограничениях в режиме предварительного просмотра.