【问题标题】:how can I get ipAddress info from criterion?如何从标准中获取 ipAddress 信息?
【发布时间】:2015-09-18 08:50:38
【问题描述】:

我正在使用 Google Adwords,目前无法获得具体信息。在我的 Adwords 帐户中,我使用 3 个 IP 设置了“IP 地址排除”。我想从我的代码中获取这些 IP:

AdWordsUser user = new AdWordsUser();
var campaignService = (CampaignCriterionService)user.GetService(AdWordsService.v201506.CampaignCriterionService);
int offset = 0;
        int pageSize = 500;

        var page = new CampaignCriterionPage();
        String awql = "SELECT Id where IsNegative = true ORDER BY Id ASC LIMIT " + offset + "," + pageSize;
try
        {
            do
            {   
                page = campaignService.query(awql);

                // Display the results.
                if (page != null && page.entries != null)
                {
                    int i = offset;
                    foreach (var item in page.entries)
                    {
                        var t = item; //my work logic here ....                           
                        i++;
                    }
                }
                offset += pageSize;
            } while (offset < page.totalNumEntries);
            Debug.WriteLine("Number of items found: {0}", page.totalNumEntries);
        }
        catch (Exception e)
        {
            throw new System.ApplicationException("Failed to retrieve campaigns", e);
        }

查询返回结果数:3,但没有关于 ipAddress 的实际信息(ipAddress contains null)。

我能做什么?

【问题讨论】:

  • 您好,您的问题没有解决方案,但也许您可以使用awql.me 更轻松地调试您的查询,这是一个查看 AWQL 查询结果的免费工具。有一个在线帮助和一个帮助构建查询。
  • 感谢您的回答!我真的很感谢你的建议。目前,我已经找到了解决这个问题的方法,并且我正在开发我的另一部分。祝你工作愉快!

标签: c# google-ads-api awql


【解决方案1】:

不幸的是,我不相信 AWQL 为被阻止 IP 的地址提供选择器。在任何情况下,您在上面使用的 AWQL 语句肯定不会提供它,它只带回 Id 字段:

String awql = "SELECT Id where IsNegative = true ORDER BY Id ASC LIMIT " + offset + "," + pageSize; try

这就是您的响应中值为 null 的原因。

我认为可能的唯一方法是使用该服务的SelectorPredicate 对象,并使用get() 方法而不是query() 方法。

此解决方案适用于我(诚然与更高版本的 API 一起使用)

var campaignCriterionService = (CampaignCriterionService)user.GetService(AdWordsService.v201601.CampaignCriterionService);
int offset = 0;
int pageSize = 500;

var page = new CampaignCriterionPage();

try
{
    do
    {
        page = campaignCriterionService.get(new Selector
        {
            fields = new string[] { IpBlock.Fields.Id, IpBlock.Fields.IpAddress },
            predicates = new Predicate[]
            {
                new Predicate
                {
                    field = IpBlock.Fields.CriteriaType,
                    @operator = PredicateOperator.EQUALS,
                    values = new string[] { "IP_BLOCK" }
                }
            }
        });

        // Display the results.
        if (page != null && page.entries != null)
        {
            int i = offset;
            foreach (var item in page.entries)
            {
                var t = item; //my work logic here ....                           
                i++;
            }
        }
        offset += pageSize;
    } while (offset < page.totalNumEntries);
    Debug.WriteLine("Number of items found: {0}", page.totalNumEntries);
}
catch (Exception e)
{
    throw new System.ApplicationException("Failed to retrieve campaigns", e);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-22
    • 2012-04-04
    • 2020-09-07
    • 1970-01-01
    • 2011-11-16
    • 2011-11-23
    相关资源
    最近更新 更多