How to download keyword performance report

276 views
Skip to first unread message

herbertbintoroe

unread,
Apr 22, 2011, 1:47:04 PM4/22/11
to AdWords API Forum
Hi all,

I am trying to download keyword performance report and basically use
the latest version of the api(201101) to create
keyword_performance_report and using DownloadReport to download the
report (using the codes from the examples folder).

I was able to download the report, but I could only see the headers of
the columns that I specified, with no data in there.
Can somebody help me on how to get the data?

Thanks

Pete Lavetsky (AdWords API Guru)

unread,
Apr 24, 2011, 11:35:38 PM4/24/11
to AdWords API Forum

herbertbintoroe

unread,
Apr 26, 2011, 2:25:57 AM4/26/11
to AdWords API Forum
Hi Pete,

Thanks for your help.
However, I still can't get anything even though I have set up the
predicates. Here are my codes :

<?php
/**
* This example gets and downloads a report from a report definition.
* To get a report definition, run
AddKeywordsPerformanceReportDefinition.php.
* Currently, there is only production support for report download.
*
* PHP version 5
*
* Copyright 2011, Google Inc. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* @package GoogleApiAdsAdWords
* @subpackage v201101
* @category WebServices
* @copyright 2011, Google Inc. All Rights Reserved.
* @license http://www.apache.org/licenses/LICENSE-2.0 Apache
License,
* Version 2.0
* @author Eric Koleda <api.e...@gmail.com>
*/

error_reporting(E_STRICT | E_ALL);

// You can set the include path to src directory or reference
// AdWordsUser.php directly via require_once.
// $path = '/path/to/aw_api_php_lib/src';
$path = dirname(__FILE__) . '/../../src';
set_include_path(get_include_path() . PATH_SEPARATOR . $path);

require_once 'vendors/google_adwords/src/Google/Api/Ads/AdWords/Lib/
AdWordsUser.php';
require_once 'vendors/google_adwords/src/Google/Api/Ads/AdWords/Util/
ReportUtils.php';

/**
*
* First we want to request for a report
*/
function addKeywordsPerformance($user){
try {
// Get AdWordsUser from credentials in "../auth.ini"
// relative to the AdWordsUser.php file's directory.
$devtoken = $user->GetDeveloperToken();

// Log SOAP XML request and response.
$user->LogDefaults();

// Get the GetReportDefinitionService.
$reportDefinitionService = $user-
>GetReportDefinitionService('v201101');

$startDate = date("Ymd", strtotime("-3 days"));
$endDate = date("Ymd", strtotime("-1 days"));

// Create selector to indicate which fields we want to get
$selector = new Selector();
$selector->fields = array('AdGroupId', 'CampaignId',
'CampaignName',
'CampaignStatus', 'KeywordText', 'TotalConvValue',
'KeywordMatchType', 'Impressions', 'Clicks', 'Cost');
$selector->dateRange = new DateRange($startDate, $endDate);

// Create predicates.
$adGroupId = 3000250943;
$adGroupPredicate = new Predicate();
$adGroupPredicate->field = 'AdGroupId';
$adGroupPredicate->operator = 'EQUALS';
$adGroupPredicate->values = array($adGroupId);
$selector->predicates = array($adGroupPredicate);

// Create report definition.
$reportDefinition = new ReportDefinition();
$reportDefinition->reportName = 'Keywords performance report
#' . time();
$reportDefinition->dateRangeType = 'CUSTOM_DATE';
$reportDefinition->reportType = 'KEYWORDS_PERFORMANCE_REPORT';
$reportDefinition->downloadFormat = 'XML';
$reportDefinition->selector = $selector;

// Create operations.
$operation = new ReportDefinitionOperation();
$operation->operand = $reportDefinition;
$operation->operator = 'ADD';

$operations = array($operation);

// Add report definition.
$result = $reportDefinitionService->mutate($operations);

// Display report definitions.
if ($result != null) {
var_dump($result);
print_r($result, true);
foreach ($result as $reportDefinition) {
printf("Report definition with name '%s' and id '%s'
was added.\n",
$reportDefinition->reportName, $reportDefinition->id);
return $reportDefinition->id;
}
} else {
print "No report definitions were added.\n";
}
} catch (Exception $e) {
print $e->getMessage();
exit();
}
}


try {
// Get AdWordsUser from credentials in "../auth.ini"
// relative to the AdWordsUser.php file's directory.
$user = new AdWordsUser();
// Log SOAP XML request and response.
$user->LogDefaults();
$reportDefinitionId = addKeywordsPerformance($user);
print("Report definiton id = $reportDefinitionId");
$fileName = 'google_adword.xml';

$path = dirname(__FILE__) . '/' . $fileName;

// Download report.
ReportUtils::DownloadReport($reportDefinitionId, $path, $user);

printf("Report with definition id '%s' was downloaded to '%s'.\n",
$reportDefinitionId, $fileName);
} catch (Exception $e) {
print $e->getMessage();
}

Thanks


On Apr 24, 8:35 pm, "Pete Lavetsky (AdWords API Guru)"
<pete.lavet...@gmail.com> wrote:
> Take a look at the Predicate section:http://code.google.com/p/google-api-adwords-java/source/browse/trunk/...

Pete Lavetsky (AdWords API Guru)

unread,
Apr 26, 2011, 9:12:35 AM4/26/11
to AdWords API Forum
Are you working in the Sandbox or with live data? If live, I'd verify
your AdGroupId or create a CampaignId predicate instead in case you're
using the wrong AdGroupId

If you're working with the Sandbox, data needs to be populated there
first ... the data is not replicated from live ( and therefore your
AdGroupId probably doesn't even exist )

Pete

PS: Looks like you've already found it, but here's a full list of PHP
Examples for v201101: http://code.google.com/p/google-api-adwords-php/source/browse/trunk#trunk%2Fexamples%2Fv201101
>  * @author     Eric Koleda <api.ekol...@gmail.com>

herbertbintoroe

unread,
Apr 26, 2011, 12:56:09 PM4/26/11
to AdWords API Forum
Hi Pete,

I think it didnt work because I used the sandbox account.
I thought that the sandbox will populate dummy data.
It worked when I tried using the live data.

Thanks a lot for your help,

Herbert

On Apr 26, 6:12 am, "Pete Lavetsky (AdWords API Guru)"
<pete.lavet...@gmail.com> wrote:
> Are you working in the Sandbox or with live data? If live, I'd verify
> your AdGroupId or create a CampaignId predicate instead in case you're
> using the wrong AdGroupId
>
> If you're working with the Sandbox, data needs to be populated there
> first ... the data is not replicated from live ( and therefore your
> AdGroupId probably doesn't even exist )
>
> Pete
>
> PS: Looks like you've already found it, but here's a full list of PHP
> Examples for v201101:http://code.google.com/p/google-api-adwords-php/source/browse/trunk#t...
Reply all
Reply to author
Forward
0 new messages