Adwords API Исключить Content_label на уровне кампании

Я исследовал это в течение нескольких часов и до сих пор не могу найти решение.

Я намерен исключить некоторые content_labels на уровне кампании. Сначала я следовал примерам API, но для "CustomerNegativeCriteria" это настройки уровня аккаунта (sidenote, я не смог найти эти глобальные настройки в интерфейсе AdWords).

Затем я прочитал больше и попытался исключить их, используя CampaignCriterion

Поэтому я буду создавать свои объекты ContentLabel следующим образом:

$criterion = new ContentLabel();
$criterion->setContentLabelType($sLabelType);
$criterion->setType(CriterionType::CONTENT_LABEL);

Затем я добавлю этот модификатор к объекту CampaignCriterion:

foreach ($aModifiers as $modifier) {
    $campaignCriterion = new CampaignCriterion($sCampaignId, $isNegative, $modifier, $bidModifier);
    $operation = new CampaignCriterionOperation();
    $operation->setOperand($campaignCriterion);
    $operation->setOperator($operator);
    $operations[] = $operation;
}

И тогда я передам эти операции в CampaignCriterionService

$oCampaignCriterionService = $this->getCampaignCriterionService();
return $oCampaignCriterionService->mutate($operations);

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

Message: [
    CriterionError.CANNOT_TARGET_CRITERION @ operations[0].operand.criterion.contentLabelType; trigger:'DP', 
    CriterionError.CANNOT_TARGET_CRITERION @ operations[1].operand.criterion.contentLabelType; trigger:'ADULTISH', 
    CriterionError.CANNOT_TARGET_CRITERION @ operations[2].operand.criterion.contentLabelType; trigger:'JACKASS', 
    CriterionError.CANNOT_TARGET_CRITERION @ operations[3].operand.criterion.contentLabelType; trigger:'PROFANITY', 
    CriterionError.CANNOT_TARGET_CRITERION @ operations[4].operand.criterion.contentLabelType; trigger:'TRAGEDY', 
    CriterionError.CANNOT_TARGET_CRITERION @ operations[5].operand.criterion.contentLabelType; trigger:'VIDEO_RATING_DV_MA'
]

Отсюда я следую древовидной структуре, но безрезультатно: https://developers.google.com/adwords/api/docs/reference/v201710/CampaignCriterionService.ContentLabel?hl=th

Есть идеи, что я могу делать не так?

1 ответ

Решение

Проблема была в том, что я создавал CampaignCriterion объекты, и это было проблемой, хотя нигде явно не указано, и не интуитивно, есть другой тип объекта под названием NegativeCampaignCriterion и это правильный объект, чтобы исключить ContentLabelи Placement"s

foreach ($aModifiers as $modifier) {
    if ($isNegative) {
        $campaignCriterion = new NegativeCampaignCriterion($sCampaignId, $isNegative, $modifier, $bidModifier);
    } else {
        $campaignCriterion = new CampaignCriterion($sCampaignId, $isNegative, $modifier, $bidModifier);
    }
    $operation = new CampaignCriterionOperation();
    $operation->setOperand($campaignCriterion);
    $operation->setOperator($operator);
    $operations[] = $operation;
}
Другие вопросы по тегам