Thanks for the sample code.

Unfortunately, the example Python code crashes well before that point
due to the 'entries' field not being present following the call to
GetCampaignService(), regardless of supplying IDs to the selector or
not, modifying the early part of the example based upon what I've
found to work with other sample code, etc.

I'll keep digging...

But I must vent a little: I was expecting more thorough examples, more
robust failure messages (e.g., "not implemented" rather than the
misleading errors noted earlier in this thread), etc., for an API
labeled v13.  To that end, when I do get this working, I'll post
whatever I can to help others in future.



On Feb 3, 10:05 pm, AdWords API Advisor <adwordsapiadvi...@google.com>
wrote:
> Hi Daniel,
>
> We don't have a LISP library, all the libraries that we maintain are
> listed athttp://code.google.com/apis/adwords/docs/clientlibraries.html
> and kept upto date with the latest version of AdWords API. So you can
> use the Python library if that suits you.
>
> As for your issue,
>
> - CampaignService.get can retrieve only the campaigns of one account
> at a time. So if you don't specify a clientEmail header, it will
> return an empty list of campaigns (since MCC can't have campaigns).
>
> - Cross client reports can fetch statistics across multiple accounts.
> However, cross client reports are supported only in v13, they are not
> yet supported in v201008 of AdWords API.
>
> - The code example you are referring to doesn't run a cross-client
> report. You need to modify the job to something like:
>
> job = {
>     'name': 'Test Campaign Report',
>     'selectedReportType': 'Campaign',
>     'aggregationTypes': ['Summary'],
>     'startDay': '2009-01-01',
>     'endDay': '2009-01-31',
>     'selectedColumns': ['Campaign', 'CampaignId', 'CPC', 'CTR'],
>     'crossClient' : true,
>     'clientEmails' : [the list of clientEmails, or provide an empty
> list for all clients]
>
> }
>
> Seehttp://code.google.com/apis/adwords/docs/developer/DefinedReportJob.html
> for all possible list of fields for job. Also, you can refer 
> tohttp://code.google.com/apis/adwords/docs/developer/adwords_api_report...
> for the list of fields, aggregation types, etc.
>
> - You can also remove the section that tries to fetch the list of
> campaign ids, since it is isn't needed in your case. Also, change the
> urls in the code example from sandbox.google.com to
> adwords.google.com, to make calls against the production account.
>
> Let me know if you have more questions.
>
> Cheers,
> Anash P. Oommen,
> AdWords API Advisor.
>
> On Feb 4, 12:27 am, daniel <daniel.pez...@accenture.com> wrote:
>
> > Unfortunately, v13 seems unable to get a list of Campaign IDs... or at
> > least the example Python code associated with that version seems
> > incapable.
>
> > Running schedule_campaign_report.py fails because no 'entries' are
> > found after the call to GetCampaignService().  Attempting to populate
> > the list of campaign IDs within the 'selector' didn't resolve it,
> > either.
>
> > What is the most current, stable version of the API?  Should I switch
> > from Python to another language? (Common Lisp would be preferred.)
>
> > Thanks.
>
> > On Feb 2, 11:05 pm, AdWords API Advisor <adwordsapiadvi...@google.com>
> > wrote:
>
> > > Hi Daniel,
>
> > > AdWords API v201008 does not support cross client reports, so you
> > > cannot use it yet to get campaign budgets across all accounts. The
> > > support for this will be added in a future version of AdWords API.
> > > Till then, you might want to consider using the v13 cross-client
> > > reports.
>
> > > Cheers,
> > > Anash P. Oommen,
> > > AdWords API Advisor.
>
> > > On Feb 3, 4:23 am, daniel <daniel.pez...@accenture.com> wrote:
>
> > > > I'm attempting to:
> > > >   1. define a Campaign Performance report
> > > >   2. download report
> > > >   3. process locally
> > > >   4. revise budgets
>
> > > > But stuck on running the second step.
>
> > > > First of all, is downloading a report an appropriate way to fetch
> > > > campaign budgets across all accounts?  (This works from the UI, and
> > > > the Reporting docs suggest that if you can do it from the UI, it can
> > > > be done through the API.  It works through both new and old UI
> > > > reports.)
>
> > > > Through the API, I'm finding "clientEmail" header to be required to
> > > > run the report and therefore must also be added when creating the
> > > > report.  If omitted or mismatched, running the report fails.
>
> > > > Without the header, I get
> > > > AuthenticationError.CLIENT_CUSTOMER_ID_IS_REQUIRED when attempting to
> > > > download the report.
>
> > > > With the header containing email address of the person who created the
> > > > MCC account, I then get
> > > > ReportDefinitionError.INVALID_REPORT_DEFINITION_ID when attempting to
> > > > download the report.  (Same header, same value used in both scripts)
>
> > > > With using my own address both when defining and downloading the
> > > > report, I get a valid file but no content; e.g., CSV file with headers
> > > > and Total row but nothing in between.
>
> > > > example resulting .csv file:
>
> > > > "Campaign Budgets (Feb 2, 2011)"
> > > > Account,Campaign ID,Campaign,Budget,Cost,Cost / conv. (1-per-click)
> > > > Total,,,,0.00,0.00
>
> > > > I suspect that I'm simply supplying the wrong header or wrong value:
> > > > in this case, the wrong email address, but I've used the only ones
> > > > that seem appropriate: first, my own adwords email address and then
> > > > the one associated with the MCC account.  The only other possibly
> > > > relevant email addresses would be of individual client accounts within
> > > > the umbrella of the MCC account, but then I'd be running one report
> > > > for each account.
>
> > > > I'm using v201008 with adwords_api_python_13.2.0 library, making only
> > > > necessary changes to example code:
> > > > add_keywords_performance_report_definition.py and download_report.py,
> > > > changed for Campaign reports and adding the header.
>
> > > > I couldn't find a clean way to inject the header, but this works:
>
> > > > client = AdWordsClient(path=os.path.join('..', '..', '..', '..'))
> > > > client._headers["clientEmail"] = "f...@example.com"
>
> > > > Any relevant recommendations would be appreciated.  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

Reply via email to