/** * 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; }