Как я могу получить информацию ipAddress из критерия?
Я работаю с 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 ответ
К сожалению, я не верю, что AWQL предоставляет селектор для адреса заблокированного IP. В любом случае, он, конечно, НЕ поставляется с оператором AWQL, который вы использовали выше, который только возвращает поле Id:
String awql = "SELECT Id where IsNegative = true ORDER BY Id ASC LIMIT " + offset + "," + pageSize; try
Вот почему значение пусто в вашем ответе.
Единственный способ, которым я верю, что это возможно - это испачкать руки Selector
а также Predicate
объекты для этой услуги и использовать 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);
}