reporting - multiple customers - SetClientCustomerId( array(id1, id2) )
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
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
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
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
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
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?
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
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
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
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
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
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
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]
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
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
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
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
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
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
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]
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
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
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
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]
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
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
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?
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
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
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
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.
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
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.
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()
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