I'm sorry if someone has posted similar problem already, I just can't
figure it out.
I'm trying to get daily costs of my campaigns.
I use this documentation
https://developers.google.com/adwords/api/docs/guides/reporting
I am also using php and Yii2. I've got:
client Customer Id
client id
access token
client_secret
refresh_token
When I get Campaigns names and ids, those client Customer Id,client
id,client_secret are enough and I get campaigns without any problem but
when I try to get a report, there is the error
string(581) "HTTP/1.1 400 Bad Request
Content-Type: text/xml
Date: Mon, 22 May 2017 10:31:52 GMT
Expires: Mon, 22 May 2017 10:31:52 GMT
Cache-Control: private, max-age=0
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
Server: GSE
Accept-Ranges: none
Vary: Accept-Encoding
Transfer-Encoding: chunked
<?xml version="1.0" encoding="UTF-8"
standalone="yes"?><reportDownloadError><ApiError><type>ReportDownloadError.INVALID_PARAMETER</type><trigger>Missing
client
information</trigger><fieldPath></fieldPath></ApiError></reportDownloadError>"
Maybe I make post request with curl wrong, since I'm able to get campaigns
without mistakes.
Here is my code
$ch = curl_init();
curl_setopt($ch,
CURLOPT_URL,"http://adwords.google.com/api/adwords/reportdownload/v201702");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch,CURLOPT_HEADER,1);
$XML= <<<XML
<?xml version="1.0" encoding="UTF-8"?>
<reportDefinition
xmlns="https://adwords.google.com/api/adwords/cm/v201702">
<selector>
<fields>CampaignId</fields>
<fields>AdGroupId</fields>
<fields>Impressions</fields>
<fields>Clicks</fields>
<fields>Cost</fields>
<predicates>
<field>AdGroupStatus</field>
<operator>IN</operator>
<values>ENABLED</values>
<values>PAUSED</values>
</predicates>
</selector>
<reportName>Custom Adgroup Performance Report</reportName>
<reportType>ADGROUP_PERFORMANCE_REPORT</reportType>
<dateRangeType>TODAY</dateRangeType>
<downloadFormat>CSV</downloadFormat>
</reportDefinition>
XML;
$headers = array("Content-Type:multipart/form-data",
"Authorization"=> "Bearer my_access_token",
"developerToken" => "my_developer_token",
"clientCustomerId"=> 111-111-1111, // test account
);
$postfields = array("__rdxml" =>$XML );
curl_setopt($ch, CURLOPT_HTTPHEADER , $headers);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server_output = curl_exec ($ch);
echo "<pre>";
var_dump($server_output);
echo "</pre>";
curl_close ($ch);
I also tried
$campaignService = $ADwordsUser->GetService('CampaignService', ADWORDS_VERSION);
// Create selector.
$selector = new Selector();
// Fields to retrieve
$selector->fields = array('Id', 'Name', 'Cost');
// Date rage for stats
$selector->dateRange->min = "20110613";
$selector->dateRange->max = "20110614";
// Get all campaigns.
$page = $campaignService->get($selector);
if(isset($page->entries)){
foreach ($page->entries as $campaign) {
if(isset($campaign->campaignStats)) {
// This is how you get the cost
$cost = $campaign->campaignStats->cost->microAmount/1000000;
print "Cost for Campaign {$campaign->name} = $cost\n";
}
}
}
but it returns
Creating default object from empty valuewhen it goes here
$selector->dateRange->min = "20110613";
, I guess because $selector is null...
But if I remove
$selector->dateRange->min = "20110613";
$selector->dateRange->max = "20110614";
I get
[SelectorError.INVALID_FIELD_NAME @ serviceSelector; trigger:'Cost']
And I'm also not sure if
$campaign->campaignStats
exists...
Thank you to anyone who can help.
--
--
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
Also find us on our blog and Google+:
https://googleadsdeveloper.blogspot.com/
https://plus.google.com/+GoogleAdsDevelopers/posts
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
You received this message because you are subscribed to the Google
Groups "AdWords API Forum" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/adwords-api?hl=en
---
You received this message because you are subscribed to the Google Groups
"AdWords API Forum" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
Visit this group at https://groups.google.com/group/adwords-api.
To view this discussion on the web visit
https://groups.google.com/d/msgid/adwords-api/38329418-4c2f-4d05-a6cd-1b9459e6bccb%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.