如何从Criterion获取IP地址信息?

4

我正在使用Google Adwords,但目前无法获取特定信息。在我的Adwords账户中,我设置了“IP地址排除”功能,其中有3个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为空)。

我该怎么办?


1
嗨,我没有关于你问题的解决方案,不过也许你可以使用 https://www.awql.me 轻松调试查询。这是一个免费的工具,用来查看 AWQL 查询结果。网站提供在线帮助和助手来构建查询语句。 - bastien
谢谢你的回答!我非常感激你的建议。目前,我已经找到了解决这个问题的方法,并且正在处理我的开发的另一部分。祝你工作愉快! - Tsvi Girsh
1个回答

2

很遗憾,我认为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);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接