Как массово закрыть доступ пользователям к нескольким аккаунтам Google Analytics
Почему вам это может понадобиться
Возможно у вас, как и у меня, возникала необходимость закрыть доступ к нескольким аккаунтам Google Analytics для конкретного пользователя. Например, это может понадобиться, если сотрудник передает проекты другому специалисту и более не участвует в них или вовсе прекращает работать в компании. Закрыть доступ в интерфейсе Google Analytics совсем несложно, но когда такую процедуру нужно выполнить для каждого аккаунта, а аккаунтов несколько… хочется как-то автоматизировать этот процесс.
В сегодняшней статье я поделюсь своим скриптом на R, с помощью которого можно быстро удалить пользователя сразу из нескольких аккаунтов Google Analytics.
Подготовительные работы
Нам понадобится:
- Установить R на компьютер. Ссылка для скачивания.
- Установить Rstudio. Ссылка для скачивания.
- Установить следующие пакеты:
- пакет googleAnalyticsR Марка Эдмондсона.
- пакет googleAuthR Марка Эдмондсона.
- пакет RGAManagementAPI Анастасии Тимошенко.
Чтобы установить вышеуказанные пакеты, скопируйте этот фрагмент кода и запустите в Rstudio.
install.packages("googleAnalyticsR")
library("googleAnalyticsR")
install.packages("googleAuthR")
library("googleAuthR")
install.packages("devtools")
library(devtools)
install_github("AnastasiiaTymoshenko/RGAManagementAPI")
library("RGAManagementAPI")
- Создать учетные данные в консоли разработчика.
Для того, чтобы начать работу с Google Analytics API, необходимо создать проект в консоли разработчика.
Далее нужно перейти в “Учетные данные” — “Создать учетные данные”.
Создаем “идентификатор клиента OAuth”,
тип приложения — “другие типы”.
Скачайте файл с данными для авторизации.
Для авторизации скопируйте в переменную GA_AUTH_FILE приведенного ниже фрагмента кода свой путь к файлу с реквизитами доступа и запустите код в RStudio.
GA_AUTH_FILE <- "C:/Users/user/Desktop/eswlgijsgljrsldg.apps.googleusercontent.com.json"
ga_auth(token = NULL, new_user = FALSE, no_auto = FALSE)
Если вам понадобится вызвать функцию удаления пользователей для разных почт, то для прохождения авторизации под новой почтой для параметра new_user установите значение TRUE.
Далее в список emails_to_delete внесите почты пользователей, для которых необходимо удалить разрешения. Тут может быть как одна почта, так и несколько. Запустите этот блок кода.
emails_to_delete <- list("email_1@gmail.com", "email_2@gmail.com", "email_3@gmail.com")
Описание скрипта на R
За что я люблю R, так это за множество готовых пакетов с уже написанными функциями. Так, например, для создания этого скрипта оказалась полезной функция ga_users_list из пакета googleAnalyticsR Марка Эдмондсона. С её помощью можно получить список пользователей, у которых есть доступ к определенному аккаунту/ресурсу/представлению в Analytics.
Вот как выглядит эта функция:
ga_users_list(accountId, webPropertyId = NULL, viewId = NULL)
где
accountId — идентификатор аккаунта Google Analytics,
webPropertyId — идентификатор ресурса Google Analytics,
viewId — идентификатор представления Google Analytics.
Если вы хотите получить список пользователей, у которых есть доступ к аккаунту, и вас не интересуют права на уровне ресурса/представления, для этих аргументов можно оставить значение NULL.
Рассмотрим самый простой пример использования функции ga_users_list для аккаунта OdesSeo.
В переменную acc я записала идентификатор аккаунта OdesSeo. Его можно посмотреть в административной панели Google Analytics (настройки аккаунта):
ga_users_list вернула список почт пользователей, у которых есть права к аккаунту Google Analytics OdesSeo, а также уровни разрешений этих пользователей.
На скриншоте мы видим два столбца с разрешениями — “permissions.effective” и “permissions.local”. Это связано с тем, что в API используются действующие (effective) и локальные (local) разрешения. Для назначения разрешений с помощью API необходимо использовать permissions.local. Разрешения effective наследуются от родительских ресурсов. Напомню, что структура аккаунтов Google Analytics имеет следующие уровни: аккаунты, ресурсы и представления. На каждом из этих уровней можно назначать права для пользователя. Разрешения более высокого уровня наследуются. Если права для пользователя настроены на уровне аккаунта, то они будут распространяться на ресурсы и представления этого аккаунта. При переходе вниз по иерархии предоставляемые разрешения могут только увеличиваться. У прав, заданных на каком-либо уровне, приоритет выше, чем у тех, что унаследованы.
Например, при вызове функции ga_users_list для уровня ресурса
мы можем заметить, что столбец “permissions.local” пуст для всех пользователей, кроме одного. Это значит, что для всех пользователей, кроме первого в списке, права были назначены на уровне аккаунта и наследуются для ресурса. Для первого же пользователя право на изменение (EDIT) было назначено на уровне аккаунта, а право на управление (MANAGE_USERS) — на уровне ресурса.
У пользователей могут быть следующие уровни доступа:
- MANAGE_USERS (управление) – добавление и удаление пользователей, настройка разрешений.
- EDIT (изменение) – добавление, изменение и удаление аккаунтов, ресурсов, представлений, фильтров, целей и пр., но без права управления пользователями.
- COLLABORATE (совместное использование) — создание, изменение и удаление личных объектов. Совместное использование общих объектов.
- READ_AND_ANALYZE (чтение и анализ) — просмотр данных, создание личных объектов, просмотр общих объектов без внесения изменений.
В скрипте в цикле осуществляется перебор всех аккаунтов, к которым у вас (у почты, для которой проведена авторизация) есть доступ. С помощью функции ga_users_list я получаю список пользователей, у которых есть доступ для конкретного аккаунта Google Analytics, и если среди этих почт есть адрес, для которого нужно закрыть доступ, вызываю функцию удаления прав. Удаление происходит с использованием метода DELETE.
Те же действия выполняются для уровня ресурса и представления. При успешном удалении прав выдается соответствующее оповещение с указанием почты, для которой закрыт доступ, и аккаунта/ресурса/представления, к которому закрыт доступ. Если для какого-то аккаунта/ресурса/представления у вас нет прав на управление пользователями, то посмотреть список почт не получится. В таком случае выдается оповещение о том, что прав для выполнения операции недостаточно.
Полный код скрипта можно посмотреть тут.
Для более удобного использования я оформила скрипт в отдельную функцию delete_users_permissions.
Чтобы использовать эту функцию нужно скопировать и запустить следующий фрагмент кода:
delete_users_permissions(emails_to_delete)
Как интерпретировать результаты работы скрипта
При успешном выполнении скрипта вы должны получить что-то подобное:
Разберем подробнее результаты выполнения кода.
Если для почты email_1@gmail.com открыт доступ к аккаунту/ресурсу/представлению, скрипт выдаст соответствующую информацию и удалит права пользователя на всех уровнях:
email_1@gmail.com has access to Account_Name (Account)
email_1@gmail.com has been removed from account Account_Name
Если для какого-то аккаунта/ресурса/представления у вас недостаточно прав, чтобы посмотреть список пользователей аккаунта и управлять разрешениями, вас ждет строка вида:
Аккаунт 1 — 1111111 — You don’t have enough permissions to view or remove users.
Ресурс 1 — UA-111111-1 — You don’t have enough permissions to view or remove users.
Представление 1 — 1111111111 — You don’t have enough permissions to view or remove users.
Представление 2 — 22222222 — You don’t have enough permissions to view or remove users.
В случае, когда у вашей почты есть право на управление, но оно назначено на более низком уровне, чем права пользователей, которых нужно удалить, выведется оповещение о том, что у данной почты есть доступ, но разрешения наследуются, и поэтому нет возможности ими управлять:
email_1@gmail.com has access to Webproperty_Name (Webproperty)
You don’t have enough permissions to remove users from Webproperty_Name — inherited permissions
Для аккаунтов, к которым у вас есть право на управление, но почты для удаления не присутствуют в доступах, ничего не выводится.
Надеюсь, что моя работа будет полезной для вас! Вопросы и фидбек по работе скрипта оставляйте в комментариях или пишите на почту a.tymoshenko@odesseo.com.ua. Удачи=)
Добрый вечер! Подскажите, пожалуйста, если возможно: как из похожих ссылок: site.ru/?pid=partner_id&utm_source=internalpartners&utm_medium=cpa&utm_content=partner_id, вытащить utm_source=internalpartners, utm_medium=cpa, utm_content=partner_id и передать в Google Analytics? Скорее всего, с помощью кода, но какого, может быть, у Вас есть пример или мысль? Заранее спасибо!
С уважением,
Алекс