using RestSharp;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GoogleAdWordsReportPuller
{
class FileGrabber
{
<selector>
<fields>AdGroupName</fields>
<fields>Date</fields>
<fields>AdGroupStatus</fields>
<fields>CampaignName</fields>
<fields>Impressions</fields>
<fields>Clicks</fields>
<fields>Conversions</fields>
<fields>Cost</fields>
</selector>
<reportName>Custom Adgroup Performance Report</reportName>
<reportType>ADGROUP_PERFORMANCE_REPORT</reportType>
<dateRangeType>YESTERDAY</dateRangeType>
<downloadFormat>CSV</downloadFormat>
</reportDefinition>";
string developerToken = "xxxxxxxxxxxxx";
string accessToken = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; // actually a refresh token
public void GetReport()
{
//User-Agent: curl, gzip
//Accept: */*
//Accept-Encoding: gzip
//Authorization: Bearer [Enter OAuth 2.0 access token here]
//developerToken: [Enter developerToken here]
//clientCustomerId: [Enter clientCustomerID here]
//Content-Length: 784
//Expect: 100-continue
//Content-Type: multipart/form-data; boundary=------------------------12d01fae60c7b559
var client = new RestClient(clientUrl);
var request = new RestRequest(Method.POST);
// set http headers
request.AddHeader("User-Agent", "curl, gzip");
request.AddHeader("Accept", "*/*");
request.AddHeader("Accept-Encoding", "gzip");
request.AddHeader("Authorization", accessToken); // tried request.AddHeader("Authorization", "Bearer " + accessToken);
request.AddHeader("developerToken", developerToken);
request.AddHeader("clientCustomerId", accountId);
request.AddHeader("Content-Length", "784");
//request.AddHeader("Expect", "100-continue");
request.AddHeader("Content-Type", "multipart/form-data; boundary=------------------------12d01fae60c7b559");
//set request parameters
request.AddParameter("__rdxml", reportDefinition); // adds to POST or URL querystring based on Method
// execute the request
IRestResponse response = client.Execute(request);
var content = response.Content; // raw content as string
}
}
}