Возможно, есть более изящный способ получения ключевых слов, но я обнаружил, что мне нужен специальный отчет.Я не мог заставить это работать с клиентской библиотекой AdWords .Net, но создание HTTP-запроса старомодным способом не является большой работой.
Это мой код для создания заголовка запроса:
var request = (HttpWebRequest)WebRequest.Create(Properties.Settings.Default.AdHocReportsURL);
request.ContentType = "application/x-www-form-urlencoded";
request.Method = "POST";
request.Headers.Add("Authorization: GoogleLogin auth=" + _authToken);
request.Headers.Add("clientCustomerId: " + _customerID.ToString("000-000-0000"));
request.Headers.Add("developerToken: " + _developerToken);
Затем вам нужно добавить спецификацию XML для вашего специального отчета.Вот мой метод:
private void AppendReportSpec(HttpWebRequest request, ReportType reportType, IEnumerable<string> fields, DateTime startDate, DateTime endDate)
{
var reportSpec = new StringBuilder("<reportDefinition><selector>");
foreach (string field in fields)
{
reportSpec.Append("\t\t<fields>");
reportSpec.Append(field);
reportSpec.AppendLine("</fields>");
}
reportSpec.Append
(
@"<dateRange><min>{0}</min><max>{1}</max></dateRange>
</selector>
<reportName>Whatever</reportName>
<reportType>{2}</reportType>
<dateRangeType>CUSTOM_DATE</dateRangeType>
<downloadFormat>CSV</downloadFormat>
</reportDefinition>"
);
string reportXml = String.Format(reportSpec.ToString(), startDate.ToString("yyyyMMdd"), endDate.ToString("yyyyMMdd"), reportType);
using (var requestContent = new StreamWriter(request.GetRequestStream()))
requestContent.Write("__rdxml=" + HttpUtility.UrlEncode(reportXml));
}
Наконец, вы можете проанализировать значение в request.GetResponse()
, чтобы получить ваши данные.
См. http://code.google.com/apis/adwords/docs/appendix/reports.html#search-query для списка типов отчетов (выВам, вероятно, понадобится KEYWORDS_PERFORMANCE_REPORT) и поля, разрешенные в каждом.