Hello Afzaal, It looks like you're writing Perl code, so you might want to try using the third-party Perl client library for the AdWords API:
http://search.cpan.org/~rohan/Google-Adwords-v1.9.3/ You can use SOAP::Lite directly if you want, but it might be simpler for you to make use of Google::AdWords. Anyway, regarding the XML you posted above, that's mostly correct, but the lines you had questions about are not right: <selectedColumns AdId="127650">CreativeId</selectedColumns> <selectedColumns CampaignId="1786">Campaign</selectedColumns> <selectedColumns AdGroupId="5000001207">AdGroup</selectedColumns> There is no filter to make a report run only against a specific creative id. If you do want to limit your report to only a specific ad group id and campaign id (though really, you'd only need to limit based on ad group id, since the campaign id is assumed from the ad group id), the syntax would be: <campaigns>1786</campaigns> <adGroups>5000001207</adGroups> <adGroups>123456789</adGroups> <!--just illustrating how multiple ad groups would look--> I also wouldn't recommend including the KeywordMinCPC <selectedColumns>, as it's been deprecated in favor of FirstPageCpc. Stepping back a bit, though, if all you care about is the stats for one particular ad then you might be better off just making use of the getAdStats() method: http://code.google.com/apis/adwords/docs/developer/AdService.html#getAdStats It will use fewer API units than running a report and its more straightforward. I'm assuming that later on you're going to want to get info for more than one ad, though, and as you scale up it will make more sense to run a report. Cheers, -Jeff Posnick, AdWords API Team On Nov 16, 6:19 am, Afzaal <[EMAIL PROTECTED]> wrote: > Hi Jeff, > > The help you provided in the above reply was quite good. I am now just > trying to generate a report against a particular advertisement. I am > also pasting the code that i am using in generating a report against a > specific report. Can you just have a look at it and let me know that > if its correct? If there is something wrong can you guide me through > by writing some lines of correct code? > > Also i have added my comments like ==> in the following code while > creating $report_job xml string. > > I would also like to mention here that i am trying to show the advert > report for complete duration from the date it was created. And in > below code i have used some dumy dates. > > ============================= > $namespace = 'https://sandbox.google.com/api/adwords/v12'; > $report_service = SoapClientFactory::GetClient($namespace . '/ > ReportService?wsdl', 'wsdl'); > $report_service->setHeaders($headers); > $debug = 0; > > # Create report job structure. > $report_job = > '<selectedReportType>Creative</selectedReportType>' . > '<name>Sample Keyword Report</name>' . > '<aggregationTypes>Summary</aggregationTypes>' . > '<adWordsType>SearchOnly</adWordsType>' . > '<keywordType>Broad</keywordType>' . > '<startDay>2008-01-01</startDay>' . > '<endDay>2008-12-31</endDay>' . > '<selectedColumns > AdId="127650">CreativeId</selectedColumns>' . > ==> is this correct way of passing ad id? > '<selectedColumns > CampaignId="1786">Campaign</selectedColumns>' . > ==> is this correct way of passing campaign id? > '<selectedColumns AdGroupId="5000001207">AdGroup</ > selectedColumns>' . ==> is this correct way of passing group id? > '<selectedColumns>Keyword</selectedColumns>' . > '<selectedColumns>KeywordStatus</selectedColumns>' . > '<selectedColumns>KeywordMinCPC</selectedColumns>' . > '<selectedColumns>KeywordDestUrlDisplay</selectedColumns>' . > '<selectedColumns>Impressions</selectedColumns>' . > '<selectedColumns>Clicks</selectedColumns>' . > '<selectedColumns>CTR</selectedColumns>' . > '<selectedColumns>AveragePosition</selectedColumns>'; > $request_xml = > '<validateReportJob>' . > '<job > xmlns:impl="https://adwords.google.com/api/adwords/v12" ' . > 'xsi:type="impl:DefinedReportJob">' . > $report_job . > '</job>' . > '</validateReportJob>'; > > # Validate report. > $report_service->call('validateReportJob', $request_xml); > if ($debug) show_xml($report_service); > if ($report_service->fault) show_fault($report_service); > > # Schedule report. > $request_xml = > '<scheduleReportJob>' . > '<job > xmlns:impl="https://adwords.google.com/api/adwords/v12" ' . > 'xsi:type="impl:DefinedReportJob">' . > $report_job . > '</job>' . > '</scheduleReportJob>'; > $job_id = $report_service->call('scheduleReportJob', > $request_xml); > $job_id = $job_id['scheduleReportJobReturn']; > if ($debug) show_xml($report_service); > if ($report_service->fault) show_fault($service); > > # Wait for report to finish. > $request_xml = > '<getReportJobStatus>' . > '<reportJobId>' . > $job_id . > '</reportJobId>' . > '</getReportJobStatus>'; > $status = $report_service->call('getReportJobStatus', > $request_xml); > $status = $status['getReportJobStatusReturn']; > if ($debug) show_xml($report_service); > if ($report_service->fault) show_fault($service); > while ($status != 'Completed' and $status != 'Failed') { > //echo 'Report job status is "' . $status . '".' . "\n"; > sleep(30); > $status = $report_service->call('getReportJobStatus', > $request_xml); > $status = $status['getReportJobStatusReturn']; > if ($debug) show_xml($report_service); > if ($report_service->fault) show_fault($service); > } > > if ($status == 'Failed') { > echo 'Report job generation failed.' . "\n"; > return; > } > > # Download report. > $request_xml = > '<getReportDownloadUrl>' . > '<reportJobId>' . > $job_id . > '</reportJobId>' . > '</getReportDownloadUrl>'; > $report_url = $report_service->call('getReportDownloadUrl', > $request_xml); > $report_url = $report_url['getReportDownloadUrlReturn']; > if ($debug) show_xml($report_service); > if ($report_service->fault) show_fault($service); > ============================= > > Your quick response will be highly appriciated. > > Regards, > > Afzaal. > > On Nov 7, 9:28 pm, AdWords API Advisor <[EMAIL PROTECTED]> > wrote: > > > Hello Afzaal, > > > I think you really need to spend some time familiarizing yourself > > with AdWords reports in general. A good place to start would be to use > > the AdWords web interface to schedule some reports (which will not > > incur any usage fees) and find the right mix of columns and report > > types to get the data you're looking for. Once you have done that, you > > should be able to map the request you made in the AdWords web > > interface into a specific report definition in the AdWords API, > > starting with the selectedReportType: > > > http://code.google.com/apis/adwords/docs/developer/DefinedReportJob.h... > > > and then choosing the corresponding selectedColumns. > > > If you schedule your report using the AdWords API from the context of > > your MCC account then you can run a cross-client report and get data > > from one or more of the AdWords accounts underneath the MCC at one > > time. See > > > http://code.google.com/apis/adwords/docs/developer/adwords_api_servic... > > > Cheers, > > -Jeff Posnick, AdWords API Team > > > On Nov 7, 9:52 am, Afzaal <[EMAIL PROTECTED]> wrote: > > > > Hi Jeff, > > > > Thanks for your reply. > > > > Can you tell me that is there any possibility of the following: > > > > 1. Can we get a report against a specific campaign? > > > > 2. Can we get a report against a specific group? > > > > 3. Can we get a report against a specific advertisement? > > > > 4. Is the report generated is only for one google adword account? > > > > 5. For multiple reports do we need multiple google adword accounts? > > > > Regards, > > > > Afzaal. > > > > On Nov 6, 9:17 pm, AdWords API Advisor <[EMAIL PROTECTED]> > > > wrote: > > > > > Hello Afzaal, > > > > > Once your report finishes and you retrieve its URL with > > > > getGzipReportDownloadUrl()/getReportDownloadUrl() you should retrieve > > > > the report using some sort of HTTP client library--shelling out to > > > > curl might be appropriate for the PHP use case. Once you retrieve the > > > > report you should store it locally and expose a link to the local copy > > > > of the report in your web interface. > > > > > It's tempting to just expose links to the URLs returned by > > > > getReportDownloadUrl() in your web interface, but those URLs are not > > > > valid indefinitely and will expire after a period of time, so you > > > > really should retrieve the report right away and serve it locally. > > > > > Cheers, > > > > -Jeff Posnick, AdWords API Team > > > > > On Nov 6, 1:51 am, Afzaal <[EMAIL PROTECTED]> wrote: > > > > > > Hi Jeff, > > > > > > Thanks for your reply and sorry for the last email by which you > > > > > couldn't get what i wanted to say. Ok here i am going to explain in a > > > > > bit detail what i am doing and what i further require. > > > > > > I have already created Campaigns, Groups and Advertisements and all > > > > > these 3 scenarios are working fine. Now my client requires a > > > > > functionality that he can generate reports against different campaigns > > > > > for his customers. My client has further couple of customers and my > > > > > client wants that his customers can login to his website and see the > > > > > reports of the advertisements that they requested. > > > > > > So i am trying to give facility to my client in website admin area > > > > > that he can add / schedule different reports. I have taken the help > > > > > from the code of report scheduling from the following link > > > > > >http://code.google.com/p/adwords-api-php-samples/source/browse/trunk/... > > > > > > By using this everything goes fine even i switch on the debug mode to > > > > > 1, no error is generated. So i just want an idea from you that if the > > > > > report is added successfully how i can show it on my client's website? > > > > > Is there any facility that instead of giving an instant download link > > > > > for the report i can give a reports management area to my client and > > > > > from there he can download any report previously added / scheduled? > > > > > > I hope now you will get what i want, if still anything you further > > > > > require please let me know. > > > > > > Thanks, > > > > > > Regards, > > > > > > Afzaal. > > > > > > On Nov 5, 9:00 pm, AdWords API Advisor <[EMAIL PROTECTED]> > > > > > wrote: > > > > > > > Hello Afzaal, > > > > > > > It's very unclear from what you wrote exactly what kind of guidance > > > > > > you're looking for. Could you please elaborate by explaining which > > > > > > specific AdWords API calls you're making, whether you're getting any > > > > > > errors back, and at what point in the report scheduling process > > > > > > you're > > > > > > running into an issue? > > > > > > > There is sample code for scheduling reports included with all of > > > > > > our > > > > > > AdWords API client libraries, I believe. The normal process > > > > > > involves: > > > > > > > - calling validateReportJob() > > > > > > - calling scheduleReportJob() > > > > > > - periodically calling getReportJobStatus() until the report > > > > > > finishes > > > > > > - calling getGzipReportDownloadUrl()/getReportDownloadUrl() to get > > > > > > the URL of the report > > > > > > - using some HTTP client library to download the report locally > > > > > > > Cheers, > > > > > > -Jeff Posnick, AdWords API Team > > > > > > > On Nov 5, 5:32 am, afzaal <[EMAIL PROTECTED]> wrote: > > > > > > > > Hi Jeff, > > > > > > > > I have some problem in report generation in google adwords. I have > > > > > > > designed the form according to the fields required for adding a > > ... > > read more » --~--~---------~--~----~------------~-------~--~----~ 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 [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/adwords-api?hl=en -~----------~----~----~----~------~----~------~--~---