我需要帮助如何获得给定关键字的每月搜索次数。
我获得了Google Adwords API帐户,还加了钱,所以我可以提出很多请求。但我无法从示例中找到代码,如何获取此信息。
我正在使用C#.NET,并已下载Google.AdWords API dll。
你能给我一些简单的例子吗?
答案 0 :(得分:3)
可能有一种更优雅的方式来获取关键字,但我发现我需要一个临时报告。我无法使用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)以及每个报告类型中允许的字段。