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

Reply via email to