Цели конверсии
При создании кампании «Максимальная эффективность» автоматически создаётся ряд целей конверсии , соответствующих CustomerConversionGoal
в аккаунте. Вы можете настроить их индивидуально для каждой кампании «Максимальная эффективность», обновив их.
Для этого вам необходимо сначала получить идентификатор вашей кампании (кампаний) с максимальной эффективностью и список всех целей конверсии клиентов. Ниже приведен пример изменения целей одной кампании, хотя вы также можете настроить код для циклического перебора нескольких кампаний с максимальной эффективностью.
// Query for a campaign by name. Update this logic to pull the campaigns you'd
// like to edit
const campaignName = "My PMax campaign";
let campaignId = "";
const search = AdsApp.search(`SELECT campaign.id FROM campaign WHERE campaign.name = "${campaignName}"`);
if (search.hasNext()) {
campaignId = search.next().campaign.id;
console.log(`Updating conversion goals for ${campaignName}: ${campaignId}`);
}
else
{
console.log(`No campaign named "${campaignName}" found`);
// Perform further error handling here
}
// Query for a list of customer conversion goals
const searchResults = AdsApp.search(
`SELECT
customer_conversion_goal.category,
customer_conversion_goal.origin
FROM customer_conversion_goal`
);
Затем вы можете перебрать все полученные цели конверсии и создать операцию обновления для текущей кампании «Максимальная эффективность», чтобы настроить таргетинг для каждой цели. В примере кода, представленном далее в этом разделе, все цели становятся доступными для назначения ставок, но вам потребуется настроить эту часть логики в соответствии с вашими требованиями к эффективности кампании.
Мы рекомендуем настраивать цели конверсии в отдельной транзакции, отключённой от остального процесса создания кампании. CampaignConversionGoalOperation
требует, чтобы свойство partialFailure
запроса было установлено в значение false
. Если вы хотите запустить этот код в той же транзакции, в которой изначально создаёте кампанию, необходимо отключить частичный сбой для всего набора операций. В этом примере кода показано, как выполнить эту операцию в отдельной транзакции.
operations = [];
while (searchResults.hasNext()) {
const row = searchResults.next();
const conversionGoal = row.customerConversionGoal;
operations.push({
"campaignConversionGoalOperation": {
"update": {
"resourceName": `customers/${customerId}/campaignConversionGoals/${campaignId}~${conversionGoal.category}~${conversionGoal.origin}`,
// Insert your logic here to determine whether you want this particular
// campaign conversion goal to be biddable or not.
// This code will just default everything to being biddable, but that
// is not necessarily best for your use case.
"biddable": true
},
"updateMask": "biddable"
}
});
}
AdsApp.mutateAll(operations, {partialFailure: false});
Таргетинг кампании
Для таргетинга кампании в Performance Max обязательно ознакомьтесь с руководством по API , чтобы ознакомиться с полным списком разрешенных типов критериев.
Для создания кампании «Максимальная эффективность» дополнительные критерии не требуются, но могут быть полезны для ограничения таргетинга в зависимости от вашего варианта использования. В следующем примере кода показано, как настроить геолокацию. Формат для других типов критериев можно найти в документации CampaignCriterion
.
Вы можете создать эти критерии вместе с самой кампанией в рамках того же вызова mutateAll
. В этом примере кода предполагается, что вы структурируете свой код именно так.
operations.push({
"campaignCriterionOperation": {
"create": {
"campaign": campaignOperation.campaignOperation.create.resourceName,
"negative": false,
"location": {
// 1023191 represents New York City
"geoTargetConstant": "geoTargetConstants/1023191"
}
}
}
});
Сигналы группы активов
Прежде чем начать, ознакомьтесь с информацией о сигналах группы объектов в документации API. Они настраиваются путём связывания группы объектов с существующим критерием AudienceInfo
или SearchThemeInfo
. Если вы хотите использовать аудиторию, укажите поле audience
вместо поля searchTheme
с названием ресурса аудитории.
operations.push({
"assetGroupSignalOperation": {
"create": {
"assetGroup": assetGroupOperation.assetGroupOperation.create.resourceName,
"searchTheme": {
"text": "mars cruise"
}
}
}
});