2015-09-18 76 views
2

我在向Search Console的API請求中添加多個維度時存在一個小問題。Google Search Console API多維度

如果我將以下內容添加到group by country它可以正常工作。

$filters->setDimension("country"); 
$filters->setOperator("equals"); 
$filters->setExpression($country); 
$filter->setFilters($filters); 
$filter->setFilters(array($filters)); 
$request->setDimensionFilterGroups(array($filter)); 

但是,如果我下面添加另一個維度的設備,它跳過country尺寸和僅運行與設備維度查詢。這是完全可能都是按這個搜索控制檯上API網站運行:

'filters': [{ 
     'dimension': 'country', 
     'expression': 'ind' 
     }, { 
     'dimension': 'device', 
     'expression': 'MOBILE' 
    }] 

因此,任何想法,我怎麼可以在查詢中使用他們兩個?

這可能只是一些PHP code,但我無法在多個維度上找到任何文檔,或者在考慮PHP的任何地方找到任何示例。

回答

2

很簡單。

$ filters-> setDimension(「country」);

$ filters-> setOperator(「equals」);

$ filters-> setExpression($ country);

$ filters2-> setDimension(「device」);

$ filters2-> setOperator(「equals」);

$ filters2-> setExpression($ device);

$ filter-> setFilters($ filters);

$ filter-> setFilters(array($ filters,$ filters2));

$ request-> setDimensionFilterGroups(array($ filter));

工程就像一個魅力。

+0

謝謝!你幫我解決了我的問題。 – Duplosion

1

非常感謝分享這個,尼克 - 它真的幫了大忙! 一件小事情:爲你設置過濾器與下一行代碼的正確方法

$filter->setFilters($filters); 

:你會不會需要以下。

另外,我被困在下面的行:

$request->setDimensionFilterGroups(array($filter)); 

如我經過$濾鏡對象,因爲它是使用陣列來代替。 我真的發現這反直覺:這是setDimensionFilterGroups方法需要的唯一對象;我仍然想知道爲什麼它需要一個數組。

乾杯,

薩爾

0

尼克的回答是沒有幫助我開始,但目前它是不完整的。爲了幫助開發者等尋找答案,希望這會幫助你:

$filter_group = new Google_Service_Webmasters_ApiDimensionFilterGroup; 
$groups = array(['device', 'mobile', 'equals'], ['country', 'GBR', 'equals']); 
$filters = array(); 

if($groups) { 
    foreach ($groups as $key => $group) { 
    $filters[$key] = new Google_Service_Webmasters_ApiDimensionFilter; 
    $filters[$key]->setDimension($group[0]); 
    $filters[$key]->setExpression($group[1]); 
    $filters[$key]->setOperator($group[2]); 
    } 

    $filter_group->setFilters($filters); 
} 

$request->setDimensionFilterGroups(array($filter_group)); 

也注意到,目前如果您的過濾器組中有兩個或多個相同尺寸但不同的過濾器值,或將無法正常工作expression

例如

$groups = array(['device', 'mobile', 'equals'], ['device', 'tablet', 'equals']); 

這是因爲OR操作目前不支持過濾器。

檢查here和這個答案here