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