Hi Jeff,

What I meant by my question about validateReportJob is why didn't it
detect the fact that I set crossClient but not crossClientSpecified.
That should be a really easy error condition to detect.

I did have another question about running these reports.  You
mentioned in your first reply that I should be running these a day
after the data has been collected.  But I need the up-to-date data
during the day.  How much can I trust the data I get from the reports
if I call every 6 hours or so?  Would specifying the aggregationType
to Daily have a different result than Summary?  Should I be calling a
different API altogether?

Thanks again,
Ken

On Dec 17, 1:25 pm, AdWords API Advisor <adwordsapiadvi...@google.com>
wrote:
> Hello Ken,
>
>  validateReportJob() will only flag issues that will prevent a report
> from being run. For what I assume are legacy reasons, the Report
> Center does support running reports directly against MCC accounts (I
> think, long ago, you could create campaigns within MCC accounts), so
> it didn't get flagged as being invalid. And, in fact, the report ran--
> it just didn't have any useful info.
>
>  Sorry for the confusion with the .NET client library.
>
> Cheers,
> -Jeff Posnick, AdWords API Team
>
> On Dec 17, 2:30 pm, API User from Z <jojo.roque+...@zazzle.com> wrote:
>
> > Hi Jeff,
>
> > That was it!  Thank you for pointing that out.  I'm using .NET 2.0 so
> > I would rather you guys switched to 2.0 too.
>
> > Going back to this problem.  Why didn't the validateReportJob call
> > catch this problem?  It should be an obvious error that it could throw
> > an exception on.
>
> > Thanks again,
> > Ken
>
> > On Dec 17, 7:57 am, AdWords API Advisor <adwordsapiadvi...@google.com>
> > wrote:
>
> > > Hello Ken,
>
> > >  You're running into one of the more... interesting... aspects of
> > > the .NET client library. To quote from the README:
>
> > > "In the .NET 1.1 SOAP layer primitive types do not get serialized by
> > > default.
> > > .NET has no way of specifying null for a variable of a primitive type.
> > > If a
> > > primitive type variable is a binding to a SOAP paramer defined in the
> > > WSDL as
> > > nillable="true", in order for the variable to be serialized you need
> > > to set a
> > > variable <parameterName>Specified to true in order for it to be
> > > serialized.
> > >     newCampaign.budgetAmount = 1000000L;
> > >     newCampaign.budgetAmountSpecified = true;
> > > The members <parameterName>Specified are an artifact of the .NET SOAP
> > > library
> > > and are not present in the original WSDL."
>
> > > The crossClient attribute of the DefinedReportJob object won't get
> > > properly serialized unless you also set crossClientSpecified to
> > > "true". You can see that it's not present in the SOAP request that
> > > you're sending, and that's causing your empty reports.
>
> > >  On a very related note, I believe that the maintainer of the .NET
> > > client library plans on migrating from the ancient .NET 1.1 WSDL class
> > > generator to the somewhat more recent .NET 2.0 WSDL class generator
> > > with the next major release. This should eliminate the nonsense with
> > > the extra xyzSpecified attributes as well as add a few other niceties.
> > > It also means that if you're still writing your code against the .NET
> > > 1.1 runtime you would not be able to use the official client library.
> > > If you're strongly attached to using the .NET 1.1 runtime (e.g.
> > > VisualStudio 2003), then you should speak up and let us know.
>
> > > Cheers,
> > > -Jeff Posnick, AdWords API Team
>
> > > On Dec 16, 7:46 pm, API User from Z <jojo.roque+...@zazzle.com> wrote:
>
> > > > Hi Jeff,
>
> > > > Thanks for the pointer to the .Net client libraries.  I got the SOAP
> > > > trace for my API calls.  I pasted them below.  I also want to add that
> > > > changing the date to yesterday didn't make any difference.  I still
> > > > got the empty result set.  And the whole reason for making these calls
> > > > is to get the most up to date data, essentially populate our data cube
> > > > with the data from the Client Reports every few hours.  Is there
> > > > another Web Service I can use for that purpose?
>
> > > > I think security of the API requests is not an issue here, because I
> > > > successfully retrieved my usage information using the same HTTP
> > > > headers.
>
> > > > Please let me know what I need to change to get the data from my
> > > > report requests.
>
> > > > Thanks,
> > > > Ken
>
> > > > --------------------------------------------------------
> > > > POST /api/adwords/v13/ReportService HTTP/1.0
> > > > Host: adwords.google.com
> > > > User-agent: Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client
> > > > Protocol 2.0.50727.1433)
> > > > Content-type: text/xml; charset=utf-8
> > > > Content-length: 1730
> > > > SOAPAction: "scheduleReportJob"
> > > > --------------------------------------------------------
> > > > <?xml version="1.0" encoding="utf-8"?>
> > > > <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";
> > > > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
> > > > xmlns:xsd="http://www.w3.org/2001/XMLSchema";>
> > > >   <soap:Header>
> > > >     <applicationToken xmlns="https://adwords.google.com/api/adwords/
> > > > v13">APP_TOKEN</applicationToken>
> > > >     <developerToken xmlns="https://adwords.google.com/api/adwords/
> > > > v13">DEV_TOKEN</developerToken>
> > > >     <email xmlns="https://adwords.google.com/api/adwords/
> > > > v13">MY_EMAIL</email>
> > > >     <password xmlns="https://adwords.google.com/api/adwords/
> > > > v13">MY_PASSWORD</password>
> > > >     <useragent xmlns="https://adwords.google.com/api/adwords/
> > > > v13">Zazzle.SEMTools.SEMTracker</useragent>
> > > >   </soap:Header>
> > > >   <soap:Body>
> > > >     <scheduleReportJob xmlns="https://adwords.google.com/api/adwords/
> > > > v13">
> > > >       <job xsi:type="DefinedReportJob">
> > > >         <endDay>2008-12-15</endDay>
> > > >         <name>Keyword Stats:12/15/2008</name>
> > > >         <startDay>2008-12-15</startDay>
> > > >         <aggregationTypes>Summary</aggregationTypes>
> > > >         <selectedColumns>Keyword</selectedColumns>
> > > >         <selectedColumns>KeywordDestUrlDisplay</selectedColumns>
> > > >         <selectedColumns>FirstPageCpc</selectedColumns>
> > > >         <selectedColumns>QualityScore</selectedColumns>
> > > >         <selectedColumns>MaximumCPC</selectedColumns>
> > > >         <selectedColumns>MaxContentCPC</selectedColumns>
> > > >         <selectedColumns>AdGroupMaxCpa</selectedColumns>
> > > >         <selectedColumns>PreferredCPC</selectedColumns>
> > > >         <selectedColumns>TopPosition</selectedColumns>
> > > >         <selectedColumns>BottomPosition</selectedColumns>
> > > >         <selectedColumns>Impressions</selectedColumns>
> > > >         <selectedColumns>Clicks</selectedColumns>
> > > >         <selectedColumns>Cost</selectedColumns>
> > > >         <selectedColumns>AveragePosition</selectedColumns>
> > > >         <selectedReportType>Keyword</selectedReportType>
> > > >       </job>
> > > >     </scheduleReportJob>
> > > >   </soap:Body>
> > > > </soap:Envelope>
> > > > --------------------------------------------------------
>
> > > > -----SoapResponse at 12/16/2008 4:01:56 PM-----
> > > > Content-type: text/xml; charset=utf-8
> > > > Content-length: 1134
> > > > SOAPAction: "scheduleReportJob"
> > > > --------------------------------------------------------
> > > > <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/
> > > > envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema";
> > > > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";>
> > > >   <soapenv:Header>
> > > >     <responseTime soapenv:actor="http://schemas.xmlsoap.org/soap/actor/
> > > > next" soapenv:mustUnderstand="0" xmlns="https://adwords.google.com/api/
> > > > adwords/v13">135</responseTime>
> > > >     <operations soapenv:actor="http://schemas.xmlsoap.org/soap/actor/
> > > > next" soapenv:mustUnderstand="0" xmlns="https://adwords.google.com/api/
> > > > adwords/v13">1</operations>
> > > >     <units soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next";
> > > > soapenv:mustUnderstand="0" xmlns="https://adwords.google.com/api/
> > > > adwords/v13">500</units>
> > > >     <requestId soapenv:actor="http://schemas.xmlsoap.org/soap/actor/
> > > > next" soapenv:mustUnderstand="0" xmlns="https://adwords.google.com/api/
> > > > adwords/v13">7f046ba7db3749f795c3551d75b67cfd</requestId>
> > > >   </soapenv:Header>
> > > >   <soapenv:Body>
> > > >     <scheduleReportJobResponse xmlns="https://adwords.google.com/api/
> > > > adwords/v13">
> > > >       <scheduleReportJobReturn>606223085</scheduleReportJobReturn>
> > > >     </scheduleReportJobResponse>
> > > >   </soapenv:Body>
> > > > </soapenv:Envelope>
> > > > --------------------------------------------------------
>
> > > > On Dec 16, 12:50 pm, AdWords API Advisor
>
> > > > <adwordsapiadvi...@google.com> wrote:
> > > > > Hello Ken,
>
> > > > >  To start with, I wouldn't recommend running a report for the current
> > > > > day--it's recommended that you wait until at least 6 hours after
> > > > > midnight in your local timezone before requesting a report for the
> > > > > previous day. The data you get back for the current day will almost
> > > > > definitely be incomplete. I wouldn't expect it to be all zeros, like
> > > > > you're seeing, but as a first step could you try setting the day in
> > > > > question to yesterday?
>
> > > > >  In general, though, I think you're running into issues related to the
> > > > > credentials you're providing in your SOAP request--what I talked about
> > > > > in my last message in that thread you mentioned. Seeing either the
> > > > > SOAP request you're making or if you'd rather not post that due the
> > > > > email addresses, just providing the value of the requestId SOAP
> > > > > response header from your scheduleReportJob() response would be the
> > > > > best way to debug that. I can't tell whether you're using .NET or
> > > > > Java, or whether you're using the official client libraries for each
> > > > > language. If you are using the client library in one of those
> > > > > languages, take a look at the README file that comes with it--I
> > > > > believe it should have an example of how to turn on SOPA logging to
> > > > > get that info.
>
> > > > > Cheers,
> > > > > -Jeff Posnick, AdWords API Team
--~--~---------~--~----~------------~-------~--~----~
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