Keywords report: ReportDownloadError.INVALID_REPORT_DEFINITION_XML

619 views
Skip to first unread message

Mad Max

unread,
Oct 25, 2017, 11:27:16 AM10/25/17
to AdWords API Forum
Getting an error when sending predicates for report download.

This is complete returned error:

[2017-10-25 15:23:27] AW_REPORT_DOWNLOADER.WARNING: clientCustomerId=[removed by me] AE Bid Management Tool (AwApi-PHP, googleads-php-lib/31.0.0, PHP/7.0.22-0ubuntu0.16.04.1, GuzzleHttp/6.2.1) "POST /api/adwords/reportdownload/v201710 HTTP/1.1" Status: 400   
[2017-10-25 15:23:27] AW_REPORT_DOWNLOADER.NOTICE: Request:
POST /api/adwords/reportdownload/v201710 HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Authorization: REDACTED
developerToken: REDACTED
clientCustomerId: [removed by me]
User-Agent: AE Bid Management Tool (AwApi-PHP, googleads-php-lib/31.0.0, PHP/7.0.22-0ubuntu0.16.04.1, GuzzleHttp/6.2.1)
skipReportHeader: true
skipColumnHeader: true
skipReportSummary: true
useRawEnumValues: false

__rdxml=<?xml version="1.0"?>
<reportDefinition>
<selector>
<fields>Criteria</fields>
<fields>CampaignName</fields>
<fields>AdGroupName</fields>
<fields>Status</fields>
<fields>CpcBid</fields>
<fields>AveragePosition</fields>
<fields>Labels</fields>
<fields>Id</fields>
<predicates>
<item key="0">
<field>Status</field>
<operator>NOT_IN</operator>
<values>
<item key="0">REMOVED</item>
</values>
</item>
<item key="1">
<field>CampaignStatus</field>
<operator>IN</operator>
<values>
<item key="0">ENABLED</item>
</values>
</item>
<item key="2">
<field>AdGroupStatus</field>
<operator>IN</operator>
<values>
<item key="0">ENABLED</item>
</values>
</item>
<item key="3">
<field>Impressions</field>
<operator>GREATER_THAN_EQUALS</operator>
<values>1</values>
</item>
<item key="4">
<field>CampaignName</field>
<operator>DOES_NOT_CONTAIN_IGNORE_CASE</operator>
<values>Remarketing</values>
</item>
<item key="5">
<field>CampaignName</field>
<operator>DOES_NOT_CONTAIN_IGNORE_CASE</operator>
<values>Content</values>
</item>
<item key="6">
<field>CampaignName</field>
<operator>DOES_NOT_CONTAIN_IGNORE_CASE</operator>
<values>Display</values>
</item>
</predicates>
</selector>
<reportName>KeywordReport_59f0904f4352f</reportName>
<reportType>KEYWORDS_PERFORMANCE_REPORT</reportType>
<dateRangeType>YESTERDAY</dateRangeType>
<downloadFormat>CSV</downloadFormat>
</reportDefinition>


Response:
REDACTED REPORT DATA
--------
Error:
Client error: `POST https://adwords.google.com/api/adwords/reportdownload/v201710` resulted in a `400 Bad Request` response



If I send the request without predicates, everything works. I have tried sending just one predicate at a time (tried this with each one of them) and I always get the same error.

Predicates are being build in php like this:

// get filters from database
$filters = getAdwordsPredicates('labels');
if(!empty($filters)){
$preds = array();
 foreach($filters as $filter){
$forarray = array('IN','NOT_IN','CONTAINS_ALL','CONTAINS_ANY','CONTAINS_NAME');
if(in_array($filter['condition'], $forarray)){// these require an array to be sent
$val = array($filter['text']);
}else{
$val = $filter['text']; // these don't require array
}
$preds[] = new Predicate($filter['field'], $filter['condition'], [$val]);
}
$selector->setPredicates([$preds]);
}

any help/advice is appreciated.

Thanks


Jude Amagoh

unread,
Oct 25, 2017, 5:07:26 PM10/25/17
to AdWords API Forum
Hi,

I'm from the Adwords API Team and I'd be happy to assist you. I understand you're attempting to retrieve a Keyword Performance report but it appears that you are passing the predicates incorrectly. They should follow the format provided below. 
  <ns2:predicates>
<ns2:field>AdGroupStatus</ns2:field>
<ns2:operator>EQUALS</ns2:operator>
<ns2:values>ENABLED</ns2:values>
</ns2:predicates>
<ns2:predicates>
<ns2:field>CampaignStatus</ns2:field>
<ns2:operator>EQUALS</ns2:operator>
<ns2:values>ENABLED</ns2:values>
</ns2:predicates>

Try it out and let me know how it works out.  

Best Regards,
Jude, Adwords API Team

Mad Max

unread,
Oct 25, 2017, 7:36:01 PM10/25/17
to AdWords API Forum
Thank you very much.


info.ami...@gmail.com

unread,
Mar 28, 2018, 6:20:52 PM3/28/18
to AdWords API Forum
Hi,

Can you please let me know what I am missing because getting the same error like 'Client error: `POST https://adwords.google.com/api/adwords/reportdownload/v201802` resulted in a `400 Bad Request` response' as updating adwords api version to 'v201802'.

My XML request is as follwows:

16.04.1+deb.sury.org+1, GuzzleHttp/6.2.1, curl/7.47.0) "POST /api/adwords/reportdownload/v201802 HTTP/1.1" Status: 400   
[2018-03-27 16:22:11] AW_REPORT_DOWNLOADER.NOTICE: Request:
POST /api/adwords/reportdownload/v201802 HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Authorization: REDACTED
developerToken: REDACTED
clientCustomerId: **********
User-Agent: unknown (AwApi-PHP, googleads-php-lib/33.1.0, PHP/5.6.34-1+ubuntu16.04.1+deb.sury.org+1, GuzzleHttp/6.2.1, curl/7.47.0)
skipReportHeader: false
skipColumnHeader: false
skipReportSummary: false
useRawEnumValues: false
includeZeroImpressions: false

<?xml version="1.0" encoding="UTF-8"?> <reportDefinition> <selector> <fields>Date</fields> <fields>AccountCurrencyCode</fields> <fields>AccountDescriptiveName</fields> <fields>ActiveViewCpm</fields> <fields>ActiveViewImpressions</fields> <fields>AdGroupAdDisapprovalReasons</fields> <fields>AdGroupId</fields> <fields>AdGroupName</fields> <fields>AdGroupStatus</fields> <fields>AdNetworkType1</fields> <fields>AdType</fields> <predicates> <field>Status</field> <operator>NOT_IN</operator> <values>PAUSED</values> </predicates> <dateRange /> <ordering> <field>Date</field> <sortOrder>ASCENDING</sortOrder> </ordering> </selector> <reportName>ad performance report # 5aba22537af1a</reportName> <reportType>AD_PERFORMANCE_REPORT</reportType> <dateRangeType>CUSTOM_DATE</dateRangeType> <downloadFormat>CSV</downloadFormat> </reportDefinition>


Thanks,
Amit Dahiya

On Thursday, 26 October 2017 05:06:01 UTC+5:30, Mad Max wrote:
Thank you very much.


Sreelakshmi Sasidharan (AdWords API Team)

unread,
Mar 29, 2018, 4:33:16 PM3/29/18
to AdWords API Forum
Hi Amit, 

Please see the points that needs to be updated:
  1. Sorting and paging are not supported in reports. Please check here for more details. 
  2. The following fields are not supported for Ad Performance Report : ActiveViewImpressions, AdGroupAdDisapprovalReasons. Please check here for the complete list of fields that are supported by Ad Performance Report.
  3. Since you are running the report for a custom date, you will need to specify the min and max date too.
Please see the sample report definition with the above updates: 

__rdxml: <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  <ns2:selector>
    <ns2:fields>Date</ns2:fields>
    <ns2:fields>AccountCurrencyCode</ns2:fields>
    <ns2:fields>AccountDescriptiveName</ns2:fields>
    <ns2:fields>ActiveViewCpm</ns2:fields>
    <ns2:fields>AdGroupId</ns2:fields>
    <ns2:fields>AdGroupName</ns2:fields>
    <ns2:fields>AdGroupStatus</ns2:fields>
    <ns2:fields>AdNetworkType1</ns2:fields>
    <ns2:fields>AdType</ns2:fields>
    <ns2:predicates>
      <ns2:field>Status</ns2:field>
      <ns2:operator>NOT_IN</ns2:operator>
      <ns2:values>PAUSED</ns2:values>
    </ns2:predicates>
    <ns2:dateRange>
      <ns2:min>20180320</ns2:min>
      <ns2:max>20180326</ns2:max>
    </ns2:dateRange>
  </ns2:selector>
  <ns2:reportName>Ad performance report #1522355265002</ns2:reportName>
  <ns2:reportType>AD_PERFORMANCE_REPORT</ns2:reportType>
  <ns2:dateRangeType>CUSTOM_DATE</ns2:dateRangeType>
  <ns2:downloadFormat>CSV</ns2:downloadFormat>
</reportDefinition>


Thanks,
Sreelakshmi, AdWords API Team
Reply all
Reply to author
Forward
0 new messages