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