Дополнительные компоненты кампаний с максимальной эффективностью

Цели конверсий

При создании кампании с максимальной эффективностью автоматически создается ряд целей конверсии, соответствующих 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});

Таргетинг кампании

Полный список допустимых типов критериев таргетинга для кампаний с максимальной эффективностью можно найти в руководстве по 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"
      }
    }
  }
});