Яндекс руководство разработчика

Время на прочтение
6 мин

Количество просмотров 14K

Привет! Я Илья Назаров, менеджер отдела интернет-продвижения Digital Lab – студии веб- и мобильной разработки. Сегодня разберем просмотр геолокаций из Яндекс.Аудиторий в Excel и Power BI.

Большинство рекламодателей и специалистов по настройке рекламы знают, зачем нужны Яндекс.Аудитории. Один из самых востребованных вариантов – сегменты на основе геолокации. Что может быть проще? Рисуете на карте полигоны или загружаете адреса, указываете радиусы и задаете условия взаимодействия людей с локациями. 

Через несколько часов аудитории готовы: они расскажут про ваш бизнес всем, кто подходит под критерии и пользуется интернетом. Но проходит время. Люди, входившие в аудитории, оказываются недоступны. Или вы получаете доступ к аудитории, созданной кем-то другим. И вот вы уже не помните и не понимаете, вокруг каких локаций и с какими условиями настроены аудитории, даже если они понятно названы. Знакомая ситуация?

Возможности веб-интерфейса Яндекс.Аудиторий по работе с готовыми сегментами сильно ограничены. Максимум вы можете:

  • найти похожих пользователей,

  • поделиться сегментом с кем-нибудь,

  • придумать ему другое название,

  • удалить.

Первые 3 действия требуют четкого понимания того, что именно содержится внутри. Поэтому ревизия давно забытых или чужих аудиторий нередко заканчивается действием 4 и созданием нового сегмента с названием, «по которому точно никогда не забуду, кто там находится».

Вспоминаем все

Есть рабочие варианты проверки того, что же находится внутри геолокации: 

  1. зовете программиста, который покажет свой кунг-фу Python этому Яндексу;

  2. гуглите и пытаетесь сами во всем разобраться;

  3. повторяете за мной и пользуетесь стандартными инструментами специалистов по контекстной рекламе и интернет-маркетологов (например, Excel), а заодно повышаете свою квалификацию.

Хотя мы будем работать напрямую с API Яндекса, никакие навыки программирования не понадобятся.Получить координаты точек из аудитории можно в Excel, но интереснее увидеть их на карте, поэтому предлагаю воспользоваться Power BI. Он покажет их прямо на дашборде (в Excel все аналогично, но о нем – в самом конце).

Устанавливаем Power BI

Скачайте и установите Power BI Desktop. Программа только для Windows, поэтому маководам нужно использовать Parallels Desktop. Регистрация не обязательна: и без нее все замечательно работает.

Шаг 1. Получаем токен для доступа к API Яндекса

Токен – это своего рода пароль, который помогает API Яндекса вас узнавать и отвечать на запросы вашей программы, предоставляя нужные данные. Чтобы его получить, нужно зарегистрировать новое приложение по этой инструкции или воспользоваться моей ссылкой для получения токена.

Но где же моя ссылка? Хочу предупредить: полученный по ссылке токен категорически не рекомендуется давать никому, даже мне. Его обладатель получит доступ к чтению статистики и изменению Яндекс.Метрики, Яндекс.Аудиторий и Яндекс.Директа.

Узнаю ли я ваш токен без вашего ведома? Нет. Вы получите его на странице Яндекс (убедитесь сами по адресной строке), поэтому токен увидите только вы и сам Яндекс.

Сможете ли вы отключить или поменять токен? Да. Достаточно поменять пароль аккаунта Яндекс или отозвать доступ на странице Яндекс.Паспорта в разделе «Входы и устройства» > «Устройства, сервисы и программы».

Зарегистрируйте собственное предложение (на самом деле это просто) или пройдите по этой ссылке на страницу авторизации Яндекса.

Убедитесь, что вы залогинены в нужном аккаунте, и разрешите доступ к нему для приложения Power BI connector.

После нажатия на большую желтую кнопку вы увидите токен.

Пока не закрывайте эту страницу!

Шаг 2. Находим полный список аудиторий

Запустите Power BI.

  1. Нажмите нижнюю часть кнопки Get data («Получить данные»), чтобы открыть меню часто используемых источников данных.

  2. В нижней части меню выберите пункт Blank query.

Откроется редактор Power Query.

Нажмите кнопку Advanced Editor для открытия расширенного редактора. Удалите весь имеющийся там код и вместо него вставьте этот:

let
    token = "", // вставьте свой токен между двойными кавычками
                header = [

        #"Authorization" = "OAuth " & token,
        #"Content-Type" = "application/json" // для GET списка сегментов
],
    Url = "https://api-audience.yandex.ru/v1/management/segments", // список сегментов
    
    Options = [
            Headers = header // заголовки запроса
    ],
     Source = Web.Contents(Url,Options),

    Json = Json.Document(Source),
    Segments = Json[segments],
     getFieldNames = (rec as any) => let

        names = List.Transform(rec, Record.FieldNames),
        combine = List.Combine(names)
    in
        if Value.Is(rec, type record)
        then Record.FieldNames(rec)
        else List.Distinct(combine),
                unpack = 

            Table.FromRecords(Segments,getFieldNames(Segments),MissingField.UseNull)

in
    unpack

Получится примерно следующее:

Теперь во вторую строку (token = “”) вставьте полученный токен между двойными кавычками и нажмите Done. Вы увидите таблицу с сегментами Яндекс.Аудиторий, к которым есть доступ у аккаунта с этим токеном.

Шаг 3. Достаем нужное и отсекаем лишнее

Среди вас наверняка найдутся те, кому не нужно объяснять, что делать дальше. Поэтому рассказываю тем, кто редко или неуверенно пользуется Power BI. Остальные могут воспринимать этот текст как совет, а не руководство к действию.

Для начала выберите в списке аудитории, созданные из геосегментов.

Для фильтрации:

  1. В правой части заголовка колонки type нажмите кнопку с треугольником, направленным вершиной вниз, чтобы открыть меню фильтра.

  2. Оставьте галочку только напротив значения geo.

  3. Нажмите кнопку OК.

Убедитесь, что в колонке status остались только строки со статусом processed (готовые). Если это не так, отфильтруйте колонку status точно так же, как только что фильтровали колонку type. Картинка без комментариев:

Дальше предлагаю убрать лишние столбцы. Делать это не обязательно, но это хорошая привычка не раздувать модель данных, которая будет хранится в оперативной памяти компьютера.

  1. Нажмите на кнопку Manage Columns.

  2. Выберите пункт Choose Columns.

  3. В открывшемся списке оставьте только колонки name и points.

У вас останется таблица из двух колонок: name – название аудитории из интерфейса Яндекс.Аудиторий, points – список географических координат точек внутри нее.

  1. Нажмите кнопку с расходящимися в разные стороны стрелками рядом с заголовком колонки points.

  2. В появившемся меню извлечения элементов из списка выберите Expand to New Rows («Развернуть в новые строки»).

  3. Список координат по каждой аудитории распакуется в новые строки таблицы. В каждой строке будет находиться одна координата. Нужно извлечь оттуда широту и долготу.

  1. Снова нажмите расходящиеся в разные стороны стрелки в правой части заголовка колонки points. Появится меню извлечения элементов из записи.

  2. Просто нажмите OК.

  3. Вы увидите 2 новые колонки: с географической широтой и долготой.

  4. Теперь поменяйте тип данных в таблице: Переключитесь на вкладку Transform («Преобразования») и выделите все колонки, кликая по их заголовкам с зажатой кнопкой Shift (или нажмите Ctrl+A).

  5. Нажмите Detect Data Type («Определить тип данных»).

Данные готовы для загрузки в модель.

Вернитесь на вкладку Home.

  1. Нажмите Close & Apply («Закрыть и применить»).

  2. Окно Power Query Editor автоматически закроется, данные начнут загружаться в модель.

Шаг 4. Рисуем карту

Вернитесь в Power BI Desktop. 

На панели Visualizations («Диаграммы») щелкните по диаграмме Map («Карта») с изображением глобуса.

На рабочей области появится заглушка карты, на месте которой появится сама карта.

  1. Справа на панели Fields появятся загруженные данные с названиями колонок. Схватите мышкой колонку points.latitude и перетащите ее в поле Latitude («Широта») на панели Visualizations. Если в Visualizations не видите Latitude, то выберите заглушку карты щелчком мыши, и поле появится.

  2. Повторите действие, перетащив мышкой points.longitude в поле Longitude («Долгота»).

Вы увидите карту с точками:

Ее можно передвинуть мышкой в любое место рабочей области и поменять размеры, схватив курсором за толстые маркеры по углам и сторонам. Точки всех аудиторий сейчас находятся в одной общей куче.

Срезы (слайсеры)

Схватите мышкой название колонки name и перетащите его в любое свободное место на рабочей области.Как только вы отпустите мышку, Power BI создаст новую диаграмму Table («Таблица») со списком аудиторий.

Не снимая выделения с таблицы аудиторий, щелкните мышкой по кнопке Slicer («Срезы») на панели Visualizations.

Теперь можете щелкать по названиям нужных аудиторий, и на карте будут отображаться только координаты принадлежащих им точек.

Больше не нужно гадать!

Шаг 5. Работаем в Excel

Шаги 2 и 3 можно сделать в Excel начиная с 2016-й версии (вообще можно с 2012-й, но понадобится что-то установить – гугл в помощь).Мне не нужно заново повторять эти шаги, поэтому просто копирую все, что сделал в Power BI. Сначала в Power BI нажимаю кнопку Transform data («Преобразовать данные»).

Открывается уже знакомый редактор запросов Power Query Editor, где:

  1. Выбираю нужный запрос.

  2. Захожу в расширенный редактор.

  3. Копирую весь имеющийся там код в буфер обмена.

Показываю на примере Excel 2019 для Windows.

  1. Переключитесь на вкладку «Данные».

  2. Нажмите «Получить данные» для открытия контекстного меню.

  3. Выберите группу «Из других источников».

  4. Выберите пункт «Пустой запрос».

Откроется редактор Power Query.

  1. Нажмите «Расширенный редактор».

  2. Замените код в окне расширенного редактора на скопированный из Power BI или из начала статьи.

  3. Нажмите «Готово».

Появится предупреждение о необходимости изменить параметры подключения.

  1. Нажмите «Изменить учетные данные», появится окно «Доступ к веб-содержимому». 

  2. Нажмите «Подключение».

Появится таблица, аналогичная таблице в Power Query. Нажмите «Закрыть и загрузить», и данные загрузятся на лист.

Что делать с ними в Excel? Можно добавлять в каждую аудиторию по одной точке и получить сервис прямого геокодирования, где адрес превращается в географические координаты (но есть и более удобные инструменты, о которых можем поговорить потом).

На самом деле в Excel можно делать почти все то же самое, что и в Power BI. Например, напрямую работать с API Яндекса. Сегодня мы научились загружать аудитории, но можно и подключиться к Яндекс.Метрике или получить статистику из Яндекс.Директ.

Заключение

Надеюсь, статья была полезна, и вы узнали новые способы работы с данными. Задавайте вопросы в комментариях! И пишите, что еще хотите узнать.

  • Параметры загрузки API
  • Подключение нужной версии API
  • Загрузка API по требованию
  • Готовность API
  • Подключение API при использовании CSP

Для использования API Яндекс.Карт необходимо, чтобы компоненты API были загружены вместе с кодом страницы как обычный внешний JavaScript-файл. Наиболее распространенным способом подключения внешних скриптов является использование элемента script в заголовке HTML-документа. Например:

<head>
  <script src="https://api-maps.yandex.ru/2.1/?apikey=ваш API-ключ&lang=ru_RU"
  type="text/javascript">
  </script>
</head>

Внимание.

Для пользователей, которые работают в браузерах IE8, IE9 и IE10, будет подключаться версия 2.1.oldie.1 (даже если в ссылке подключения указана другая версия API). Версия 2.1.oldie.1 функционально соответствует версии 2.1.59 и не содержит более поздних обновлений.

Если необходимо поддерживать браузеры IE8, IE9 и IE10, при написании кода ориентируйтесь на справочник версии 2.1.59 (скачать справочник). Использование функциональности более поздних версий может привести к некорректной работе API в IE8, IE9 и IE10.

Подробнее о версионировании API.

Обратите внимание, что в стандартном браузере мобильной операционной системы Android и Apple iOS версии ниже 3.2 жест масштабирования над картой приводит к увеличению масштаба всей страницы средствами браузера. Для того чтобы отключить обработку жеста масштабирования, необходимо добавить в тег head страницы следующий код:

<meta name="viewport" content="initial-scale=1.0, user-scalable=no, maximum-scale=1" /> 

Подробнее см. описание метатега viewport в Safari HTML Reference.

Для бесплатной версии API ссылка для загрузки имеет вид:

https://api-maps.yandex.ru/2.1?apikey=ваш API-ключ&lang=<идентификатор языка>&<дополнительные параметры>

Для платной версии API ссылка имеет вид:

https://enterprise.api-maps.yandex.ru/2.1?apikey=ваш API-ключ&lang=<идентификатор языка>&<дополнительные параметры>

В таблице ниже описаны параметры, которые можно указать при загрузке API.

Параметр Описание
apikey *

Обязательный параметр.

API-ключ. Получить ключ можно в Кабинете разработчика.

lang

Обязательный параметр.

Локаль. Задается в виде:

lang=language_region

  • language — двузначный код языка. Указывается в формате ISO 639-1. Задает язык объектов на карте (топонимов, элементов управления).

  • region — двузначный код страны. Указывается в формате ISO 3166-1. Определяет региональные особенности, например единицу измерения (для обозначения расстояния между объектами или скорости движения по маршруту).

    Примечание. Для регионов RU, UA и TR расстояние показывается в километрах, для US — в милях.

На данный момент поддерживаются следующие локали:

  • lang=ru_RU;

  • lang=en_US;

  • lang=en_RU;

  • lang=ru_UA;

  • lang=uk_UA;

  • lang=tr_TR.

coordorder

Порядок задания географических координат при работе API.

Возможные значения:

  • latlong — [широта, долгота] — используется по умолчанию;

  • longlat — [долгота, широта].

load

Список загружаемых модулей.

Имена модулей перечисляются через запятую. Например, load=Map,Placemark,map.addon.balloon.

По умолчанию загружаются все компоненты API (load=package.full), однако в целях минимизации объема трафика, передаваемого клиентскому приложению, вы можете указать список конкретных сущностей API, с которыми работает ваше приложение.

Примечание. package.full оптимизирован таким образом, чтобы подгружать функциональность в момент ее фактического использования, поэтому в большинстве случаев нет необходимости настраивать параметр load.

Компоненты также можно загружать «по требованию», используя функцию require.

Значение по умолчанию: package.full.

mode

Режим загрузки API.

Код API может быть загружен в упакованном виде для минимизации трафика и скорости исполнения в браузере (mode=release), а также в виде исходного кода (mode=debug).

Загрузка в виде исходного кода удобна для отладки JavaScript-компонентов — код всех загруженных компонентов доступен для просмотра. Кроме того, в этом режиме в консоль выводятся сообщения об ошибках и исключениях. При загрузке в упакованном виде эти сообщения не выводятся.

Значение по умолчанию: release.

csp

Включает режим использования CSP. Может принимать значение true. Подробнее см. Подключение API при использовании CSP.

ns

Пространство имен, в котором локализованы программные компоненты API.

По умолчанию все объекты принадлежат пространству имен ymaps (например, ymaps.Map). Если при загрузке API указать ns=myNameSpace, то объекты будут доступны уже как myNameSpace.Map.

Использование пространства имен позволяет избежать пересечения названий функций и прочих программных компонентов, используемых в API и пользовательском/стороннем коде.

Вы можете задать пустое значение ns. В этом случае API не будет создавать объектов в глобальной области видимости, и доступ к функциональности API получит только функция, указанная в параметре onload.

Значение по умолчанию: ymaps.

onload

Имя функции, которую необходимо вызвать после того, как компоненты API будут загружены и готовы к использованию (callback). В эту функцию в качестве аргумента будет передан объект-неймспейс с функциональностью API.

Допускается использование вложенных пространств имен:

onload=myfunction

onload=myapp.dosmth

Пример использования приведен в таблице ниже.

onerror

Имя callback-функции, которая будет вызвана в случае ошибки загрузки API. В эту функцию в качестве аргумента будет передан объект, содержащий информацию об ошибке.

* Обязательный параметр.

В ссылке подключения API Яндекс.Карт всегда необходимо указывать номер версии.

  • Подключить текущую версию API (то есть последнюю стабильную версию):

    https://api-maps.yandex.ru/2.1?apikey=ваш API-ключ&lang=ru_RU

  • Подключить релиз-кандидат можно по ссылке:

    https://api-maps.yandex.ru/2.1-dev?apikey=ваш API-ключ&lang=ru_RU

    Релиз-кандидат — это новая версия API, которая доступна для открытого использования, но находится на стадии утверждения. Используя релиз-кандидат в своих проектах, вы поможете нам своевременно выявить возможные ошибки. Кроме того, вы сможете заранее протестировать работу приложения с новой версией API.

  • Подключить фиксированную версию API:

    https://api-maps.yandex.ru/2.1.68?apikey=ваш API-ключ&lang=ru_RU

    Примечание. Если вы используете фиксированную версию, старайтесь регулярно переключать ее на более свежую версию (например, раз в несколько месяцев). Дело в том, что со временем мы можем отключить минорную версию, которую вы используете в своем проекте, и тогда у вас автоматически подключится текущая версия API. Но может оказаться, что при смене версий ваше приложение стало работать некорректно. Поэтому мы рекомендуем следить за обновлениями API и своевременно переключаться на более свежие версии.

Подробнее про версионирование в API см. в разделе Версии JavaScript API.

С помощью функции modules.require можно загружать отдельные компоненты API. Это бывает полезно, когда нужно загрузить какие-нибудь компоненты API по требованию. Кроме того, это позволяет минимизировать объем трафика.

<script src="https://api-maps.yandex.ru/2.1/?apikey=ваш API-ключ&load=Map&lang=ru_RU"
 type="text/javascript"></script>
<script type="text/javascript">
  ymaps.ready(function () {  
    var map = new ymaps.Map("map", {
      center: [55.76, 37.64], 
      zoom: 10
    });

    if (map) {
      ymaps.modules.require(['Placemark', 'Circle'], function (Placemark, Circle) {
        var placemark = new Placemark([55.37, 35.45]);
      });
    }
  });
</script>

Компоненты API Яндекс.Карт всегда загружаются асинхронно. Это происходит даже в том случае, если для подключения API используется тег <script> и никаких специальных действий для асинхронной загрузки не производилось.

Чтобы быть уверенным, что компоненты загружены и готовы к использованию, необходимо использовать функцию ready или параметр загрузки onload.

Использование функции ready()
<script src="https://api-maps.yandex.ru/2.1?apikey=ваш API-ключ&load=package.full&lang=ru_RU">
</script>
<script type="text/javascript">
  ymaps.ready(function () {
    var myMap = new ymaps.Map("YMapsID", {
      center: [55.76, 37.64],
      zoom: 10
    });
  });
</script>

// Формирование div-контейнер карты.
<div id="YMapsID" style="width: 450px; height: 350px;"></div>
Использование параметра загрузки onload
<script src="https://api-maps.yandex.ru?apikey=ваш API-ключ&load=package.full&lang=ru_RU&onload=init">
</script>
<script type="text/javascript">
    // Сразу после загрузки API будет 
    // вызвана функция init.
    // На момент ее исполнения div-контейнер 
    // карты уже будет готов.
    function init (ymaps) {
        var myMap = new ymaps.Map("YMapsID", {
            center: [55.87, 37.66],
            zoom: 10
        });
    }
</script>

// Формирование div-контейнер карты.
<div id="YMapsID" style="width: 450px; height: 350px;"></div>  

Возникновение событий загрузки DOM-дерева или документа не сигнализирует об окончании загрузки API. То есть использование обработчиков событий типа document.ready, window.onload, jQuery.ready и пр. не позволяет определить, готовы ли компоненты для использования.

Для инициализации карты необходимо, чтобы в DOM-дереве находился элемент, в котором она размещается.

Функция ready исполняет включенный в нее код после того, как будет загружены компоненты API и DOM-дерево документа.

Функция, переданная в параметр onload вызывается после загрузки API, но не отслеживает готовность DOM-дерева. В этом случае отслеживать доступность HTML-элемента, в который помещается карта, необходимо самостоятельно. Например, при помощи обработчиков событий, перечисленных выше.

Использование параметра onload дает возможность инициализировать карту, не дожидаясь, пока DOM будет сформирован полностью. Поэтому данный способ является самым быстрым способом загрузки API.

Если приложение использует политику защиты контента (CSP), то для корректной работы с API в политику необходимо добавить правила, разрешающие загрузку ресурсов с доменов Яндекса.

Внимание. По умолчанию в API отключена поддержка CSP. Для ее активации при подключении API нужно передать параметр csp=true и указать используемую минорную версию API:

https://api-maps.yandex.ru/2.1.77/?apikey=<API-ключ>&lang=ru_RU&csp=true&

https://enterprise.api-maps.yandex.ru/2.1.77/?apikey=<API-ключ>&lang=ru_RU&csp=true

Рекомендуется обновлять используемую версию API не реже чем раз в квартал. При обновлении версии API может измениться список необходимых доменов, поэтому необходимо обновить список разрешенных доменов согласно таблице ниже.

В таблице ниже приведены правила, которые необходимо добавить в политику приложения для работы c API. Правила перечисляются отдельно для каждой директивы. Обратите внимание на многоточия в примерах — это означает, что правила, необходимые для работы с API, приведены без учета других правил, которые разработчик может задать для своего приложения. Если для какой-либо директивы в политике будет разрешена загрузка из любых источников (например, ‘img-src *;’), то для этой директивы соответствующие правила API можно не задавать.

Директива Правила, которые требуется добавить в директиву

img-src

Для директивы img-src в список разрешенных источников необходимо добавить домены:

  • https://*.maps.yandex.net (для загрузки тайлов);

  • api-maps.yandex.ru (для загрузки курсоров и т. п.);

  • enterprise.api-maps.yandex.ru (для загрузки курсоров в платной версии API);

  • https://yandex.ru.

С этих доменов будут загружаться изображения API. Кроме того, некоторые изображения API вставляются через data:URL, поэтому в директиве img-src также необходимо указать протокол data:.

img-src data: https://*.maps.yandex.net api-maps.yandex.ru ...;

frame-src

В директиве frame-src должены быть разрешены домены

  • https://api-maps.yandex.ru

  • https://enterprise.api-maps.yandex.ru (для платной версии API)

С этих доменов будут загружаться компоненты API, которые размещаются во фреймах (например, блок «Открыть в Яндекс.Картах»):

frame-src https://api-maps.yandex.ru ...;
frame-src https://enterprise.api-maps.yandex.ru ...;

Примечание. Директива frame-src используется в CSP версии 1.0; в версии 2.0 эта директива заменена на child-src. Однако некоторые браузеры еще не поддерживают CSP 2.0, поэтому для обеспечения кроссбраузерной совместимости в политике рекомендуется указывать обе эти директивы:

frame-src https://api-maps.yandex.ru ...;
child-src https://api-maps.yandex.ru ...;
frame-src https://enterprise.api-maps.yandex.ru ...;
child-src https://enterprise.api-maps.yandex.ru ...;

script-src

В директиве script-src нужно добавить следующие домены:

  • https://api-maps.yandex.ru

  • https://enterprise.api-maps.yandex.ru (для платной версии API)

  • https://suggest-maps.yandex.ru

  • https://*.maps.yandex.net

  • https://yandex.ru

  • https://yastatic.net

С этих доменов будут загружаться модули API. Кроме того, для работы с шаблонами в директиве script-src рекомендуется включить поддержку ‘unsafe-eval’ (это необходимо для работы условных операторов).

script-src 'unsafe-eval' https://api-maps.yandex.ru
 https://suggest-maps.yandex.ru https://*.maps.yandex.net
 https://yandex.ru ...;
connect-src

Для директивы connect-src следует разрешить домены:

  • https://api-maps.yandex.ru

  • https://enterprise.api-maps.yandex.ru (для платной версии API)

  • https://suggest-maps.yandex.ru

  • https://*.maps.yandex.net

  • https://yandex.ru

  • https://*.taxi.yandex.net

connect-src https://api-maps.yandex.ru
 https://suggest-maps.yandex.ru https://*.maps.yandex.net
 https://yandex.ru ...;

style-src

Для загрузки стилей API в директиве style-src необходимо указать протокол blob:.

style-src: blob: ...;

API будет подключать стили на страницу через элемент <link>, содержащий blob URL нужного стиля. Если в приложении использование blob невозможно, то для корректной работы с API в директиве style-src можно указать nonce-значение, сгенерированное на стороне клиента. В этом случае API будет подключать стили через inline-элемент <style nonce=»…»>.

style-src 'nonce-<токен>' ...;

Это же значение следует передать в параметре csp при подключении API:

Для бесплатной версии API:

https://api-maps.yandex.ru/2.1/?apikey=<API-ключ>&lang=ru_RU&csp[style_nonce]=<токен>

Для платной версии API:

https://enterprise.api-maps.yandex.ru/2.1/?apikey=<API-ключ>&lang=ru_RU&csp[style_nonce]=<токен>

Следует иметь в виду, что атрибут nonce реализован в CSP 2.0 и не поддерживается в версии 1.0. Однако в некоторых браузерах еще не включена поддержка CSP 2.0, поэтому для обеспечения кроссбраузерной совместимости в style-src рекомендуется использовать протокол blob:.

Если для какого-либо ресурса API политика определена неправильно, то карта (либо ее объекты) будут отображаться некорректно. При этом API не отслеживает, для каких ресурсов политика задана неверно. Чтобы получить информацию о том, какие ресурсы карты не могут быть загружены, можно воспользоваться директивой report-uri.

Ниже приведен пример политики, в которой определены правила для работы с API, а также другие правила приложения:

Content-Security-Policy:
  img-src data: https://*.maps.yandex.net https://api-maps.yandex.ru https://yandex.ru 'self';
  child-src https://api-maps.yandex.ru;
  frame-src https://api-maps.yandex.ru;
  script-src https://api-maps.yandex.ru https://suggest-maps.yandex.ru http://*.maps.yandex.net https://yandex.ru https://yastatic.net 'self';
  connect-src https://api-maps.yandex.ru https://suggest-maps.yandex.ru https://*.maps.yandex.net https://yandex.ru https://*.taxi.yandex.net;
  style-src blob:;
Content-Security-Policy:
  img-src data: https://*.maps.yandex.net https://enterprise.api-maps.yandex.ru https://yandex.ru 'self';
  child-src https://enterprise.api-maps.yandex.ru;
  frame-src https://enterprise.api-maps.yandex.ru;
  script-src https://enterprise.api-maps.yandex.ru https://suggest-maps.yandex.ru http://*.maps.yandex.net https://yandex.ru https://yastatic.net 'self';
  connect-src https://enterprise.api-maps.yandex.ru https://suggest-maps.yandex.ru https://*.maps.yandex.net https://yandex.ru https://*.taxi.yandex.net;
  style-src blob:;

Задание inline-стилей в шаблонах при включенном CSP

Иногда при работе с шаблонами для DOM-элементов необходимо задавать inline-стили (например, при настройке автопозиционирования балуна). Если в API отключен режим CSP, inline-стили задаются стандартным образом, как обычный HTML-текст. Например:

<div style="width: {{options.width}}px;></div>

Однако при включении режима CSP, если в политике установлен запрет на ‘unsafe-inline’, данная форма записи работать не будет. Чтобы обойти запрет на использование inline-стилей в шаблонах, можно воспользоваться одним из следующих способов:

  1. Задавать inline-стили через конструкцию {% style %}:

    <div {% style %}width: {{ options.width }}px;{% endstyle %}></div>

    Примечание.

    Чтобы разработчику не нужно было самостоятельно подставлять эту конструкцию в созданные ранее шаблоны, можно включить поддержку обратной совместимость шаблонов. Для этого при подключении API нужно передать параметр csp с полем data_style:

    https://api-maps.yandex.ru/2.1?lang=ru_RU&csp[data_style]=true&apikey=<API-ключ>
    https://enterprise.api-maps.yandex.ru/2.1?lang=ru_RU&csp[data_style]=true&apikey=<API-ключ>

    В результате API автоматически будет заменять стандартную форму записи (<div style=..) на конструкцию {% style %}.

    Обратите внимание, что при использовании опции csp[data_style] могут возникнуть проблемы с производительностью. По этой причине не рекомендуется включать эту опцию.

  2. Динамически формировать стили и затем применять их к DOM-элементам средствами JavaScript. Подробнее см. пример в песочнице.

В документе описан API Яндекс.Такси для партнеров сервиса (далее — API Такси, API).

API позволяет встроить возможности партнерского интерфейса Яндекс.Такси в вашу собственную систему. Основными возможностями являются:

  • Выгрузка информации для построения собственных отчетов

  • Проведение выплат и списаний со счёта водителя

  • Изменение связи водителя с автомобилем

Условия использования сервиса «API Яндекс.Такси для партнеров сервиса»

Любые вопросы связанные с API можно задать по адресу api-taxi@yandex-team.ru.

API Яндекс.Директа – это интерфейс рекламной системы для разработчиков программ. Он позволяет автоматизировать работу с Яндекс.Директ и использовать все его функции – от получения статистики до создания рекламных кампаний с нуля. И всё абсолютно бесплатно.

Результат работы с API – ваше приложение по управлению контекстной рекламой в Яндекс.Директ с собственными настройками и алгоритмами. Кстати, для этого совсем не обязательно быть профи в программировании – достаточно базовых знаний PHP или Python.

Как всё это применять и что нужно, чтобы начать работу – смотрите в этой статье.

Для чего нужен API Яндекс.Директ

API Директа дает возможность разрабатывать и внедрять алгоритмы для управления рекламными кампаниями под ваши нужды. Это пригодится как агентствам, так и крупным рекламодателям, которые запускают и ведут масштабные кампании. Их деятельность предполагает множество рутинных действий, например:

  • Массовое создание и редактирование кампаний, объявлений и ключевых фраз;
  • Управление ставками;
  • Получение статистики по показам и кликам;
  • Прогноз бюджета.

Инструмент API позволяет создать приложение, в котором все нужные вам однотипные операции выполняются автоматически и в котором можно создавать удобные инструменты для просмотра и редактирования кампаний. Автоматизировать можно практически всё, даже обновление цены за клик по заданному вами алгоритму.

Вы разрабатываете что-то наподобие Директ Коммандера. Эта программа – готовое решение Яндекса на основе API Яндекс.Директа. Как её применять, смотрите руководство по старой и новой версиям.

Приложения, созданные по API Яндекс.Директа, рассчитаны на пользователей, у которых есть аккаунт в Директе. Это прямые рекламодатели, агентства и их клиенты с доступом только на чтение (могут только получать и просматривать данные) или на редактирование (они получают в API все те же самые функции, что в интерфейсе).

Структура API

По сути API Директа – это набор сервисов, каждый из которых привязан к конкретному классу объектов и имеет отдельный URL. Объекты API взаимосвязаны между собой, как показано на скриншоте:

API Яндекс.Директ – структура API

Изображение из руководства Яндекса для разработчиков

Сервисы верхнего уровня – Campaign и AdGroup. Первый содержит настройки рекламной кампании, второй нужен для работы с группами объявлений.

На следующем уровне – сервисы Ad (параметры объявления), Keyword (ключевые фразы), Audience Target (условия нацеливания на аудиторию) и DynamicTextAdTarget (условия нацеливания для динамических объявлений).

Далее идут сервисы для работы с элементами объявления: AdImage (изображениями), VCard (виртуальной визиткой), SitelinksSet (блоком быстрых ссылок), AdExtension (расширением к объявлению).

Для управления условиями ретаргетинга и подбора аудитории есть специальный сервис – RetargetingList.

У каждого сервиса свой набор методов для выполнения операций с его объектами. Основные методы, которые доступны для всех объектов – это добавление (add), изменение параметров (update), удаление (delete) и получение параметров (get).

Есть также специфические методы, которые поддерживают определенные объекты. Например, отправление объявлений на модерацию (moderate) – метод для сервиса Ads. Весь список доступных методов по областям применения смотрите в документации API.

Итак, с чего начать, чтобы разработать собственное приложение для работы с контекстной рекламой в Яндекс.Директе? Во-первых, нужен доступ к API. Далее рассмотрим пошагово, как его получить.

Шаг 1: создание и регистрация приложения на Яндекс.OAuth

Авторизуйтесь в Яндекс.Директе. Используйте для этого аккаунт разработчика – именно от этого имени ваше приложение будет выполнять запросы и управлять данными.

Перейдите по ссылке oauth.yandex.ru. Нажмите кнопку «Зарегистрировать новое приложение»:

API Яндекс.Директ – переход к регистрации нового приложения

В правой части страницы – ссылки на справочные материалы для разработчиков.

Далее вы попадаете на форму «Создание приложения», где нужно указать все его необходимые параметры:

API Яндекс.Директ – форма создания приложения

Обязательные опции помечены звездочкой, это «Название» и «Доступы». Но чем больше информации о приложении вы укажете, тем более прозрачно оно будет для пользователей. Они будут знать, какой именно программе разрешают доступ к своему аккаунту.

В блоке «Платформы» отметьте галочкой «Веб-сервисы»:

API Яндекс.Директ – платформы для приложения

Появится поле адреса. В нем вы указываете, куда направлять пользователя после того, как он разрешил или отказал приложению в доступе. Адресов Callback URI может быть несколько, например, для тестового и боевого режима.

На этапе создания приложения нажмите ссылку «Подставить URL для разработки».

API Яндекс.Директ – адрес перенаправления пользователя

В поле появится тестовый адрес, который позволит получать отладочные токены вручную. Они нужны для проверки работы приложения, подробнее об этом далее в статье.

В блоке «Доступы» выберите «Яндекс.Директ» и отметьте «Использование API Яндекс.Директа»:

API Яндекс.Директ – выбор доступа

Завершите создание приложения:

API Яндекс.Директ – завершение регистрации

На этом регистрация закончена. При этом OAuth-сервер Яндекса сразу же генерирует и показывает на странице идентификатор и пароль приложения.

API Яндекс.Директ – идентификатор и пароль приложения

Они понадобятся вам далее.

Шаг 2: создание заявки на доступ

В аккаунте Яндекс.Директа долистайте до нижнего меню и перейдите по ссылке «API»:

API Яндекс.Директ – переход к настройкам API

Далее нажмите «Получить доступ к API»:

API Яндекс.Директ – ссылка на получение доступа к API

Вы попадете на страницу настроек API. Чтобы она была доступна, нужно выполнить формальное требование: в интерфейсе Яндекс.Директа должна быть минимум одна рекламная кампания с одним объявлением и одной ключевой фразой.

При первом входе нужно принять пользовательское соглашение:

API Яндекс.Директ – пользовательское соглашение

На странице «Настройки API» перейдите на вкладку «Мои заявки», чтобы создать и отправить заявку на доступ к API. Нажмите кнопку «Новая заявка» и выберите её тип.

API Яндекс.Директ – кнопка для создания заявки

Тестовый доступ – это ограниченный доступ к API, то есть только к Песочнице – тестовой среде для отладки приложений. Она имитирует работающие рекламные кампании, их достаточно для того, чтобы протестировать и отладить приложение. Полный доступ (боевой) дает возможность управлять реальными рекламными кампаниями клиентов.

Так как приложение еще не разработано, создайте заявку на тестовый доступ. Для этого:

1) Из выпадающего списка выберите идентификатор, который получили после регистрации приложения на OAuth-сервере:

API Яндекс.Директ – создание заявки на доступ

2) Укажите email для связи со службой поддержки;

3) Заполните остальные данные о приложении по максимуму – укажите, для чего оно предназначено, его основные функции и возможности и т.д.:

API Яндекс.Директ – параметры приложения в заявке

4) Подтвердите согласие с пользовательским соглашением и отправьте заявку.

API Яндекс.Директ – согласие с правилами разработки

Статус заявки отслеживайте здесь же – на вкладке «Мои заявки» в настройках. Дождитесь её одобрения – это может занять до 7 дней. Только после этого можно начинать разрабатывать приложение. В случае отклонения – узнайте причины и исправьте ошибки.

На стадии рассмотрения можно преобразовывать заявку на ограниченный доступ в заявку на полный доступ. После внесения любых изменений она автоматически отправляется на повторное рассмотрение.

На вкладке «Мои приложения» можно увидеть, какие приложения уже имеют доступ к аккаунту Яндекс.Директ через API. В том числе, если вы использовали Директ.Коммандер, он появится в этом списке:

API Яндекс.Директ – список приложений, у которых есть доступ к аккаунту

Шаг 3: создание тестового пользователя и тестовых данных для него

1) Зарегистрируйте аккаунт тестового пользователя в Яндекс.Директе;

2) Создайте от его имени рекламную кампанию в интерфейсе Яндекс.Директа – достаточно одного объявления с одним ключевиком, чтобы получить доступ к API;

3) В разделе API интерфейса Директа нажмите ссылку «Получить доступ к API» и примите пользовательское соглашение;

4) Включите песочницу – среду для отладки приложения, где можно управлять тестовыми кампаниями без реальных показов и внесения средств.

Для этого откройте вкладку «Песочница» на странице настроек API и начните ею пользоваться:

API Яндекс.Директ – использование песочницы

В следующем окне задайте параметры песочницы:

API Яндекс.Директ – настройки песочницы

Поставьте галочку «Создать тестовые кампании». Если вы выбрали роль «Клиент» создаются три кампании. Для роли «Агентство» – 3 клиента с 3 кампаниями, их логины формируются автоматически. На одну кампанию каждого клиента зачисляется некоторая сумма.

Включение флажка «Общий счет» создает клиента с подключенным общим счетом. Для агентства опция недоступна.

Нажмите «Продолжить», чтобы начать управлять песочницей.

Внимание! Если сменить параметры, все данные удаляются. Нужно создавать песочницу заново.

5) От имени тестового пользователя получите отладочный токен. С помощью него можно проверять работу приложений.

Когда пользователь авторизуется в Яндекс.Директе и нажимает кнопку «Подтвердить», то есть дает доступ к своим данным приложения, сервер Яндекса генерирует токен и передает его приложению.

Как всё происходит:

  • Приложение направляет пользователя на страницу Яндекс.OAuth;
  • На этой странице пользователь разрешает доступ к своим данным приложению;
  • Яндекс.OAuth перенаправляет пользователя на адрес, указанный в поле Callback URL. Код подтверждения или описание ошибки передается в параметре URL перенаправления;
  • Приложение получает адрес перенаправления и извлекает код подтверждения;
  • Приложение отправляет POST-запрос с этим кодом;
  • Яндекс.OAuth возвращает токен в теле ответа.

Если объяснять с технической стороны, запрос к API выполняется по протоколу HTTPS методом POST (отправление данных). В этом запросе содержится HTTP-заголовок с токеном пользователя, от имени которого осуществляется запрос. Ответ содержит заголовок RequestId – это уникальный идентификатор запроса.

Некоторые приложения (например, консольные или установленные на телевизорах Smart TV) не могут получить код подтверждения из URL. В этом случае пользователь самостоятельно его получает от Яндекс.OAuth и вводит в приложении или на странице авторизации.

Полученный токен используется для запросов к API до истечения времени его жизни. Он должен быть доступен только вашему приложению, поэтому лучше не сохранять его в куках браузера.

Далее вы выполняйте запросы к песочнице. Вот пример запроса:

API Яндекс.Директ – пример запроса к песочнице

Практика использования API Яндекс.Директ

В инструменте API множество методов для разных объектов, многие из них дорабатываются и улучшаются со временем. Рассмотрим подробно, как их применять на практике.

Для примера возьмем создание отчета по поисковым запросам, прогноз бюджета и ретаргетинг. Этому действию соответствует метод CreateNewWordstatReport. Он запускает на сервере формирование отчета о статистике поисковых запросов. Это занимает не больше минуты.

Отчет содержит ту же статистику, которая доступна в сервисе Яндекс Wordstat за прошедший месяц.

Ограничения:

  • За сутки можно получить статистику для тысячи фраз;
  • На сервере хранится максимум 5 отчетов по всем кампаниям;
  • Отчеты хранятся на сервере в течение 5 часов, а затем автоматически удаляются.

Так выглядит структура входных данных в формате JSON:

{

   «method»: «CreateNewWordstatReport»,

   «param»: {

      /* NewWordstatReportInfo */

      «Phrases«: [

         (string)

         …

      ],

      «GeoID«: [

         (int)

         …

      ]

   }

}

Phrases – это массив ключевых фраз, по которым нужно получить статистику поисковых запросов (добавить можно не более 10). минус-фразы из нескольких слов пишите в скобках, например: холодильник -морозильник -(морозильная камера) -ремонт.

GeoID – идентификаторы регионов, по которым нужно получить статистику поисковых запросов. Можно исключить регион, поставив минус. Если вы не указали этот параметр, либо указали только минус-регионы, либо минус-регионы совпадают c плюс-регионами, статистика выдается по всем регионам.

Вообще в API Яндекс.Директа можно решать самые разнообразные задачи, например:

— Интегрировать функции Яндекс.Директ и данные из собственной базы.

Примеры применения: автоматическое добавление в ключевые фразы названий брендов или моделей товаров, остановка / возобновление показов объявлений в зависимости от наличия товаров на складе, обновление текстов объявлений при изменении прайс-листа. И многое другое, в зависимости от данных, которые у вас есть;

— A/B-тестирование объявлений.

Принцип тот же, что в интерфейсе: в самом начале все варианты из группы объявлений показываются равномерно. По мере накопления статистики система выбирает объявление с самым высоким CTR (самое привлекательное по мнению целевой аудитории) и показывает его чаще;

— Мониторинг и анализ эффективности рекламных кампаний.

Можно настроить автоматическое получение сводной и детальной статистики по показам, кликам, конверсиям и другим показателям и выгрузку её в сторонние программы (системы поддержки принятия решений, системы финансового учета и т.д.)

Все примеры использования API смотрите в меню «Практика использования» по ссылке.

Важное преимущество программы на основе API – при просмотре и редактировании кампаний, рекламных групп, объявлений и ключевых фраз не нужно ждать загрузки страниц, как в интерфейсе Яндекс.Директа. И конечно, это экономит время специалистов по настройке контекстной рекламы.

Хотите тоже написать статью для читателей Yagla? Если вам есть что рассказать про маркетинг, аналитику, бизнес, управление, карьеру для новичков, маркетологов и предпринимателей. Тогда заведите себе блог на Yagla прямо сейчас и пишите статьи. Это бесплатно и просто

Понравилась статья? Поделить с друзьями:
  • Nordson problue 4 инструкция на русском языке
  • Samsung galaxy a32 инструкция по эксплуатации
  • Стиль руководства в овд это
  • Кровать трансформер be2me инструкция по сборке
  • Руководство по контролю загрязнения атмосферы 1991