Hi, I am upgrading an application to support 201209. It seems the Report Definition Services is failing. I get the error: "Report download failed. Underlying errors are Type = 'ReportDefinitionError.CUSTOMER_SERVING_TYPE_REPORT_MISMATCH', Trigger = '', FieldPath = 'selector'."
As I understand it, this is the issue: https://developers.google.com/adwords/api/docs/troubleshooting?hl=en#ReportDefinitionError.CUSTOMER_SERVING_TYPE_REPORT_MISMATCH Can anyone help as to what is the correct strategy to support the reporting we are after? The application generates custom reports for clients, some of whom also manage multiple accounts. For example, we have the below code: ***** function getReportData($report_type, $report_name, $customer_id = null, $fields = array(), $predicates = array(), $date_range = null) { require_once 'Google/Api/Ads/AdWords/Lib/AdWordsUser.php'; require_once 'Google/Api/Ads/AdWords/Util/ReportUtils.php'; try { //set the user $user = $this->setUser(); //set the customer id if ($customer_id !== null) { $user->SetClientId($customer_id); } $results = array(); // Load the service, so that the required classes are available. $user->LoadService('ReportDefinitionService', 'v201209'); // Create selector. $selector = new Selector(); $selector->fields = $fields; // Create predicates. if (!empty($predicates)) { //$predicates = array(array('field' => 'Status', 'operator' => 'IN', 'values' => array('ENABLED', 'PAUSED'))); foreach ($predicates as $predicate) { $predicate = array_merge(array('field' => null, 'operator' => null, 'values' => null), $predicate); if (!empty($predicate['field']) && !empty($predicate['operator']) && !empty($predicate['values'])) { $selector->predicates[] = new Predicate($predicate['field'], $predicate['operator'], $predicate['values']); } } } // Create report definition. $definition = new ReportDefinition(); //add the date range if (!empty($date_range)) { //set the date if (is_string($date_range)) { $definition->dateRangeType = $date_range; } else { $definition->dateRangeType = 'CUSTOM_DATE'; $selector->dateRange->min = $date_range['min']; $selector->dateRange->max = $date_range['max']; } } //set the report defaults $definition->reportName = $report_name; $definition->reportType = $report_type; $definition->downloadFormat = $this->download_format; // Exclude criteria that haven't recieved any impressions over the date range. $definition->includeZeroImpressions = FALSE; //add the selector $definition->selector = $selector; // Set additional options. $options = array('version' => 'v201209', 'returnMoneyInMicros' => FALSE); //get the report return $this->returnResult(ReportUtils::DownloadReport($definition, null, $user, $options)); } catch(Exception $e) { $this->last_error = $e->getMessage(); } return false; } function setUser() { if (!isset($this->AdWordsUser)) { App::import('Model', 'Setting'); $Setting =& new Setting(); $this->AdWordsUser = new AdWordsUser( null, $Setting->get('adwords_email'), $Setting->get('adwords_password'), $Setting->get('adwords_developer_token'), null, $Setting->get('adwords_user_agent') ); } if ($this->log) { $this->AdWordsUser->LogAll(); } return $this->AdWordsUser; } ***** This is called by... ***** return $this->getReportData( 'KEYWORDS_PERFORMANCE_REPORT', 'Keyword performance report', $customer_id, array( 'ExternalCustomerId', 'DayOfWeek', 'CampaignId', 'CampaignName', 'CampaignStatus', 'AdNetworkType1', 'AdGroupId', 'AdGroupName', "AdGroupStatus", 'Id', 'KeywordText', 'KeywordMatchType', 'Status', 'Clicks', 'Cost', 'Conversions', 'ConversionsManyPerClick', 'ConversionRate', 'ConversionRateManyPerClick', 'TotalConvValue', 'CostPerConversion', 'CostPerConversionManyPerClick', 'Impressions', 'Ctr', 'AverageCpc', 'AverageCpm', 'AveragePosition', 'MaxCpc', 'MaxCpm', 'IsNegative', //'PreferredPosition',//no nonger available //'BottomPosition',//no nonger available //"KeywordTypeDisplay", //"KeywordMinCPC", //"MaxContentCPC", //"PreferredCPC", //"PreferredCPM", //"KeywordDestUrlDisplay", ), array( array('field' => 'Status', 'operator' => 'IN', 'values' => array('ACTIVE')), array('field' => 'AdNetworkType1', 'operator' => 'IN', 'values' => array('SEARCH')) ), $date_range); ***** -- =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ Also find us on our blog and discussion group: http://adwordsapi.blogspot.com http://groups.google.com/group/adwords-api =~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~ You received this message because you are subscribed to the Google Groups "AdWords API Forum" group. To post to this group, send email to adwords-api@googlegroups.com To unsubscribe from this group, send email to adwords-api+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/adwords-api?hl=en