reporting - multiple customers - SetClientCustomerId( array(id1, id2) )

2014-11-07 Thread iateadonut
I'm wondering if there is a way yet, to download a single report for 
multiple customers, something like SetClientCustomerId( array(id1, id2) )

-- 
-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
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 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
--- 
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 adwords-api+unsubscr...@googlegroups.com.
Visit this group at http://groups.google.com/group/adwords-api.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/adwords-api/3614b101-a461-4a50-a5cb-025c2e8cc3d7%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: updating from Cross Client Report Download (ReportUtils::RunAsyncReport) to ReportUtils::DownloadReport

2013-10-15 Thread iateadonut
Very cool, Paul!  Thanks for letting us know!

On Wednesday, November 23, 2011 12:26:50 PM UTC-5, iateadonut wrote:

 The following code generates a report for me:

   $user = new AdWordsUser();
   $user-LogDefaults();

   $reportDefinitionId = (float) '131128463';

   $result = ReportUtils::RunAsyncReport($reportDefinitionId,
 $queryToken, $user, $options);

 This is the old CrossClient type of download.


 This code, however:
   $user = new AdWordsUser();
   $user-LogDefaults();

   $reportDefinitionId = '131128463';

   ReportUtils::DownloadReport($reportDefinitionId, $path, $user,
 $options);

 produces:
   The client customer ID must be specified for report downloads.


 Fair enough, change the above to:

   $user = new AdWordsUser();
   $user-LogDefaults();
 $user-SetClientId('3924112376');

   $reportDefinitionId = '131128463';

   ReportUtils::DownloadReport($reportDefinitionId, $path, $user,
 $options);

 produces:
 [ReportDefinitionError.INVALID_REPORT_DEFINITION_ID @
 selector.selector; errorDetails:reportDefinitionId=ReportDefinitionId:
 131128463, customerId=27968988, changeId=0]

 which seems very strange to me - the customerId (27968988) not only
 doesn't match $user-SetClientId, but it is also only 8 digits, when I
 think clientId's are supposed to be at least 9 digits long.


 Please let me know what I'm doing wrong here (and also, when you do
 set the clientId, how to set it for all of your subaccounts).



-- 
-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
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

--- 
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 adwords-api+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


impressions clicks bug - clicktype headline

2013-09-26 Thread iateadonut

Clicks for an ad appears to be taken from all clicktypes, while impressions 
appears to be taken from only clicktype='Headline'.

At our company, we do daily downloads of all ads and put that into a 
database table, adw_ads.

Notice in the attached png,
clicks = 267
impressions = 2659

However, notice the queries from our database (final day on this is sept 
25, 2013):

mysql select sum(impressions), sum(clicks) from adw_ads where Id = 
34639644706 and clickType='Headline';
+--+-+
| sum(impressions) | sum(clicks) |
+--+-+
| 2659 | 174 |
+--+-+
1 row in set (0.00 sec)

mysql select sum(impressions), sum(clicks) from adw_ads where Id = 
34639644706;
+--+-+
| sum(impressions) | sum(clicks) |
+--+-+
| 5945 | 267 |
+--+-+
1 row in set (0.00 sec)


Again, when shown in the control center, the amount of clicks for an ad 
appears to be taken from all 'clickTypes', while impressions are taken only 
from clicktype='Headline'.



-- 
-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
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

--- 
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 adwords-api+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
attachment: bug.png

Re: dateRangeType = 'LAST_7_DAYS'; not working correctly - Downloading report on july 22 not giving july 21 data

2013-07-23 Thread iateadonut
Yes, the script is set to run the same time on the same server everyday.

Anyway, it worked today.

On Tuesday, July 23, 2013 6:31:24 AM UTC-4, Oliver wrote:

 The date range (LAST_7_DAYS) is relative to each account's timezone.  Are 
 you sure the account you ran this script for is in a timezone that had 
 today's date = July 22?

 Oliver

 On Monday, July 22, 2013 4:51:16 PM UTC+1, iateadonut wrote:

 I'm using the dataRangeType of LAST_7_DAYS, which started malfunctioning 
 today.  (The same script I ran today did not give me results for 
 yesterday.  When I ran it last week, it did give me results for 
 'yesterday'.)

 In other words, the following test script, when run on July 22, does not 
 include data for July 21, but for July 15-July 24.

 The test script is:


 ?php

 $customerId = PUT CUSTOMER ID HERE;

 error_reporting(E_STRICT | E_ALL);

 $path = $adwordsAPIpath;
 set_include_path(get_include_path() . PATH_SEPARATOR . $path);

 include('init.php');

 require_once UTIL_PATH . '/ReportUtils.php';




 // Get AdWordsUser from credentials in ../auth.ini
 // relative to the AdWordsUser.php file's directory.
 $user = new AdWordsUser();

 $user-GetAuthToken(); //get the token now; this should force php not 
 to fetch the token for each fork()

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

 // Load ReportDefinitionService so that the required classes are 
 available.
 $user-LoadService('ReportDefinitionService', $adwordsVersion);


 // Create selector.
 $selector = new Selector();
 $selector-fields = array('ExternalCustomerId', 'AccountDescriptiveName', 
 'PrimaryUserLogin', 'Date', 'AdNetworkType2', 'ValuePerConversion', 
 'AveragePosition', 'AverageCpc', 'AverageCpm', 'Ctr', 'CampaignName', 
 'CampaignId', 'Status', 'Clicks', 'AccountTimeZoneId', 'ConversionRate', 
 'Conversions', 'Cost', 'CostPerConversion', 
 'CostPerConversionManyPerClick', 'Amount', 'Impressions', 'InvalidClicks', 
 'InvalidClickRate', 'TotalConvValue', 'ConversionsManyPerClick', 
 'SearchExactMatchImpressionShare', 'SearchImpressionShare', 
 'SearchBudgetLostImpressionShare', 'ContentRankLostImpressionShare');
 $selector-predicates[] =
 new Predicate('Status', 'IN', array('ACTIVE', 'DELETED', 'PAUSED'));

 // Create report definition.
 $reportDefinition = new ReportDefinition();
 $reportDefinition-selector = $selector;
 $reportDefinition-reportName = 'CAMPAIGN performance report #' . time();
 $reportDefinition-dateRangeType = 'LAST_7_DAYS';
 $reportDefinition-reportType = 'CAMPAIGN_PERFORMANCE_REPORT';
 $reportDefinition-downloadFormat = 'CSV';
 $reportDefinition-includeZeroImpressions = FALSE;

 $options = array('version' = $adwordsVersion, 'returnMoneyInMicros' = 
 FALSE);


 try
 {

 $fileName = Complex-.$customerId..csv;
 $path = dirname(__FILE__) . '/test/' . $fileName;

 $user-SetClientCustomerId($customerId);

 ReportUtils::DownloadReport($reportDefinition, $path, $user, $options 
 );

 printf(Report with name '%s' was downloaded to '%s'.\n,
 $reportDefinition-reportName, $fileName);

 } catch (Exception $e) {

 print $e-getMessage() .  adwordsId - $customerId \n;

 }



-- 
-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
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

--- 
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 adwords-api+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.




dateRangeType = 'LAST_7_DAYS'; not working correctly - Downloading report on july 22 not giving july 21 data

2013-07-22 Thread iateadonut
I'm using the dataRangeType of LAST_7_DAYS, which started malfunctioning 
today.  (The same script I ran today did not give me results for 
yesterday.  When I ran it last week, it did give me results for 
'yesterday'.)

In other words, the following test script, when run on July 22, does not 
include data for July 21, but for July 15-July 24.

The test script is:


?php

$customerId = PUT CUSTOMER ID HERE;

error_reporting(E_STRICT | E_ALL);

$path = $adwordsAPIpath;
set_include_path(get_include_path() . PATH_SEPARATOR . $path);

include('init.php');

require_once UTIL_PATH . '/ReportUtils.php';




// Get AdWordsUser from credentials in ../auth.ini
// relative to the AdWordsUser.php file's directory.
$user = new AdWordsUser();

$user-GetAuthToken(); //get the token now; this should force php not 
to fetch the token for each fork()

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

// Load ReportDefinitionService so that the required classes are available.
$user-LoadService('ReportDefinitionService', $adwordsVersion);


// Create selector.
$selector = new Selector();
$selector-fields = array('ExternalCustomerId', 'AccountDescriptiveName', 
'PrimaryUserLogin', 'Date', 'AdNetworkType2', 'ValuePerConversion', 
'AveragePosition', 'AverageCpc', 'AverageCpm', 'Ctr', 'CampaignName', 
'CampaignId', 'Status', 'Clicks', 'AccountTimeZoneId', 'ConversionRate', 
'Conversions', 'Cost', 'CostPerConversion', 
'CostPerConversionManyPerClick', 'Amount', 'Impressions', 'InvalidClicks', 
'InvalidClickRate', 'TotalConvValue', 'ConversionsManyPerClick', 
'SearchExactMatchImpressionShare', 'SearchImpressionShare', 
'SearchBudgetLostImpressionShare', 'ContentRankLostImpressionShare');
$selector-predicates[] =
new Predicate('Status', 'IN', array('ACTIVE', 'DELETED', 'PAUSED'));

// Create report definition.
$reportDefinition = new ReportDefinition();
$reportDefinition-selector = $selector;
$reportDefinition-reportName = 'CAMPAIGN performance report #' . time();
$reportDefinition-dateRangeType = 'LAST_7_DAYS';
$reportDefinition-reportType = 'CAMPAIGN_PERFORMANCE_REPORT';
$reportDefinition-downloadFormat = 'CSV';
$reportDefinition-includeZeroImpressions = FALSE;

$options = array('version' = $adwordsVersion, 'returnMoneyInMicros' = 
FALSE);


try
{

$fileName = Complex-.$customerId..csv;
$path = dirname(__FILE__) . '/test/' . $fileName;

$user-SetClientCustomerId($customerId);

ReportUtils::DownloadReport($reportDefinition, $path, $user, $options );

printf(Report with name '%s' was downloaded to '%s'.\n,
$reportDefinition-reportName, $fileName);

} catch (Exception $e) {

print $e-getMessage() .  adwordsId - $customerId \n;

}

-- 
-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
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

--- 
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 adwords-api+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.




Re: updating from Cross Client Report Download (ReportUtils::RunAsyncReport) to ReportUtils::DownloadReport

2013-07-22 Thread iateadonut
Great,  I'm glad it worked for you.  I've used pcntl for a few things since.

Be careful installing pcntl on a server you share with others, though.  A 
runaway fork can easily take down your whole server.

On Monday, June 3, 2013 9:44:19 PM UTC-4, Bill Zhang wrote:

 Thank you iateadonut. Your solution help us reduce the synchronization 
 time dramatically. From 7~8 hours to within 10 minutes.

 Best regads,

 Bill

 On Friday, December 16, 2011 12:23:44 PM UTC+10, iateadonut wrote:

 Thanks,

 I did it with pcntl_fork.  (had a lot of different advice on this -
 yours turned out to be the best)

 The only problem is that it is consistently triggering Captcha's
 (except one doing them one at a time, which takes forever).  How do I
 deal with these?

 Here is the code.  I will post it in the other discussion groups where
 I gave advice pertinent on CrossClient Reports after I complete this
 taking care of Captcha's.

 ?php

 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';
 include('../definedb.php'); //
 include('./accountsArray.php'); //sets $adwordsAPIpath, uses $selector
 = new ServicedAccountSelector(); to make an array of all accounts
 //$accountsArray = array('4503399530');
 //print_r($accountsArray);exit;
 $path = $adwordsAPIpath.'/../../live_api2/src/';
 set_include_path(get_include_path() . PATH_SEPARATOR . $path);

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

   // Get AdWordsUser from credentials in ../auth.ini
   // relative to the AdWordsUser.php file's directory.
   $user = new AdWordsUser();
 //$user-SetClientId($customerId);

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

   // Load ReportDefinitionService so that the required classes are
 available.
   $user-LoadService('ReportDefinitionService', 'v201109');

   // Create selector.
   $selector = new Selector();
 $selector-fields = array('ExternalCustomerId',
 'AccountDescriptiveName', 'PrimaryUserLogin', 'Date', 'Id', 'Name',
 'Impressions', 'Clicks', 'Cost');
   //$selector-predicates[] =
   //new Predicate('Status', 'IN', array('ENABLED', 'PAUSED'));

   // Create report definition.
   $reportDefinition = new ReportDefinition();
   $reportDefinition-selector = $selector;
   $reportDefinition-reportName = 'Campaign performance report #' .
 time();
   $reportDefinition-dateRangeType = 'LAST_7_DAYS';
   $reportDefinition-reportType = 'CAMPAIGN_PERFORMANCE_REPORT';
   $reportDefinition-downloadFormat = 'CSV';
   $reportDefinition-includeZeroImpressions = FALSE;

   $options = array('version' = 'v201109', 'returnMoneyInMicros' =
 FALSE);

 $pids = array();

 $j = 0;

 for ($i=0; $icount($accountsArray); $i++) {

 if($j==10) { echo $j. ---\n; $j=0; }

 $pids[$i] = pcntl_fork();

   if(!$pids[$i]) {

 // child process

 try {
   // Get AdWordsUser from credentials in ../auth.ini
   // relative to the AdWordsUser.php file's directory.

 $customerId = $accountsArray[$i];

 $user-SetClientId($customerId);

   $fileName = 7days-.$customerId..csv;
   $path = dirname(__FILE__) . '/../reports/7days/' . $fileName;

   ReportUtils::DownloadReport($reportDefinition, $path, $user,
 $options);

   printf(Report with name '%s' was downloaded to '%s'.\n,
   $reportDefinition-reportName, $fileName);

   } catch (Exception $e) {
   print $e-getMessage();
 }

 exit();
   }
 $j++;
 }


 On Dec 15, 9:55 am, Kevin Winter kevin.win...@google.com wrote:
  Hi,
I'm not very familiar with PHP, but I believe one suggested approach 
 is
  to use pcntl_fork to spawn extra processes and handle multiple 
 concurrent
  report downloads that way:
 http://php.net/manual/en/function.pcntl-fork.php
 
  - Kevin Winter
  AdWords API Team
 
 
 
 
 
 
 
  On Wednesday, December 14, 2011 11:33:59 PM UTC-5, iateadonut wrote:
 
   How do you suggest requesting 10 reports at a time (from an array of
   300 customerId's) using php?  or is this impossible?
 
   On Dec 12, 12:33 pm, Kevin Winter kevin@google.com wrote:
Hi,
  Given that AdHoc reports cost 0 units, the cost of requesting the
   report
to you as a developer is the CPU cycles (and IO) required to 
 request it.
 The cost to us from a server perspective is a bit more.  However, 
 if you
as a developer don't know at report time whether or not there is 
 data to
request, it makes sense to request it anyway.  Yes, go ahead and 
 request
the report anyway.
 
- Kevin Winter
AdWords API Team





-- 
-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
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

do enum fields ever change?

2012-07-12 Thread iateadonut
For example, in an ad_performance_report, there is a field:
Slot enum('SearchRhs', 'SearchTop', 'SearchOther', 'Content', 'AfsTop', 
'AfsOther', 'Unknown')

Will the values in enum ever change in the future?  Has there every been a 
report field that was enum that was changed?  Or is there a policy against 
changing these?

-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
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


GetTextAds.php and GetAdGroups.php returning no ads/adgroups

2012-07-11 Thread iateadonut
Hi,

I'm trying to get text ads.  But first, I've tried to get ad groups using 
GetAdGroups.php.

From a daily report I run, I can see that the following ad groups coincide 
with the following campaign:

+++
| campaignId | adGroupId  |
+++
|   79779018 | 3782999778 | 
|   79779018 | 3782999898 | 
|   79779018 | 378318 | 
|   79779018 | 3783000258 | 
|   79779018 | 3783000378 | 
|   79779018 | 3783000498 | 
|   79779018 | 3783000618 | 
|   79779018 | 3783000738 | 
|   79779018 | 3783001098 | 
|   79779018 | 3783001218 | 
|   79779018 | 3783001338 | 
|   79779018 | 3783001578 | 
|   79779018 | 3783001818 | 
|   79779018 | 3783001938 | 
|   79779018 | 3783002058 | 
|   79779018 | 3783002298 | 
|   79779018 | 3783002418 | 
+++

However, my SOAP request returns no adGroups found (I'm using 201109_1, but 
couldn't find a php library to download that had the 201206 version):

# php ./GetAdGroups.php
No ad groups were found.

SOAP LOG:
[Jul 11 2012 15:54:07.00 - INFO] POST 
/api/adwords/cm/v201109_1/AdGroupService HTTP/1.1
Host: adwords.google.com
Connection: Keep-Alive
User-Agent: PHP-SOAP/5.2.14, gzip
Accept-Encoding: gzip, deflate
Content-Encoding: gzip
Content-Type: text/xml; charset=utf-8
SOAPAction: 
Content-Length: 670

?xml version=1.0 encoding=UTF-8?
SOAP-ENV:Envelope 
xmlns:SOAP-ENV=http://schemas.xmlsoap.org/soap/envelope/; 
xmlns:ns1=https://adwords.google.com/api/adwords/cm/v201109_1;
  SOAP-ENV:Header
ns1:RequestHeader
  ns1:authToken*/ns1:authToken
  ns1:developerToken*/ns1:developerToken
  ns1:userAgentAwApi-PHP-3.1.0-*'s Test App/ns1:userAgent
/ns1:RequestHeader
  /SOAP-ENV:Header
  SOAP-ENV:Body
ns1:get
  ns1:serviceSelector
ns1:fieldsId/ns1:fields
ns1:fieldsName/ns1:fields
ns1:predicates
  ns1:fieldCampaignId/ns1:field
  ns1:operatorIN/ns1:operator
  ns1:values79779018/ns1:values
/ns1:predicates
ns1:ordering
  ns1:fieldName/ns1:field
  ns1:sortOrderASCENDING/ns1:sortOrder
/ns1:ordering
ns1:paging
  ns1:startIndex0/ns1:startIndex
  ns1:numberResults500/ns1:numberResults
/ns1:paging
  /ns1:serviceSelector
/ns1:get
  /SOAP-ENV:Body
/SOAP-ENV:Envelope

HTTP/1.1 200 OK
Content-Type: text/xml; charset=UTF-8
Content-Encoding: gzip
Date: Wed, 11 Jul 2012 19:54:07 GMT
Expires: Wed, 11 Jul 2012 19:54:07 GMT
Cache-Control: private, max-age=0
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
Content-Length: 308
Server: GSE

?xml version=1.0?
soap:Envelope xmlns:soap=http://schemas.xmlsoap.org/soap/envelope/;
  soap:Header
ResponseHeader 
xmlns=https://adwords.google.com/api/adwords/cm/v201109_1;
  requestId0004c49335b68a422b4f4ea1/requestId
  serviceNameAdGroupService/serviceName
  methodNameget/methodName
  operations1/operations
  responseTime342/responseTime
  units1/units
/ResponseHeader
  /soap:Header
  soap:Body
getResponse 
xmlns=https://adwords.google.com/api/adwords/cm/v201109_1;
  rval
totalNumEntries0/totalNumEntries
Page.TypeAdGroupPage/Page.Type
  /rval
/getResponse
  /soap:Body
/soap:Envelope




Same for get text ads:

# php ./GetTextAds.php
No text ads were found.

I got frustrated and used all the adGroupIds from my database in the last 2 
days as my array:
array (
  0 = '2418977898',
  1 = '2418978258',
  2 = '2418978498',
  3 = '2418978858',
  4 = '2418979098',
  5 = '2418979698',
  6 = '2418979818',
  7 = '2418980178',
  8 = '2418980418',
  9 = '2418980538',
  10 = '2418981498',
  11 = '2418981738',
  12 = '2418982098',
  13 = '2418982338',
  14 = '2418982698',
  15 = '2418982818',
  16 = '2418982938',
  17 = '2418983058',
  18 = '2418983178',
  19 = '2418983298',
  20 = '2418983418',
  21 = '2418983538',
  22 = '2418983658',
  23 = '2418984018',
  24 = '2418984378',
  25 = '2418984498',
  26 = '2418985098',
  27 = '2418985338',
  28 = '2418985698',
  29 = '2418985938',
  30 = '2418986538',
  31 = '2418986658',
  32 = '2418986778',
  33 = '2418987018',
  34 = '2418987138',
  35 = '2418987378',
  36 = '2418987618',
  37 = '2418987738',
  38 = '2418988098',
  39 = '2418988698',
  40 = '2418988818',
  41 = '2418989418',
  42 = '2418989658',
  43 = '2418989778',
  44 = '2418990138',
  45 = '2418990258',
  46 = '2418991218',
  47 = '2418991338',
  48 = '2418991458',
  49 = '2418991698',
  50 = '2418991818',
  51 = '2418992178',
  52 = '2418992298',
  53 = '2418992658',
  54 = '2418992778',
  55 = '2418993018',
  56 = '2418993498',
  57 = '2418993618',
  58 = '2418993858',
  59 = '2418993978',
  60 = '2418994098',
  61 = '2418994338',
  62 = '2418994578',
  63 = '2418994698',
  64 = '2418994938',
  65 = '2418995178',
  66 = '2418995298',
  67 = '2418996018',
  68 = '2418996138',
  69 = '2418996258',
  70 = '2418996498',
  71 = 

cannot add Enabled, Deleted, Paused predicates to keyword report - [SelectorError.INVALID_PREDICATE_ENUM_VALUE @ selector; trigger:'Enabled'; errorDetails:Enabled, SelectorError.INVALID_PREDICATE_ENUM

2012-06-08 Thread iateadonut
My keyword and campaign report totals are not matching up.  It seems to be 
a problem with keywords that are paused not showing up in the keyword 
report.

Here is the log and the error I'm getting:

short version:

predicates
  fieldStatus/field
  operatorIN/operator
  valuesEnabled/values
  valuesDeleted/values
  valuesPaused/values
/predicates
Response Code: 400
Error Message: [SelectorError.INVALID_PREDICATE_ENUM_VALUE @ selector; 
trigger:'Enabled'; errorDetails:Enabled, 
SelectorError.INVALID_PREDICATE_ENUM_VALUE @ selector; trigger:'Deleted'; 
errorDetails:Deleted, SelectorError.INVALID_PREDICATE_ENUM_VALUE @ 
selector; trigger:'Paused'; errorDetails:Paused]


full version:

[Jun 08 2012 13:50:10.00 - ERROR] POST 
/api/adwords/reportdownload/v201109 HTTP/1.1 
User-Agent: curl, gzip 
Host: adwords.google.com 
Accept: */* 
Accept-Encoding: gzip 
Authorization: GoogleLogin auth=+++
developerToken: +++
clientCustomerId: +++
returnMoneyInMicros: false 
Content-Length: 1308 
Expect: 100-continue 
Content-Type: multipart/form-data; 
boundary=4dd383e4f197

Parameters:
__rdxml: ?xml version=1.0?
reportDefinition
  selector
fieldsDate/fields
fieldsExternalCustomerId/fields
fieldsId/fields
fieldsCampaignId/fields
fieldsAdGroupId/fields
fieldsStatus/fields
fieldsKeywordText/fields
fieldsAdNetworkType2/fields
fieldsImpressions/fields
fieldsClicks/fields
fieldsConversionRate/fields
fieldsConversions/fields
fieldsCost/fields
fieldsCostPerConversion/fields
fieldsAverageCpc/fields
fieldsAverageCpm/fields
fieldsAveragePosition/fields
predicates
  fieldStatus/field
  operatorIN/operator
  valuesEnabled/values
  valuesDeleted/values
  valuesPaused/values
/predicates
dateRange
  min20120501/min
  max20120531/max
/dateRange
  /selector
  reportNameKEYWORDS performance report #1339177808/reportName
  reportTypeKEYWORDS_PERFORMANCE_REPORT/reportType
  dateRangeTypeCUSTOM_DATE/dateRangeType
  downloadFormatCSV/downloadFormat
  includeZeroImpressionsfalse/includeZeroImpressions
/reportDefinition

Response Code: 400
Error Message: [SelectorError.INVALID_PREDICATE_ENUM_VALUE @ selector; 
trigger:'Enabled'; errorDetails:Enabled, 
SelectorError.INVALID_PREDICATE_ENUM_VALUE @ selector; trigger:'Deleted'; 
errorDetails:Deleted, SelectorError.INVALID_PREDICATE_ENUM_VALUE @ 
selector; trigger:'Paused'; errorDetails:Paused]

-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
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


Re: updating from Cross Client Report Download (ReportUtils::RunAsyncReport) to ReportUtils::DownloadReport

2012-02-14 Thread iateadonut
was using too old of a version of 201109 - updated to the
2012.jan.something release and it works now.


On Feb 9, 10:49 pm, iateadonut orienta@gmail.com wrote:
 This no longer works and I'm getting a
 QuotaCheckError.INVALID_TOKEN_HEADER error.

 I understand this has something to do with the developerToken, but my
 auth.ini file looks like this:

 email = *...@gmail.com
 password = **
 userAgent = Test App
 developerToken = *

 So I thought that the developer token was assigned to $user in the
 script at:
   $user = new AdWordsUser();  //by default here
                 $user-GetAuthToken();

 and then passed here:
 ReportUtils::DownloadReport($reportDefinition, $path, $user,
 $options);

 I even tried things like $user-setDeveloperToken($token) in the
 script, just to try.  (This did not give me an error, incidentally,
 but, then I'm not sure how to display errors in $user objects.)

 Anyway, This doesn't work.  Can you give me a clue how this is
 supposed to work?

 On Dec 16 2011, 5:57 pm, iateadonut orienta@gmail.com wrote:







  OK,

  changed:
    $user = new AdWordsUser();

  to:
    $user = new AdWordsUser();
                  $user-GetAuthToken();

  and i was able to run it three times without a captcha, so that seemed
  to do it... not to mention it runs faster now.

  thank you all for your help, Kevin, Anash, Eric

  on a side note, debugging was a lot easier with CrossClients.  if you
  have a single report to download, then you can just check the latest
  date in the mysql table you import it into and know that the whole
  process went fine.

  now you have to check for all of your clients, but if one of the
  reports is empty, then it's harder to know if you're missing just a
  little bit of the data or there was no data in a report, etc.

  On Dec 16, 2:18 pm, Kevin Winter kevin.win...@google.com wrote:

   Hi,
     In the PHP library, the tokens are generated in a lazy fashion, i.e.
   right before they are needed.  If you don't cause the AuthToken to get
   generated BEFORE the fork, then each forked process will generate its own,
   leading to CAPTCHA challenged.  You can call GetAuthToken() 
   (http://code.google.com/p/google-api-adwords-php/source/browse/trunk/s...)
   on the AdWordsUser which forces creation.  Do this prior to the fork and
   each process will have a complete copy of the AdWordsUser object, 
   AuthToken
   and all, which can then be used to make requests without fear of CAPTCHA
   challenges.

   - Kevin Winter
   AdWords API Team

   On Friday, December 16, 2011 1:42:57 PM UTC-5,iateadonutwrote:

I'm misunderstanding:

I do this command only once:
$user = new AdWordsUser();

and then I loop through my customerId's like this:
$user-SetClientId($customerId);

I thought only 'new AdWordsUser()' would generate a new AuthToken?

-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
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


Re: updating from Cross Client Report Download (ReportUtils::RunAsyncReport) to ReportUtils::DownloadReport

2012-02-09 Thread iateadonut
This no longer works and I'm getting a
QuotaCheckError.INVALID_TOKEN_HEADER error.

I understand this has something to do with the developerToken, but my
auth.ini file looks like this:

email = **@gmail.com
password = **
userAgent = Test App
developerToken = *

So I thought that the developer token was assigned to $user in the
script at:
  $user = new AdWordsUser();  //by default here
$user-GetAuthToken();

and then passed here:
ReportUtils::DownloadReport($reportDefinition, $path, $user,
$options);


I even tried things like $user-setDeveloperToken($token) in the
script, just to try.  (This did not give me an error, incidentally,
but, then I'm not sure how to display errors in $user objects.)


Anyway, This doesn't work.  Can you give me a clue how this is
supposed to work?



On Dec 16 2011, 5:57 pm, iateadonut orienta@gmail.com wrote:
 OK,

 changed:
   $user = new AdWordsUser();

 to:
   $user = new AdWordsUser();
                 $user-GetAuthToken();

 and i was able to run it three times without a captcha, so that seemed
 to do it... not to mention it runs faster now.

 thank you all for your help, Kevin, Anash, Eric

 on a side note, debugging was a lot easier with CrossClients.  if you
 have a single report to download, then you can just check the latest
 date in the mysql table you import it into and know that the whole
 process went fine.

 now you have to check for all of your clients, but if one of the
 reports is empty, then it's harder to know if you're missing just a
 little bit of the data or there was no data in a report, etc.

 On Dec 16, 2:18 pm, Kevin Winter kevin.win...@google.com wrote:







  Hi,
    In the PHP library, the tokens are generated in a lazy fashion, i.e.
  right before they are needed.  If you don't cause the AuthToken to get
  generated BEFORE the fork, then each forked process will generate its own,
  leading to CAPTCHA challenged.  You can call GetAuthToken() 
  (http://code.google.com/p/google-api-adwords-php/source/browse/trunk/s...)
  on the AdWordsUser which forces creation.  Do this prior to the fork and
  each process will have a complete copy of the AdWordsUser object, AuthToken
  and all, which can then be used to make requests without fear of CAPTCHA
  challenges.

  - Kevin Winter
  AdWords API Team

  On Friday, December 16, 2011 1:42:57 PM UTC-5,iateadonutwrote:

   I'm misunderstanding:

   I do this command only once:
   $user = new AdWordsUser();

   and then I loop through my customerId's like this:
   $user-SetClientId($customerId);

   I thought only 'new AdWordsUser()' would generate a new AuthToken?

-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
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


Re: updating from Cross Client Report Download (ReportUtils::RunAsyncReport) to ReportUtils::DownloadReport

2011-12-16 Thread iateadonut
I'm misunderstanding:

I do this command only once:
$user = new AdWordsUser();


and then I loop through my customerId's like this:
$user-SetClientId($customerId);


I thought only 'new AdWordsUser()' would generate a new AuthToken?


On Dec 16, 3:11 am, Anash P. Oommen anash.p.oommen
+fo...@google.com wrote:
 Hi,

 You get Captcha errors because you are not reusing the AuthTokens. The
 detailed technical blog is given below for reference, but the summary is
 that if you hit the ClientLogin endpoint too frequently, it will challenge
 you with a captcha. However, AuthTokens are long-lived, so the parent
 script should generate one authToken, and ask all the child processes to
 reuse it.

 Seehttp://adwordsapi.blogspot.com/2010/07/discover-v2009-working-with-au...for
 more details.

 Thanks,
 Anash

-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
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


Re: updating from Cross Client Report Download (ReportUtils::RunAsyncReport) to ReportUtils::DownloadReport

2011-12-16 Thread iateadonut
OK,

changed:
  $user = new AdWordsUser();

to:
  $user = new AdWordsUser();
$user-GetAuthToken();


and i was able to run it three times without a captcha, so that seemed
to do it... not to mention it runs faster now.

thank you all for your help, Kevin, Anash, Eric



on a side note, debugging was a lot easier with CrossClients.  if you
have a single report to download, then you can just check the latest
date in the mysql table you import it into and know that the whole
process went fine.

now you have to check for all of your clients, but if one of the
reports is empty, then it's harder to know if you're missing just a
little bit of the data or there was no data in a report, etc.


On Dec 16, 2:18 pm, Kevin Winter kevin.win...@google.com wrote:
 Hi,
   In the PHP library, the tokens are generated in a lazy fashion, i.e.
 right before they are needed.  If you don't cause the AuthToken to get
 generated BEFORE the fork, then each forked process will generate its own,
 leading to CAPTCHA challenged.  You can call GetAuthToken() 
 (http://code.google.com/p/google-api-adwords-php/source/browse/trunk/s...)
 on the AdWordsUser which forces creation.  Do this prior to the fork and
 each process will have a complete copy of the AdWordsUser object, AuthToken
 and all, which can then be used to make requests without fear of CAPTCHA
 challenges.

 - Kevin Winter
 AdWords API Team







 On Friday, December 16, 2011 1:42:57 PM UTC-5, iateadonut wrote:

  I'm misunderstanding:

  I do this command only once:
  $user = new AdWordsUser();

  and then I loop through my customerId's like this:
  $user-SetClientId($customerId);

  I thought only 'new AdWordsUser()' would generate a new AuthToken?

-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
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


Re: [ReportDefinitionError. CUSTOMER_SERVING_TYPE_REPORT_MISMATCH @ operations]

2011-12-16 Thread iateadonut
here's php code that will fetch reports for multiple clients, if you
have a lot of them (10 at a time):

?php

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';
include('../definedb.php'); //sets $adwordsAPIpath, which i keep
outside webroot on the server
include('./accountsArray.php'); //sets $adwordsAPIpath, uses $selector
= new ServicedAccountSelector(); to make an array of all accounts

$path = $adwordsAPIpath.'/../../live_api2/src/';
set_include_path(get_include_path() . PATH_SEPARATOR . $path);

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

  // Get AdWordsUser from credentials in ../auth.ini
  // relative to the AdWordsUser.php file's directory.
  $user = new AdWordsUser();
$user-GetAuthToken(); //get the token now; this should force 
php
not to fetch the token for each fork()

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

  // Load ReportDefinitionService so that the required classes are
available.
  $user-LoadService('ReportDefinitionService', 'v201109');

  // Create selector.
  $selector = new Selector();
$selector-fields = array('ExternalCustomerId',
'AccountDescriptiveName', 'PrimaryUserLogin', 'Date', 'Id', 'Name',
'Impressions', 'Clicks', 'Cost');
  //$selector-predicates[] =
  //new Predicate('Status', 'IN', array('ENABLED', 'PAUSED'));

  // Create report definition.
  $reportDefinition = new ReportDefinition();
  $reportDefinition-selector = $selector;
  $reportDefinition-reportName = 'Campaign performance report #' .
time();
  $reportDefinition-dateRangeType = 'LAST_7_DAYS';
  $reportDefinition-reportType = 'CAMPAIGN_PERFORMANCE_REPORT';
  $reportDefinition-downloadFormat = 'CSV';
  $reportDefinition-includeZeroImpressions = FALSE;

  $options = array('version' = 'v201109', 'returnMoneyInMicros' =
FALSE);

$pids = array();

$j = 0;

for ($i=0; $icount($accountsArray); $i++) {

if($j==10) { echo $j. ---\n; $j=0; }

$pids[$i] = pcntl_fork();

  if(!$pids[$i]) {

// child process

try {
  // Get AdWordsUser from credentials in ../auth.ini
  // relative to the AdWordsUser.php file's directory.

$customerId = $accountsArray[$i];

$user-SetClientId($customerId);

$fileName = 7days-.$customerId..csv;
$path = dirname(__FILE__) . '/../reports/7days/' . $fileName;

  ReportUtils::DownloadReport($reportDefinition, $path, $user,
$options);

  printf(Report with name '%s' was downloaded to '%s'.\n,
  $reportDefinition-reportName, $fileName);

  } catch (Exception $e) {
  print $e-getMessage();
}

exit();
  }

$j++;

}


On Nov 17, 6:20 pm, Eric Koleda eric.kol...@google.com wrote:
 Hi,

 Creating and using existing report definitions will be supported at least
 until the sunset of v201101, which is scheduled for late February 2012.  By
 that time you will need to have moved your reporting to ad-hoc reports.

 Best,
 - Eric Koleda, AdWords API Team

-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
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


Re: updating from Cross Client Report Download (ReportUtils::RunAsyncReport) to ReportUtils::DownloadReport

2011-12-15 Thread iateadonut
Thanks,

I did it with pcntl_fork.  (had a lot of different advice on this -
yours turned out to be the best)

The only problem is that it is consistently triggering Captcha's
(except one doing them one at a time, which takes forever).  How do I
deal with these?



Here is the code.  I will post it in the other discussion groups where
I gave advice pertinent on CrossClient Reports after I complete this
taking care of Captcha's.





?php

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';
include('../definedb.php'); //
include('./accountsArray.php'); //sets $adwordsAPIpath, uses $selector
= new ServicedAccountSelector(); to make an array of all accounts
//$accountsArray = array('4503399530');
//print_r($accountsArray);exit;
$path = $adwordsAPIpath.'/../../live_api2/src/';
set_include_path(get_include_path() . PATH_SEPARATOR . $path);

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

  // Get AdWordsUser from credentials in ../auth.ini
  // relative to the AdWordsUser.php file's directory.
  $user = new AdWordsUser();
//$user-SetClientId($customerId);

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

  // Load ReportDefinitionService so that the required classes are
available.
  $user-LoadService('ReportDefinitionService', 'v201109');

  // Create selector.
  $selector = new Selector();
$selector-fields = array('ExternalCustomerId',
'AccountDescriptiveName', 'PrimaryUserLogin', 'Date', 'Id', 'Name',
'Impressions', 'Clicks', 'Cost');
  //$selector-predicates[] =
  //new Predicate('Status', 'IN', array('ENABLED', 'PAUSED'));

  // Create report definition.
  $reportDefinition = new ReportDefinition();
  $reportDefinition-selector = $selector;
  $reportDefinition-reportName = 'Campaign performance report #' .
time();
  $reportDefinition-dateRangeType = 'LAST_7_DAYS';
  $reportDefinition-reportType = 'CAMPAIGN_PERFORMANCE_REPORT';
  $reportDefinition-downloadFormat = 'CSV';
  $reportDefinition-includeZeroImpressions = FALSE;

  $options = array('version' = 'v201109', 'returnMoneyInMicros' =
FALSE);

$pids = array();

$j = 0;

for ($i=0; $icount($accountsArray); $i++) {

if($j==10) { echo $j. ---\n; $j=0; }

$pids[$i] = pcntl_fork();

  if(!$pids[$i]) {

// child process

try {
  // Get AdWordsUser from credentials in ../auth.ini
  // relative to the AdWordsUser.php file's directory.

$customerId = $accountsArray[$i];

$user-SetClientId($customerId);

$fileName = 7days-.$customerId..csv;
$path = dirname(__FILE__) . '/../reports/7days/' . $fileName;

  ReportUtils::DownloadReport($reportDefinition, $path, $user,
$options);

  printf(Report with name '%s' was downloaded to '%s'.\n,
  $reportDefinition-reportName, $fileName);

  } catch (Exception $e) {
  print $e-getMessage();
}

exit();
  }
$j++;
}






On Dec 15, 9:55 am, Kevin Winter kevin.win...@google.com wrote:
 Hi,
   I'm not very familiar with PHP, but I believe one suggested approach is
 to use pcntl_fork to spawn extra processes and handle multiple concurrent
 report downloads that way:http://php.net/manual/en/function.pcntl-fork.php

 - Kevin Winter
 AdWords API Team







 On Wednesday, December 14, 2011 11:33:59 PM UTC-5, iateadonut wrote:

  How do you suggest requesting 10 reports at a time (from an array of
  300 customerId's) using php?  or is this impossible?

  On Dec 12, 12:33 pm, Kevin Winter kevin@google.com wrote:
   Hi,
     Given that AdHoc reports cost 0 units, the cost of requesting the
  report
   to you as a developer is the CPU cycles (and IO) required to request it.
    The cost to us from a server perspective is a bit more.  However, if you
   as a developer don't know at report time whether or not there is data to
   request, it makes sense to request it anyway.  Yes, go ahead and request
   the report anyway.

   - Kevin Winter
   AdWords API Team

-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
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


Re: updating from Cross Client Report Download (ReportUtils::RunAsyncReport) to ReportUtils::DownloadReport

2011-12-14 Thread iateadonut


How do you suggest requesting 10 reports at a time (from an array of
300 customerId's) using php?  or is this impossible?



On Dec 12, 12:33 pm, Kevin Winter kevin.win...@google.com wrote:
 Hi,
   Given that AdHoc reports cost 0 units, the cost of requesting the report
 to you as a developer is the CPU cycles (and IO) required to request it.
  The cost to us from a server perspective is a bit more.  However, if you
 as a developer don't know at report time whether or not there is data to
 request, it makes sense to request it anyway.  Yes, go ahead and request
 the report anyway.

 - Kevin Winter
 AdWords API Team

-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
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


Re: updating from Cross Client Report Download (ReportUtils::RunAsyncReport) to ReportUtils::DownloadReport

2011-12-12 Thread iateadonut
My client has more than 300 sub-accounts that his company manages.

Sometimes, the sub=account may have no data returned when generating a
report.

I should just fetch each report anyway?  10 at a time and fetch 300
reports?

(Just making sure.)  Thanks.

On Dec 1, 2:03 pm, Eric Koleda eric.kol...@google.com wrote:
 Hi,

 Cross-client reporting functionality is no longer available in v201109,
 although there are ways to achieve the same results using a series of
 single-client reports:

 http://adwordsapi.blogspot.com/2011/10/downloading-reports-for-lots-o...

 The header returnMoneyInMicros header allows you to control the format of
 the returned currency amounts:

 http://code.google.com/apis/adwords/docs/reportingtopics.html

 Best,
 - Eric

-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
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


Re: updating from Cross Client Report Download (ReportUtils::RunAsyncReport) to ReportUtils::DownloadReport

2011-12-01 Thread iateadonut

Thanks.

How do I download a report that has information for all my clients
with adHoc reports?

Also, through adHoc reports, selector 'Cost' is a microAmount?  How
can I change that back to a dollar amount?

Thank you.

On Nov 30, 6:07 pm, Eric Koleda eric.kol...@google.com wrote:
 Hi,

 The customer ID shown is the error is a different internal ID, which is why
 it doesn't match up.  It is however referring to the same account.  The
 problem here is that the report definition you are referencing was created
 on the MCC account, and it's available on the client account you are
 running it against.  If you are switching to v201109 you should be using
 ad-hoc reports instead:

 http://code.google.com/apis/adwords/docs/reportingtopics.html#adhoc

 Best,
 - Eric Koleda, AdWords API Team

-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
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


updating from Cross Client Report Download (ReportUtils::RunAsyncReport) to ReportUtils::DownloadReport

2011-11-23 Thread iateadonut
The following code generates a report for me:

  $user = new AdWordsUser();
  $user-LogDefaults();

  $reportDefinitionId = (float) '131128463';

  $result = ReportUtils::RunAsyncReport($reportDefinitionId,
$queryToken, $user, $options);

This is the old CrossClient type of download.


This code, however:
  $user = new AdWordsUser();
  $user-LogDefaults();

  $reportDefinitionId = '131128463';

  ReportUtils::DownloadReport($reportDefinitionId, $path, $user,
$options);

produces:
  The client customer ID must be specified for report downloads.


Fair enough, change the above to:

  $user = new AdWordsUser();
  $user-LogDefaults();
$user-SetClientId('3924112376');

  $reportDefinitionId = '131128463';

  ReportUtils::DownloadReport($reportDefinitionId, $path, $user,
$options);

produces:
[ReportDefinitionError.INVALID_REPORT_DEFINITION_ID @
selector.selector; errorDetails:reportDefinitionId=ReportDefinitionId:
131128463, customerId=27968988, changeId=0]

which seems very strange to me - the customerId (27968988) not only
doesn't match $user-SetClientId, but it is also only 8 digits, when I
think clientId's are supposed to be at least 9 digits long.


Please let me know what I'm doing wrong here (and also, when you do
set the clientId, how to set it for all of your subaccounts).

-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
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


Re: How to get the list of ads of the campaign without knowing adgroupid

2011-11-18 Thread iateadonut


Why not just loop through all the ad group id's through GetAllAds
after you receive them from GetAllAdGroups?



On Nov 16, 12:18 am, dummy one dummyone...@gmail.com wrote:
 Hi ,

 How to get the list of ads of the particular campaign , without
 passing the adgroup id . Do google api v201101 provides this feature
 in java.Can any one help ?

 regards ,

 jana

-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
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


Re: [ReportDefinitionError. CUSTOMER_SERVING_TYPE_REPORT_MISMATCH @ operations]

2011-11-17 Thread iateadonut
Kevin,

How long will we be able to use our old report definitions?  Will
ReportUtils::DownloadReport based on a reportDefinitionId be
deprecated soon, too?

Will we not be able to create a new report definition sometime in the
near future?  Will the ones that already exist be eliminated?  When?


On Nov 4, 1:57 pm, Kevin Winter kevin.win...@google.com wrote:
 Hi,
   @iateadonut, this is unsupported and will be going away.  We strongly
 encourage everyone to migrate to v201109 AdHoc 
 reports:http://code.google.com/apis/adwords/docs/reportingtopics.html#adhoc

 @Andreas, Yes, this is the recommended approach.  Please see this blog post
 for more 
 info:http://adwordsapi.blogspot.com/2011/10/downloading-reports-for-lots-o...

 - Kevin Winter
 AdWords API Team

-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
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


Re: Fetch Keyword object from Adwords account

2011-11-17 Thread iateadonut


Kevin,

Thanks.

- Moved the adWordsUser instantiation out of the loop.

- This is already done that way:

while ( $row06 = $result06-fetch_object() ) {
$distinctAdGroupId[] = (float) $row06-
adGroupId;}

Notice that all the adgroupsId's are put into an array and then:

$adGroupIdPredicate = new Predicate('AdGroupId', 'IN',
$distinctAdGroupId);


Thank you so much for reviewing the code.  All the developers working
with your code really appreciate your help and the extent of your
documentation/examples.


On Nov 4, 8:49 am, Kevin Winter kevin.win...@google.com wrote:
 Hi,
   The PHP example as posted will get the job done, but there are a few
 improvements that could be made to make it more efficient.

 - Since all these keywords appear to be in the same account, you can move
 the instantiation of the AdWordsUser outside the while loop.  This is
 especially important if you will be requesting a large number of keywords,
 because with the current code it will request an AuthToken (valid for two
 weeks) for each keyword, which could easily trigger a CAPTCHA challenge.
 - Likewise, you could change the predicate to include ALL AdGroupIds
 instead of one per request.

 I'd also like to mention that you can use Predicates when defining reports,
 which may help them return more quickly (especially for a large number of
 Keywords).

 - Kevin Winter
 AdWords API Team

-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
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


Re: How to get the list of ads of the campaign without knowing adgroupid

2011-11-17 Thread iateadonut
In the PHP api, there is a file GetAllAdGroups.php in the /examples
folder.  I'm sure there is something similar for java.



On Nov 16, 12:18 am, dummy one dummyone...@gmail.com wrote:
 Hi ,

 How to get the list of ads of the particular campaign , without
 passing the adgroup id . Do google api v201101 provides this feature
 in java.Can any one help ?

 regards ,

 jana

-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
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


Re: advanced broad

2011-11-04 Thread iateadonut
yes

On Nov 4, 4:58 am, Dmitriy imediamos...@gmail.com wrote:
 Do you mean
 BROAD: some keyword
 ADVANCED BROAD: +some +keyword
 ?

 On 2 ноя, 23:11, iateadonut orienta@gmail.com wrote:







 http://code.google.com/apis/adwords/docs/reference/latest/AdGroupCrit...

  How do we do advanced broad type?

-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
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


Re: [ReportDefinitionError. CUSTOMER_SERVING_TYPE_REPORT_MISMATCH @ operations]

2011-11-04 Thread iateadonut


You can get a report for all clients.

The php in the first post is wrong.  Where it says:
  $user = new AdWordsUser();
  $user-SetClientId(eigene ID);
  $user-LogDefaults();

Escape out the second line:
  $user = new AdWordsUser();
  //$user-SetClientId(eigene ID);
  $user-LogDefaults();
and the report will be generated for all clients that you have access
to.


Also, if you want to actually KNOW which account each keyword belongs
to (or adGroup, whatever kind of report you're running):
$selector-fields = array('AdGroupId', 'Id', 'KeywordText',
  'KeywordMatchType', 'Impressions', 'Clicks', 'Cost');
You should add 'ExternalCustomerId' as a selector.


Please reference 'AddCrossClientReportDefinition.php' in your examples
folder.
That script will return $reportDefinition-id - you need to use that
id in another script:
DownloadCrossClientReport.php

which will have the line:
$reportDefinitionId = (float) '';

Just add your $reportDefinition-id there and you should be able to
download it.



The following is a script that works for adding a cross-client report
definition.  I've left all my notes in (there are WAY too many fields
in the selector - you probably don't want all those.  If you need to
find all the options for a report, use 'GetReportFields.php'), so
you'll have to modify the file for it to work:

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();

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

  // Create selector.
  $selector = new Selector();

//$selector-fields = array('ExternalCustomerId',
'AccountDescriptiveName', 'PrimaryUserLogin', 'Date',
'AdNetworkType2', 'ValuePerConversion', 'AveragePosition',
'AverageCpc', 'AverageCpm', 'Ctr', 'CampaignName', 'CampaignId',
'Status', 'Clicks', 'AccountTimeZoneId', 'ConversionRate',
'Conversions', 'Cost', 'CostPerConversion',
'CostPerConversionManyPerClick', 'DerivedDailyBudget', 'Impressions',
'InvalidClicks', 'InvalidClickRate', 'TotalConvValue',
'ConversionsManyPerClick', 'ExactMatchImpressionShare',
'ImpressionShare', 'BudgetLostImpressionShare',
'QualityLostImpressionShare'); //fields for cross-client campaign
performance report

$selector-fields = array('AdGroupId', 'AdGroupName',
'AdNetworkType1', 'AdNetworkType2', 'AverageCpc', 'AverageCpm',
'AveragePosition',  'CampaignId', 'CampaignStatus', 'Clicks',
'ConversionOptimizerBidType', 'ConversionRate',
'ConversionRateManyPerClick', 'Conversions',
'ConversionsManyPerClick', 'ConversionValue', 'Cost',
'CostPerConversion', 'CostPerConversionManyPerClick', 'Ctr', 'Date',
'DeduplicationMode', 'EnhancedCpcEnabled', 'ExternalCustomerId', 'Id',
'Impressions', 'KeywordContentMaxCpc', 'KeywordMaxCpc', 'MaxCpm',
'PercentCpa', 'ProxyKeywordMaxCpc', 'ProxySiteMaxCpc', 'SiteMaxCpc',
'Slot', 'Status', 'TargetCpa', 'TotalConvValue', 'ValuePerConv',
'ValuePerConversion', 'ValuePerConversionManyPerClick',
'ValuePerConvManyPerClick', 'ViewThroughConversions'); //adGroup
report

$selector-fields = array('Date', 'ExternalCustomerId', 'Id',
'CampaignId', 'AdGroupId', 'Status', 'KeywordText', 'AdNetworkType2',
'Impressions', 'Clicks', 'ConversionRate', 'Conversions', 'Cost',
'CostPerConversion', 'AverageCpc', 'AverageCpm', 'AveragePosition'); //
keword report

  // Create report definition.
  $reportDefinition = new ReportDefinition();
  $reportDefinition-reportName = 'whatever'; //. uniqid();

  $reportDefinition-dateRangeType = 'CUSTOM_DATE';
  $reportDefinition-dateRangeType = 'YESTERDAY';
  //$selector-dateRange = new DateRange('20110101','20111012');
  //$reportDefinition-dateRangeType = 'THIS_MONTH';
  $reportDefinition-reportType = 'KEYWORDS_PERFORMANCE_REPORT';
  //$reportDefinition-reportType = 'ADGROUP_PERFORMANCE_REPORT';
  //$reportDefinition-reportType = 'CAMPAIGN_PERFORMANCE_REPORT';
  //$reportDefinition-reportType = 'ACCOUNT_PERFORMANCE_REPORT';
  $reportDefinition-downloadFormat = 'CSV';
  $reportDefinition-selector = $selector;
  $reportDefinition-crossClient = TRUE;

  // 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) {
foreach ($result as $reportDefinition) {
  printf(Report definition with name '%s' and id '%s' was added.
\n,
  $reportDefinition-reportName, $reportDefinition-id);
}
  } else {
print No report definitions were added.\n;
  }
} catch (Exception $e) {
  print $e-getMessage();
}


On Nov 3, 7:47 am, scrat weigel.andr...@googlemail.com wrote:
 Is it now possible to run report on behalf of a mcc account using
 Adhoc Reports?

 I also couldn't 

Re: Stats.Network in API calls and/or Report-based workarounds

2011-11-02 Thread iateadonut

a) Try AddCrossClientReportDefinition.php - Make sure to add $selector-
fields = array('AdNetworkType1', 'AdNetworkType2'... - one of those
two, and you'll get the information you need.

b) This costs something like $.125/day, right?  About $4/month?  It
will be much cheaper for your clients to query the server on your
database than to query the API everytime it needs a nugget of
information.  It will also be much faster.

c) You can use DownloadCrossClientReport.php and set a place on your
server for that file to download.  Then run another script to parse
that information.

Peruse the source of the two filenames listed above, and this will be
quite easy for you.


On Nov 1, 6:33 pm, goo...@rndinteractive.com
goo...@rndinteractive.com wrote:
 On 14 Apr 2010, a member of the Google Adwords API team (at the time)
 wrote:

 http://www.mail-archive.com/adwords-api@googlegroups.com/msg07680.html

 Is that still answer true with the v201109 api? will it ever be
 changing?

 The reports API is unsatisfying because our customers want the
 information (stats broken down by search v. content networks) when
 they click the stats page, they don't want a okay, we need to prepare
 a report, wait 15 minutes, then get and parse the report. come back in
 a while message. The work-around for that is to get a daily report
 and parse it before the customer clicks - which is HIGHLY wasteful of
 API units for many of our customers, who don't click _every_ day, but
 might click _any_ day. Of course, we could have the report mailed to
 us daily, except the mailed reports don't include the report as an
 attachment, they include a link to it, and it requires a real
 javascript-enabled browser to fetch the report through the login
 screen (plus the AdWords center seems allergic to mailing the report
 to an arbitrary location, so we'd have to change all the email
 addresses associated with our accounts so that the emails come to us
 first so we can find the reports, and forward the rest to the original
 intended recipients). Unless I'm totally missing something obvious or
 cool here, it seems reports are a painful option.

 In summary, what I want, is:
 a) a way to get stats data broken down by network from the API on
 demand, or
 b) a way to tell the report-api to make a daily report which I can
 download every day without an additional 500 credits to make a new
 report every day, or
 c) a way to get a report mailed to me daily (the _actual_ report
 mailed to me, so I can parse it automatically. or at least a link to a
 report that I can fetch with automatable credentials).

 P.S. Is there an api-team email address I could have been using so I
 don't have to air my laundry in public? I'm a real, paying customer,
 but none of the help-email options seemed to go to API related
 questions and even the nice person on the phone told me try the
 forums? Which has no guarantee that even a paying customer gets
 support (and, of course, eliminates the possibility that customers get
 any privacy). Awesome.

-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
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


Re: Fetch Keyword object from Adwords account

2011-11-02 Thread iateadonut
PHP ok?  This is what I have in my notes:


//adWords API stuff - see GetAllAdGroupCriteria.php
//make array containing all adGroupId's
$query06 = select distinct(adGroupId) from $db.$prefix.keywords
where ExternalCustomerId='$customerId' and
( month(date)=month(date(now())) or month(date)=month(date(now()-
interval 1 month)) ) group by keywordText;
$result06 = $mysqli-query($query06);
while ( $row06 = $result06-fetch_object() ) {
$distinctAdGroupId[] = (float) $row06-adGroupId;   }
try {
  // Get AdWordsUser from credentials in ../auth.ini
  // relative to the AdWordsUser.php file's directory.
  $user = new AdWordsUser();
$user-SetClientId($customerId);
  // Log SOAP XML request and response.
  $user-LogDefaults();
  // Get the AdGroupCriterionService.
  $adGroupCriterionService = $user-
GetAdGroupCriterionService('v201101');
  // Create selector.
  $selector = new Selector();
  $selector-fields = array('Id', 'KeywordText', 'MaxCpc',
'FirstPageCpc');
  //to get all possible fields, see
http://code.google.com/apis/adwords/docs/appendix/selectorfields.html#v201101-AdGroupCriterionService
  $selector-ordering = array(new OrderBy('AdGroupId', 'ASCENDING'));
  // Create predicates.
  $adGroupIdPredicate = new Predicate('AdGroupId', 'IN',
$distinctAdGroupId);
  $selector-predicates = array($adGroupIdPredicate);
  // Get all ad group criteria.
  $page = $adGroupCriterionService-get($selector);
} catch (Exception $e) {
  print $e-getMessage();
}
//*/

I do that first to create an object with all the keyword information I
might need to grab for purposes of my script, then I use a function to
search through that data and return an object with whatever
information I need:

//*
function getLastMonthMaxCPC($keywordId, $page5) {

foreach ($page5 as $ad) {

if ( $ad-Id == $keywordId ) {

$maxCPC2 = new stdClass;
if(isset($ad-avgCPC)) {
$maxCPC2-avgCPC = $ad-avgCPC;
$maxCPC2-convRate = $ad-convRate; }
return $maxCPC2;
}
}
}
//*/



On Nov 1, 6:14 am, Nikhil Gaur nik...@ranosys.com wrote:
 Hi,

 In my application I want to fetch keyword report, but it takes too
 much time so I am planning to create a separate operation for some
 special keywords. For these keywords I will not fetch reports but I'll
 fetch their keyword object which contains complete keyword details
 like average cpc, impression etc.

 This kind of thing is possible in adCenter API so I am assuming that
 this will also be available in Adwords as well. In adCenter we can
 fetch individual keyword abject and then check theor details.

 If any one knows how to fetch keyword object in Adwords please reply.

 Thanks

-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
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


adding developer to account?

2011-11-02 Thread iateadonut
Hi,

I work for a company and through them, through a google account -
accou...@gmail.com, I have access to the API (my own developer token).

I have another google account that I use for myself, for my own
adwords account, and email, etc.

I'm wondering if accou...@gmail.com can authorize the API credentials
at accou...@gmail.com to access his account through the API, without
adding accou...@gmail.com to the MCC of myCompany.

Thanks.

-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
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


advanced broad

2011-11-02 Thread iateadonut

http://code.google.com/apis/adwords/docs/reference/latest/AdGroupCriterionService.KeywordMatchType.html

How do we do advanced broad type?

-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
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


Re: Marketing Dashboards

2011-11-01 Thread iateadonut
Would you download the report once a day?

I would recommend using the script: /examples/v201101/
DownloadCrossClientReport.php, modified of course to your
specifications.


Then, you could pull the data into a database and then create php
scripts to display your reports.

If you can't afford to hire someone to do this or do it yourself, then
I guess I wouldn't recommend it.

On Oct 31, 3:14 pm, Curious George i...@inovat.com wrote:
 Hello, i would like to create custom dashboards from adwords data. Or
 more specifically pull data from adwords into a report that i would
 normally manually pull into document to report to clients every
 month.  I am not a developer can someone point me in a direction
 here ?

-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
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


getting keywords maxCPC using php from GetAdGroupCriterionService

2011-10-17 Thread iateadonut

If I'm producing an object with:

$adGroupCriterionService = $user-
GetAdGroupCriterionService('v201101');
$selector-fields = array('Id', 'KeywordText');

and returning it with:

$page = $adGroupCriterionService-get($selector);

  // Display ad group criteria.
  if (isset($page-entries)) {
foreach ($page-entries as $ad) {
var_dump($ad);

  echo $ad-criterion-text . $ad-adGroupId . \n ; }


How do I get the current maxCPC to appear in the object?  I think I
have to add a field to the selector, but I've tried just about every
selector name I could think of (maxCpc, KeywordMaxCpc, Bids, etc).

I guess I'm trying to GET the equivalent of:
$ad-bids-maxCpc-amount-microAmount
that appears in UpdateAdGroupCriterion.php

-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
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


running getAllAds.php - getting No ads were found.

2011-10-03 Thread iateadonut
I've taken adGroup id's from a report generated in the MCC.  It
clearly shows impressions and clicks for ad group id's, but when I
insert one of these id's into the $adGroupId variable in
getAllAds.php, and run getAllAds.php, I receive the reply No Ads were
found.

I'm using v201101.

Not sure why this is happpening.  Can't find anyone else on the forum
with this problem.

-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
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


Re: Impression share and display network

2011-10-03 Thread iateadonut
When you create your report definition using
Add...ReportDefinition.php from the example folder, make sure to
insert the proper fields.

You can find a list of accepted fields here:
http://code.google.com/apis/adwords/docs/appendix/reports.html

On Oct 1, 9:54 pm, Nick Chernih nicholascher...@gmail.com wrote:
 Hi,

 I'm trying to get generate reports dynamically, by storing adwords
 data in mysql database, then creating the report for the last month's
 data on request.

 I don't know how to get a campaign's display network statistics, or
 the total impression share for a campaign (again, for the last month's
 data).

 Sorry if this is a re-post, but I couldn't find/interpret other
 similar questions.

 Thanks,
 Nick

-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
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


Re: running getAllAds.php - getting No ads were found.

2011-10-03 Thread iateadonut
Found the answer.

I'm running a platform managing many clients and I had to make sure
that:
$user-SetClientId('');
was set properly, because the default value of the client id of that
object is set by the auth.ini file.

On Oct 3, 12:13 pm, iateadonut orienta@gmail.com wrote:
 I've taken adGroup id's from a report generated in the MCC.  It
 clearly shows impressions and clicks for ad group id's, but when I
 insert one of these id's into the $adGroupId variable in
 getAllAds.php, and run getAllAds.php, I receive the reply No Ads were
 found.

 I'm using v201101.

 Not sure why this is happpening.  Can't find anyone else on the forum
 with this problem.

-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
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


acceptable inputs for the array $selector-fields in GetCampaignService()

2011-08-31 Thread iateadonut

referencing GetAllCampaigns.php

  // Get the CampaignService.
  $campaignService = $user-GetCampaignService('v201101');

  // Create selector.
  $selector = new Selector();
  $selector-fields = array('Id', 'Name');
  $selector-ordering = array(new OrderBy('Name', 'ASCENDING'));

  // Get all campaigns.
  $page = $campaignService-get($selector);

I'm wondering how can I find all acceptable inputs for the array that
makes up $selector-fields?

-- 
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
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