По сути, количество визитов на счетчике сайта - практически единственный способ отображения в открытом доступе данных web-аналитики Яндекса; и это при том, что возможности отчетов Яндекс Метрики, с учетом новых функций сегментации и параметризации - поистине впечатляют. Отличный продукт, вполне достойный того, чтобы потратить время на его изучение. Да, все мы порой бегло анализируем данные Яндекс Метрики, авторизовавшись на Яндексе, и, как правило - не более того... почему? Должным образом структурированные отчеты аналитики, опубликованные на страницах вашего web-ресурса, вполне могли бы способствовать росту его популярности, представляя из себя хорошо оформленные информативные виджеты. Почему бы и нет, кто сказал, что статистика сайта уместна только в бакенде? Например, интерактивно обновляемый перечень самых посещаемых страничек или же популярность сайта в социальных сетях по версии Яндекс Метрика - вполне могли бы не только украсить страницы интернет-портала или корпоративной web-странички, но и привлечь новых посетителей.
Попробуем? Мне, например, раньше как-то не приходило в голову, что, судя по приведенной в начале статьи статистике визитов, структурированной по регионам, странички этого блога пользуются у американцев даже несколько большей популярностью, нежели у европейцев... оригинальный чарт Яндекс Метрика сформирован иначе, и подобное сравнение не сразу бросается в глаза. Хотя, может быть, оно и к лучшему, что "не бросается", в свете последних-то событий? Взгляните; как ни странно, русскоязычный этот сайт по-прежнему немало популярен среди навсегда братского, как мне всю жизнь внушали, народа Украины, с которым теперь уже не разделяет вообще ничего, кроме сущего пустяка: войны... поискав глазами в перечне стран, по какой-то странной и абсурдной, внезапно пришедшей в голову аналогии, Турцию и Сирию - я понял, что кое-какие технические моменты представленного решения еще нуждаются в доработке. Оставим это на будущее; отбросим сейчас попытки очень невеселого юмора и сходу перейдем к технической части.
Прежде всего, следует отметить, что идея обойтись сугубо js - успешного продолжения не получила: Яндекс Метрика явно не желает отдавать правильные корсы (подробнее см. статью Про cross-origin и джаваскрипты), а обращаться к JSONProxy нет никакого желания. Почему так происходит у Яндекса - это уже вопрос к представителям технической поддержки Яндекса; а в ожидании ответа - придется нам с вами прибегнуть в контексте демки к php и Google Charts.
Итак, все несложно; выбираем среди галереи Google Charts понравившийся шаблон, формируем запрос к API и далее прибегаем к несложному циклу для обработки получаемого JSON таким примерно образом... не забудьте, вам придется подставить вместо звездочек номер вашего счетчика на Яндекс Метрика и токен:
<?
$obj = json_decode(file_get_contents('https://api-metrika.yandex.ru/stat/v1/data?id=********&dimensions=ym:s:regionCountry&metrics=ym:s:visits&oauth_token=*************************'), true);
for( $i = 0; $i < 12; $i++){
echo '[', "'", $obj['data'][$i]['dimensions'][0]['name'], "'", ', ', $obj['data'][$i]['metrics']['0'], '],';
}
?>
Вы можете проверить ваш токен на этой страничке, получив посредством API Яндекс Метрика статистику вашего сайта за вчерашний или сегодняшний дни. Приложение не собирает никаких данных, впрочем, если не верите, после теста сгенерируйте токен заново.
Если не указывать специально CSV в качестве формата получения данных, а также временной отрезок - получаем по-дефолту статистику за недельный отрезок времени в формате JSON. Собственно, всегда возможны варианты; например, в контексте сообщения команды Яндекс Метрика о том, что, начиная с 13 февраля 2019 года передача токена авторизации в параметрах URL как устаревшего способа авторизации, перестанет поддерживаться - вы можете реализовать авторизацию по токену в HTTP-заголовке. За подробностями - велкам на форум.
Продолжение темы - в материале API Яндекс Метрика и Highcharts. Попробуйте сравнить возможности Google Charts и Highcharts!
Документация API Яндекс Метрика содержит, в частности, ряд примеров, к которым вы вполне можете обратиться при формировании токена и написании запросов: рекомендую, к слову, использовать именно актуальную версию API взамен устаревшей. Полностью код продемонстрированного виджета Яндекс Метрики всегда доступен на форуме; ну а продолжение, как обычно, следует.