2015-03-25 3 views
0

Мы столкнулись с проблемой с CampaignCriterionService, получив значение IpAddress для критерия IpBlock.Adwords API CampaignCriterionService IpBlock empty Ошибка IpAddress

https://developers.google.com/adwords/api/docs/reference/v201502/CampaignCriterionService.IpBlock

невозможно получить значение Ipaddress. Если вы используете его в селекторе - вы получаете ошибку [SelectorError.INVALID_FIELD_NAME @ serviceSelector; запуск: 'IpAddress'].

$selector = new Selector(); 
$selector->fields = array('Id', 'CriteriaType', 'IpAddress'); 
$selector->predicates[] = new Predicate('CampaignId', 'EQUALS', $campaign->google_id); 
$selector->predicates[] = new Predicate('CriteriaType', 'EQUALS', 'IP_BLOCK'); 
$selector->paging = new Paging(0, AdWordsConstants::RECOMMENDED_PAGE_SIZE); 
$page = $campaignCriterionService->get($selector); 

После нескольких часов борьбы мы обнаружили, что вы должны использовать «KeywordText» вместо «IpAddress», чтобы получить правильное значение. Это совсем не очевидно. Надеюсь, этот намек сэкономит время и силы. Такие вещи должны быть определенно в документации. Таким образом, рабочий код выглядит следующим образом:

$selector = new Selector(); 
$selector->fields = array('Id', 'CriteriaType', 'KeywordText'); 
$selector->predicates[] = new Predicate('CampaignId', 'EQUALS', $campaign->google_id); 
$selector->predicates[] = new Predicate('CriteriaType', 'EQUALS', 'IP_BLOCK'); 
$selector->paging = new Paging(0, AdWordsConstants::RECOMMENDED_PAGE_SIZE); 
$page = $campaignCriterionService->get($selector); 

ответ

0

Если вы хотите использовать Ipaddress в качестве предиката для поиска по ней, вы должны использовать один и тот же «KeywordText», есть пример:

$selector = new Selector(); 
$selector->fields = array('Id', 'CriteriaType', 'KeywordText'); 
$selector->predicates[] = new Predicate('CampaignId', 'EQUALS', $campaign->google_id); 
$selector->predicates[] = new Predicate('CriteriaType', 'EQUALS', 'IP_BLOCK'); 
$selector->predicates[] = new Predicate('KeywordText', 'EQUALS', '192.168.0.1/32'); 
$selector->paging = new Paging(0, AdWordsConstants::RECOMMENDED_PAGE_SIZE); 
$page = $campaignCriterionService->get($selector); 
print_r($page); 

Производит вывод :

CampaignCriterionPage Object 
(
    [entries] => Array 
     (
      [0] => NegativeCampaignCriterion Object 
       (
        [campaignId] => 167195728 
        [isNegative] => 1 
        [criterion] => IpBlock Object 
         (
          [ipAddress] => 192.168.0.1/32 
          [id] => 23078300211 
          [type] => IP_BLOCK 
          [CriterionType] => IpBlock 
          [_parameterMap:Criterion:private] => Array 
           (
            [Criterion.Type] => CriterionType 
           ) 

         ) 

        [bidModifier] => 
        [forwardCompatibilityMap] => 
        [CampaignCriterionType] => NegativeCampaignCriterion 
        [_parameterMap:CampaignCriterion:private] => Array 
         (
          [CampaignCriterion.Type] => CampaignCriterionType 
         ) 

       ) 

     ) 

    [totalNumEntries] => 1 
    [PageType] => CampaignCriterionPage 
    [_parameterMap:Page:private] => Array 
     (
      [Page.Type] => PageType 
     ) 

) 
Смежные вопросы