Приветствую всех!
Задача: получить данные по целям с Яндекс.Метрика. Просмотры, визиты можно вывести в виде информера. А вот по целям как создать запросы через reachGoal?
И так, чтобы общее количество выводить, а не за какой-то период.
Суть в том, чтобы вывести для посетителей показания, сколько раз было просмотрено фотографий, воспроизведено видео, скачано видео и т.д.
Заранее благодарен.
Я практично не работал с этим вопросом, поэтому относись к ответу без полного доверия. Все равно попробую подсказать куда смотреть.
Точка входа в целом в апи которое дает данные по целям Введение | API Яндекс Метрики
Вот тут смыслы для goal-ов (конверсий в терминологии документации)
Are you not a robot?. Тебе интересен смысл для reaches
.
Тебе надо найти айдишники goal-ов создаваемых через reachGoal
. (будет развернутый текст от ИИ в конце моего ответа)
Вот какой код ИИ нагенерировал в ответ на твой запрос. Тебе надо найти айдишники конверсий создаваемых через reachGoal
и поиграться с параметрами апи (подобрать и сгенерировать даты). Это пример запроса по одному goal-у, в разрезе дат по характеристике reaches
// Функция для получения данных по целям
function getGoalsStats() {
const TOKEN = 'ВАШ_ТОКЕН';
const COUNTER_ID = 'ВАШ_СЧЕТЧИК_ID';
// Запрос к API
fetch(`https://api-metrika.yandex.net/stat/v1/data?
metrics=ym:s:goals<goal_id>reaches&
dimensions=ym:s:date&
date1=2010-01-01&
date2=today&
id=${COUNTER_ID}`, {
headers: {
'Authorization': `OAuth ${TOKEN}`
}
})
.then(response => response.json())
.then(data => {
// Обработка полученных данных
displayGoalsData(data);
});
}
ИИшный ответ где взять айдишник goal
-а
goal_id можно найти несколькими способами:
- В интерфейсе Яндекс.Метрики:
- Зайдите в Яндекс.Метрику
- Перейдите в раздел “Настройки” → “Цели”
- У каждой цели будет свой ID в списке целей или в URL при редактировании цели
- Через API Яндекс.Метрики:
// Получение списка целей через API
fetch(https://api-metrika.yandex.net/management/v1/counter/${COUNTER_ID}/goals
, {
headers: {
‘Authorization’: OAuth ${TOKEN}
}
})
.then(response => response.json())
.then(data => {
console.log(data.goals); // Здесь будет список целей с их ID
});
- В URL при редактировании цели:
Когда вы открываете редактирование цели, в URL будет параметр вида:
https://metrika.yandex.ru/goals?id=XXXXX&goal_id=YYYYY
Где YYYYY - это и есть ID цели.
- Через JavaScript-код на странице:
// Получить все цели счётчика
ym(COUNTER_ID, ‘getGoals’, function(goals) {
console.log(goals); // Объект со всеми целями и их ID
});
- В коде отправки цели:
// При отправке цели можно использовать как имя цели, так и её ID
ym(COUNTER_ID, ‘reachGoal’, ‘GOAL_NAME’); // По имени цели
// или
ym(COUNTER_ID, ‘reachGoal’, ‘goal_GOAL_ID’); // По ID цели
Пример использования ID цели в запросе к API:
// Для цели с ID 123456
const goalMetrics = ‘ym:s:goal123456reaches’; // Формат: goalreaches
fetch(https://api-metrika.yandex.net/stat/v1/data?metrics=${goalMetrics}&id=${COUNTER_ID}
, {
headers: {
‘Authorization’: OAuth ${TOKEN}
}
})
.then(response => response.json())
.then(data => {
console.log(data); // Данные по достижениям цели
});
Важно помнить:
- ID цели - это числовое значение
- При создании новой цели ID присваивается автоматически
- ID цели уникален в пределах одного счётчика
- После удаления цели её ID больше не используется для новых целей
ID счётчика и целей я знаю, как достать (они открыто написаны) А что это такое Ваш Токен?
oauth авторизация.
Данные по метрикам логично недоступны обычным людям, а доступны только владельцу метрики. Токен может получить только владелец (механизма не знаю, нужно читать документацию)
Кстати, нехорошая идея вставлять токен на клиент. Любой скучаюший школьник может его взять и с ним подергать апи и как увидеть данные по метрикам так и что-то поменять.
По-хорошему надо бы все данные по метрикам подтянуть на сервере и потом только отдать браузеру. Так пользователь не сможет никак получить доступ к данным ему не предназначающимся.
Но смотри-читай сам. Может там можно сделать токены с ограниченным доступов к данным. Тогда его можно вставлять на клиент.
Благодарю! С этим пока повременю. Но смысл понятен.