AdWordsUser user = new AdWordsUser();
CampaignService campaignService = (CampaignService)user.GetService(AdWordsService.v201409.CampaignService); DataService dataService = (DataService)user.GetService(AdWordsService.v201409.DataService); AdGroupService adGroupService = (AdGroupService)user.GetService(AdWordsService.v201409.AdGroupService);
Selector CampaignServiceSelector = new Selector(); CampaignServiceSelector.fields = new string[] { "Name", "Id", "Status" };
Selector DataServiceSelector = new Selector(); DataServiceSelector.fields = new string[] {"LocalClicks", "LocalImpressions"};
Selector adGroupServiceSelector = new Selector(); adGroupServiceSelector.fields = new string[] { "Status", "Name" };
var campaignInfo = campaignService.get(CampaignServiceSelector); var dataServiceInfo = dataService.getCriterionBidLandscape(DataServiceSelector); var adGroupServiceInfo = adGroupService.get(adGroupServiceSelector);
string URL = "https://adwords.google.com/api/adwords/reportdownload/v201409";
string authToken = "xxxxxxx"; string clientId = "xxxxxx"; string fileName = "prueba"; string developerToken = "xxxxxx"; var request = WebRequest.Create(URL) as HttpWebRequest; request.ContentType = "application/x-www-form-urlencoded"; request.Method = "POST"; request.Headers.Add("Authorization", "Bearer " + authToken ); request.Headers.Add("developerToken", developerToken); request.Headers.Add("clientCustomerId", clientId);
string xml = @"<reportDefinition> <selector> <fields>CampaignId</fields> <fields>Id</fields> <fields>Impressions</fields> <fields>Clicks</fields> <fields>Cost</fields> <predicates> <field>Status</field> <operator>IN</operator> <values>ENABLED</values> <values>PAUSED</values> </predicates> </selector> <reportName>Custom Adgroup Performance Report</reportName> <reportType>ADGROUP_PERFORMANCE_REPORT</reportType> <dateRangeType>LAST_7_DAYS</dateRangeType> <downloadFormat>CSV</downloadFormat> </reportDefinition>";
using (var sw = new StreamWriter(request.GetRequestStream())) { sw.Write("__rdxml=" + HttpUtility.UrlEncode(xml)); }
using (var httpWebResponse = request.GetResponse() as HttpWebResponse) { if (httpWebResponse.StatusCode == HttpStatusCode.OK) { using (Stream stream = httpWebResponse.GetResponseStream()) { using (FileStream fileStream = File.Create(string.Format("{0}.csv", fileName))) { stream.CopyTo(fileStream); } } } }
Content-Type: application/x-www-form-urlencodedAuthorization: Bearer ****developerToken: ****clientCustomerId: ****Host: adwords.google.comContent-Length: 1180Expect: 100-continueConnection: Keep-Alive
__rdxml=%3creportDefinition%3e%0d%0a+++++++++++++++++++++++%3cselector%3e%0d%0a++++++++++++++++++++++++%3cfields%3eCampaignId%3c%2ffields%3e%0d%0a++++++++++++++++++++++++%3cfields%3eId%3c%2ffields%3e%0d%0a++++++++++++++++++++++++%3cfields%3eImpressions%3c%2ffields%3e%0d%0a++++++++++++++++++++++++%3cfields%3eClicks%3c%2ffields%3e%0d%0a++++++++++++++++++++++++%3cfields%3eCost%3c%2ffields%3e%0d%0a++++++++++++++++++++++++%3cpredicates%3e%0d%0a++++++++++++++++++++++++++%3cfield%3eStatus%3c%2ffield%3e%0d%0a++++++++++++++++++++++++++%3coperator%3eIN%3c%2foperator%3e%0d%0a++++++++++++++++++++++++++%3cvalues%3eENABLED%3c%2fvalues%3e%0d%0a++++++++++++++++++++++++++%3cvalues%3ePAUSED%3c%2fvalues%3e%0d%0a++++++++++++++++++++++++%3c%2fpredicates%3e%0d%0a++++++++++++++++++++++%3c%2fselector%3e%0d%0a++++++++++++++++++++++%3creportName%3eCustom+Adgroup+Performance+Report%3c%2freportName%3e%0d%0a++++++++++++++++++++++%3creportType%3eADGROUP_PERFORMANCE_REPORT%3c%2freportType%3e%0d%0a++++++++++++++++++++++%3cdateRangeType%3eLAST_7_DAYS%3c%2fdateRangeType%3e%0d%0a++++++++++++++++++++++%3cdownloadFormat%3eCSV%3c%2fdownloadFormat%3e%0d%0a++++++++++++++++++++%3c%2freportDefinition%3e
HTTP/1.1 400 Bad RequestContent-Type: text/xmlDate: Thu, 26 Mar 2015 20:02:41 GMTExpires: Thu, 26 Mar 2015 20:02:41 GMTCache-Control: private, max-age=0X-Content-Type-Options: nosniffX-Frame-Options: SAMEORIGINX-XSS-Protection: 1; mode=blockServer: GSEAccept-Ranges: noneVary: Accept-EncodingTransfer-Encoding: chunked
e1<?xml version="1.0" encoding="UTF-8" standalone="yes"?><reportDownloadError><ApiError><type>AuthenticationError.OAUTH_TOKEN_INVALID</type><trigger><null></trigger><fieldPath></fieldPath></ApiError></reportDownloadError>0
ConfigureUserForOAuth();
ReportDefinition definition = new ReportDefinition();
definition.reportName = "CAMPAIGN_PERFORMANCE_REPORT"; definition.reportType = ReportDefinitionReportType.CRITERIA_PERFORMANCE_REPORT; definition.downloadFormat = DownloadFormat.CSV; definition.dateRangeType = ReportDefinitionDateRangeType.ALL_TIME;
// Create selector. Selector selector = new Selector(); selector.fields = new string[] {"CampaignId", "CampaignStatus", "CampaignName"};
//Predicate predicate = new Predicate(); //predicate.field = "Status"; //predicate.@operator = PredicateOperator.IN; //predicate.values = new string[] { "ENABLED", "PAUSED" }; //selector.predicates = new Predicate[] { predicate };
definition.selector = selector; definition.includeZeroImpressions = true;
string filePath = ExampleUtilities.GetHomeDir() + Path.DirectorySeparatorChar + "prueba.csv";
try { ReportUtilities utilities = new ReportUtilities(user, "v201502", definition); using (ReportResponse response = utilities.GetResponse()) { response.Save(filePath); } //Console.WriteLine("Report was downloaded to '{0}'.", filePath); ClientScript.RegisterStartupScript(this.GetType(), "yourMessage", "alert('" + "File Downloaded!" + "');", true); } catch (Exception ex) { throw new System.ApplicationException("Failed to download report.", ex); }