Adwords API 在广告系列级别排除 Content_label
Adwords API Exclude Content_label on campaign level
我已经研究了几个小时了,但仍然找不到解决方案。
我打算在广告系列级别排除一些 content_labels。
起初,我遵循了 API 示例,但那些是针对 'CustomerNegativeCriteria' 的帐户级别设置(旁注,我在 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
知道我可能做错了什么吗?
这里的问题是我正在创建 CampaignCriterion
对象,这就是问题所在,虽然没有在任何地方明确说明,而且不直观,但还有另一种类型的对象称为 NegativeCampaignCriterion
,那就是排除 ContentLabel
和 Placement
的正确对象
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;
}
我已经研究了几个小时了,但仍然找不到解决方案。
我打算在广告系列级别排除一些 content_labels。 起初,我遵循了 API 示例,但那些是针对 'CustomerNegativeCriteria' 的帐户级别设置(旁注,我在 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
知道我可能做错了什么吗?
这里的问题是我正在创建 CampaignCriterion
对象,这就是问题所在,虽然没有在任何地方明确说明,而且不直观,但还有另一种类型的对象称为 NegativeCampaignCriterion
,那就是排除 ContentLabel
和 Placement
的正确对象
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;
}