c# - 如何从标准中获取 ip 地址信息?

标签 c# google-ads-api awql

我正在使用 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 包含 null)。

我能做什么?

最佳答案

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

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

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

我认为唯一可行的方法是亲自动手为该服务使用 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);
}

关于c# - 如何从标准中获取 ip 地址信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32647758/

相关文章:

jquery - 将 div 放在广告上方而不是下方

javascript - 使用 Google Adwords 脚本获取自定义列/字段

javascript - 如何使用 AWQL 获取 'Hour and day of the week' 报告

c# - 将图像上传到 imgur 导致 : The Uri string is too long

php - 匹配 Google adwords 引荐来源网址

google-ads-api - 谷歌广告词 : "An error occurred. Please try again later." message

javascript - 解析 'Parsing Error: Please check your selector. (line XX)' Javascript/AWQL

c# - 如何获得*互联网* IP?

c# - 如何在 C# 和 C++ 代码之间共享常量?

c# - 为 SpriteRenderer 添加高亮颜色功能