0

Я пытаюсь применить сегмент для запроса через клиент Google Analytics .NET, но я не могу заставить его работать. Вот то, что я пытался:Как использовать сегмент с использованием клиента Google Analytics .NET

var segments = analyticsService.Management.Segments.List().Execute(); 
var engagedTeamsSegment = segments.Items.FirstOrDefault(x => x.Name.Equals("Engaged Teams", StringComparison.OrdinalIgnoreCase)); 

var format = "yyyy-MM-dd"; 
var today = DateTime.UtcNow.Date; 
var thirtyDaysAgo = today.Subtract(TimeSpan.FromDays(30)); 
var metrics = engagedTeamsSegment.Definition.Replace(';', ','); 

var gaData = analyticsService 
    .Data.Ga 
    .Get($"ga:{profile.Id}", today.ToString(format), thirtyDaysAgo.ToString(format), metrics) 
    .Execute(); 

Это становится мне ошибку ниже

Необработанное исключение типа «Google.GoogleApiException» произошло в Google.Apis.dll

Дополнительная информация: Google.Apis.Requests.RequestError

Недопустимое значение пользователей: состояние :: ga: dimension2! = 0, ga: sessionCount> = 2, ga: daysSinceLastSession < = 14 '. Значения должны соответствовать следующему регулярному выражению: "га:. + [400]

Ошибки [

Сообщение [Недопустимо значение «пользователей :: состояние :: га: dimension2 = 0, га: sessionCount > = 2, ga: daysSinceLastSession < = 14 '. Значения должны соответствовать следующему регулярному выражению: 'га:. +'] Местоположение [Метрики - параметр] Причина [invalidParameter] Домен [глобальный]

]

Я, вероятно, делать что-то неправильно, но не конечно какой. Есть идеи?

+0

Вы можете проверить, если ваш запрос работает в https://developers.google.com/apis-explorer/#p/analytics/v3/, используя свои параметры? Просто чтобы убедиться, что вы делаете правильный звонок для бэкэнда Analytics. – peleyal

+0

@peleyal постарается. Эми, я делаю правильные вещи, передавая 'includedTeamsSegment.Definition.Replace (';', ',')' в качестве параметра показателей выше? Кажется, это может быть то место, где я делаю это неправильно. – tugberk

+0

Прошу прощения, я не знаком с API, я буду ждать, когда кто-то, кто больше знаком с Analytics, ответит здесь. Это не я ... извините. – peleyal

ответ

1

Нашли решение благодаря this question. В запросе был параметр Segment. Ниже код сделал трюк:

var segments = analyticsService.Management.Segments.List().Execute(); 
var engagedTeamsSegment = segments.Items.FirstOrDefault(x => x.Name.Equals("Engaged Teams", StringComparison.OrdinalIgnoreCase)); 

var format = "yyyy-MM-dd"; 
var today = DateTime.UtcNow.Date; 
var thirtyDaysAgo = today.Subtract(TimeSpan.FromDays(30)); 

var gaDataRequest = analyticsService 
    .Data.Ga 
    .Get($"ga:{profile.Id}", thirtyDaysAgo.ToString(format), today.ToString(format), "ga:users"); 

gaDataRequest.Segment = engagedTeamsSegment.Definition; 

var gaData = gaDataRequest.Execute();