public function get_query($domain, $date = null, $this_filter = array()) { $client = $this->auth(); $webmastersService = new Google_Service_Webmasters($client); $searchanalytics = $webmastersService->searchanalytics; // Build query $request = new Google_Service_Webmasters_SearchAnalyticsQueryRequest(); $request->setStartDate($date[0]); $request->setEndDate($date[1]); $active_query = isset($this_filter['query']) ? $this_filter['query'] : 'query'; $request->setDimensions(array($active_query)); $active_search_type = isset($this_filter['search_type']) ? $this_filter['search_type'] : 'web'; $request->setSearchType($active_search_type); if (isset($this_filter['mobile'])) { $filter = new Google_Service_Webmasters_ApiDimensionFilter(); $filter->setDimension("device"); $filter->setExpression("MOBILE"); $filters = new Google_Service_Webmasters_ApiDimensionFilterGroup(); $filters->setFilters(array($filter)); $request->setDimensionFilterGroups(array($filters)); } $qsearch = $searchanalytics->query($domain, $request); $rows = $qsearch->getRows(); return $rows; }
/** * Request Google Search Analytics API * * @param $website String Website URL that is enabled in Google Search Console * @param $date Date (YYYY-MM-DD) Date for which to request data * @param $overrides Array Values to override default settings for request * * @returns Integer,array Number of records found or var_dump of returned data from Google depending on mode */ public function downloadGoogleSearchAnalytics($website, $date, $overrides = array()) { $params = array_merge($this->defaultGoogleSearchAnalyticsSettings, $overrides); $importCount = 0; /* Authorize Google via oAuth 2.0 */ $gapiOauth = new GAPIoAuth(); $client = $gapiOauth->LogIn(); /* Define what search types to request from Google Search Analytics */ $searchTypes = array('web', 'image', 'video'); /* Load Google Webmasters API */ $webmasters = new Google_Service_Webmasters($client); /* Load Search Analytics API */ $searchAnalyticsRequest = new Google_Service_Webmasters_SearchAnalyticsQueryRequest($client); /* Prepare Search Analytics Resource */ $searchanalytics = $webmasters->searchanalytics; /* Build Search Analytics Request */ $searchAnalyticsRequest->setDimensions($params['dimensions']); $searchAnalyticsRequest->setRowLimit($params['row_limit']); /* Valid options: 1-5000 */ /* Set date for Search Analytics Request */ $searchAnalyticsRequest->setStartDate($date); $searchAnalyticsRequest->setEndDate($date); if (isset($params['filters']) || isset($params['groups'])) { $searchAnalyticsDimensionFilterGroup = new Google_Service_Webmasters_ApiDimensionFilterGroup(); } if (isset($params['filters'])) { $filters = array(); foreach ($params['filters'] as $filter) { $dimensionFilter = new Google_Service_Webmasters_ApiDimensionFilter(); $dimensionFilter->setDimension($filter['dimension']); $dimensionFilter->setOperator($filter['operator']); $dimensionFilter->setExpression($filter['expression']); $filters[] = $dimensionFilter; } $searchAnalyticsDimensionFilterGroup->setFilters($filters); $searchAnalyticsRequest->setDimensionFilterGroups(array($searchAnalyticsDimensionFilterGroup)); } if (isset($params['groups'])) { /* TODO */ // $dimensionFilterGroups['groups'] = $params['groups']; } if (isset($params['aggregation_type'])) { $searchAnalyticsRequest->setAggregationType($params['aggregation_type']); } /* Loop through each of the search types */ foreach ($searchTypes as $searchType) { /* Set search type in Search Analytics Request */ $searchAnalyticsRequest->setSearchType($searchType); /* Send Search Analytics Request */ $searchAnalyticsResponse = $searchanalytics->query($website, $searchAnalyticsRequest); /* Import Search Analytics to Database */ if (is_object($searchAnalyticsResponse)) { switch ($params['mode']) { case 'import': $wmtimport = new WMTimport(); $importCount += $wmtimport->importGoogleSearchAnalytics($website, $date, $searchType, $searchAnalyticsResponse); break; case 'return': var_dump($searchAnalyticsResponse); break; } } } return $importCount; }