Функция 7+ в 1:wink: Неофициальная обёртка для методов рекламного API Вконтакте. Выгружайте статистику рекламных кампаний Вконтакте напрямую в Power BI или Excel.
В отчётах перевел все (или большинство) англоязычных названий колонок и значений на великий и могучий (поменяйте пару строк в коде, если перевод не нужен). Старался документировать код, поэтому найдёте где это делается:wink:
Функция тестировалась в работе с API Вконтакте https://vk.com/dev/ads, но, вероятно, будет работать и с другими методами (об этом ниже)
Все параметры необязательные, но токен всё равно нужно получить :wink:
Параметр | Тип | Значение по умолчанию | Описание |
---|---|---|---|
access_token | text | - | Токен доступа. Получите по этой инструкции или используйте имеющийся |
account_id | number | - | Идентификатор рекламного аккаунта |
client_id | number | - | Идентификатор клиента агентского рекламного аккаунта или null, если аккаунт не агентский |
level | text | - | Уровень детализации статистики. Если не указать параметр, то будут возвращаться списки: рекламных кабинетов, клиентов, кампаний. Для получения списка объявлений используйте “adlist”. Другие допустимые значения: “office” — статистика по всему аккаунту, “client” — по клиентам, “campaign” — по кампаниям и “ad” — по объявлениям |
period | text | “overall” | Детализация периода. По-умолчанию данные суммируются за весь выбранный период статистики. Возможна детализация по месяцам “month” или по дням “day” |
date_from | date | 0 | Дата начала периода. По-умолчанию автоматически берется дата создания объекта статистики |
date_to | date | 0 | Дата окончания периода. По-умолчанию подставляется сегодняшнее число или месяц, в зависимости от значения period |
method | text | - | Методы. есть 2 встроенных значения: “demographics” - для получения демографических данных с дополнительной обработкой ответов и “postsreach” - для получения характеристик поста. Вообще сюда можно указать любую функцию API, например, ads.getFloodStats (см. примеры ниже). По сути меняет url (relative path) |
ids | list | - | Список идентификаторов. Если не указано, то в зависимости от level автоматически запрашивается список всех кампаний или объявлений для выбранного client_id. Можно подставить свои идентификаторы, соответствующие level и получить статистику выборочно |
q | record | - | Query. Можно передать список любых параметров запроса (GET-параметры запроса), что в сочетании с method позволяет обращаться к другим методам API |
VK(access_token)
Вызывает метод ads.getAccounts
access_token можно получить по этой инструкции или по инструкции Алексея Селезнева к функции rvkstat
VK(access_token,account_id)
Вызывает метод ads.getClients Обязательный параметр:
VK(access_token,account_id,client_id)
Вызывает метод ads.getCampaigns Обязательные параметры:
VK(access_token,account_id,client_id,"adlist")
Вызывает метод ads.getAds Обязательные параметры:
VK(access_token,account_id,client_id,"office")
Вызывает метод ads.getStatistics Обязательные параметры:
Чтобы указать детализацию статистики по датам, укажите параметр period. Например, для получения статистики по всем кампаниям с детализацией по месяцам (статистика помесячно):
VK(access_token,account_id,client_id,"campaign","month")
Чтобы ограничить дату начала и дату окончания статистики, укажите параметры date_from и date_to. Например, следующий код вернёт статистику по объявлениям за весь январь 2020 г с детализацией периода по дням (т.е. статистика за каждый день)
VK(access_token,account_id,client_id,"campaign","day",#date(2020,1,1),#date(2020,1,31))
Если не задан список идентификаторов (параметр ids), то в зависимости от значения level выполнится запрос списка всех кампаний или объявлений и их идентификаторы будут подставлены автоматически. Если же вы хотите получить статистику по кампаниям с идентификаторами 123 и 124, то перечислите их в параметре ids в виде списка:
VK(access_token,account_id,client_id,"campaign","overall",#date(2020,1,1),#date(2020,1,31),null,{123,124})
Убедитесь, что идентификаторы в списке соответствуют уровням level: если в level = “campaign”, то передавайте идентификаторы кампаний, а не объявлений, иначе API вернет ошибку, что идентификаторы не существуют или указаны неверно.
Вызывает метод ads.getDemographics Метод работает аналогично получению статистики с помощью ads.getStatistics (это его дополнение), просто вместо общей статистики возвращает демографические данные (пол, возраст, город). Например, чтобы получить демографию по кампаниям с идентификаторами 123 и 124 за весь период их работы, вызовите функцию:
VK(access_token,account_id,client_id,"campaign",null,null,null,"demographics",{123,124})
Обязательные параметры:
Например, взаимодействия (лайки, репосты, отписки, вступления и т.п.) рекламных постов кампании с идентификатором 123 за всё время можно получить следующим образом:
VK(access_token,account_id,client_id,"campaign",null,null,null,"postsreach",{123})
Вызывает метод ads.getPostsReach Обязательные параметры:
VK(access_token,account_id,null,null,null,null,null,"ads.getFloodStats")
Вызов метода ads.getFloodStats Обязательные параметры:
VK(access_token,account_id,null,null,null,null,null,"ads.getCategories")
Вызов метода ads.getCategories Массив v1 устарел. Смотрите v2
В тех случаях, когда передаются идентификаторы кампаний или объектов, идентификаторы рекламных кабинетов или клиентов можно опустить, но такое поведение я не тестировал.
Несколько советов, помогающих упростить вашу работу:
С вопросами и предложениями стучитесь: