Just to note, all reports will only ever have a single account, so
specifying the account or externalid in a predicate is redundant, just
change the clientCustomerId header instead.
- Kevin Winter
AdWords API Team
On Saturday, November 3, 2012 4:42:59 AM UTC-4, Oliver wrote:
>
> There are two account IDs in the reports; one is called *AccountId *and
> the other called *ExternalCustomerId*.
>
> The one you're using in your code is the ten digit number which is *
> ExternalCustomerId*. This is the field you need to target, and not *
> AccountId*.
>
>
> Oliver
>
> On Friday, November 2, 2012 7:45:57 PM UTC, F.Pers wrote:
>>
>>
>> hi
>>
>> im trying to get a report with a predicate that filters to all the
>> campaigns belonging to an account:
>> [code]
>> // create selector
>> Selector selector = new Selector();
>> selector.getFields().addAll(reportFields);
>>
>> // Create status = active predicate
>> if(status != null) {
>> Predicate statusPredicate = new Predicate();
>> statusPredicate.setField("Status");
>> statusPredicate.setOperator(PredicateOperator.EQUALS);
>> statusPredicate.getValues().add("ACTIVE");
>> // add predicate
>> selector.getPredicates().add(statusPredicate);
>> }
>>
>> // Create account predicate
>> Predicate accountPredicate = new Predicate();
>> accountPredicate.setField("AccountId");
>> accountPredicate.setOperator(PredicateOperator.EQUALS);
>>
>> accountPredicate.getValues().add(String.valueOf(account.getClientId()));
>> // add predicate
>> selector.getPredicates().add(accountPredicate);
>>
>> // create report definition
>> ReportDefinition reportDefinition = new ReportDefinition();
>> reportDefinition.setReportName("CAMPAIGN_PERFORMANCE_REPORT #" +
>> System.currentTimeMillis());
>>
>> reportDefinition.setDateRangeType(ReportDefinitionDateRangeType.TODAY);
>>
>> reportDefinition.setReportType(ReportDefinitionReportType.CAMPAIGN_PERFORMANCE_REPORT);
>> reportDefinition.setDownloadFormat(DownloadFormat.CSV);
>> reportDefinition.setSelector(selector);
>>
>> // construct an AdWordsSession
>> AdWordsSession session = null;
>> try {
>> session = new AdWordsSession.Builder()
>> .withClientLoginToken(clientLoginToken)
>> .withDeveloperToken(developerToken)
>> .withClientCustomerId(account.getClientId())
>> .withEnvironment(Environment.PRODUCTION).build();
>> } catch (ValidationException e1) {
>> e1.printStackTrace();
>> }
>>
>> // download keyword report
>> int numberOfRetries = 0;
>> while(true) {
>> try {
>> return new
>> ReportDownloader(session).downloadReport(reportDefinition);
>> } catch (ReportException e) {
>> e.printStackTrace();
>> if(numberOfRetries < 10) {
>> numberOfRetries++;
>> continue;
>> } else {
>> break;
>> }
>> } catch (ReportDownloadResponseException e) {
>> e.printStackTrace();
>> break;
>> }
>> }
>> [/code]
>>
>> I do get an error in ReportDownloadResponseException:
>> HTTP Response Code: 400, FieldPath: selector, Trigger: 111-081-1181,
>> Type: SelectorError.INVALID_PREDICATE_VALUE
>> at
>> com.google.api.ads.adwords.lib.utils.v201209.ReportDownloader.handleResponse(ReportDownloader.java:119)
>> at
>> com.google.api.ads.adwords.lib.utils.v201209.ReportDownloader.downloadReport(ReportDownloader.java:93)
>>
>> It works like a charm when i leave the accountPredicate out.
>> Ive also Tried replacing the "-" of the accountId with empty strings but
>> its the same.
>>
>> But according to the reference a CAMPAIGN_PERFORMANCE_REPORT does have an
>> AccountId field.
>>
>> What am i doing wrong? Thank you for any help
>>
>> greez
>
>
--
=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~
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 [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/adwords-api?hl=en