使用Google Adwords API for .NET获取特定关键字的每月搜索次数

时间:2012-03-29 16:16:11

标签: c# keyword google-adwords

我需要帮助如何获得给定关键字的每月搜索次数。

我获得了Google Adwords API帐户,还加了钱,所以我可以提出很多请求。但我无法从示例中找到代码,如何获取此信息。

我正在使用C#.NET,并已下载Google.AdWords API dll。

你能给我一些简单的例子吗?

1 个答案:

答案 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)以及每个报告类型中允许的字段。