Как массово закрыть доступ пользователям к нескольким аккаунтам Google Analytics

Как массово закрыть доступ пользователям к нескольким аккаунтам Google Analytics

Почему вам это может понадобиться

Возможно у вас, как и у меня, возникала необходимость закрыть доступ к нескольким аккаунтам Google Analytics для конкретного пользователя. Например, это может понадобиться, если сотрудник передает проекты другому специалисту и более не участвует в них или вовсе прекращает работать в компании. Закрыть доступ в интерфейсе Google Analytics совсем несложно, но когда такую процедуру нужно выполнить для каждого аккаунта, а аккаунтов несколько… хочется как-то автоматизировать этот процесс.

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

Подготовительные работы

Нам понадобится:

  1. Установить R на компьютер. Ссылка для скачивания.
  2. Установить Rstudio. Ссылка для скачивания.
  3. Установить следующие пакеты:

Чтобы установить вышеуказанные пакеты, скопируйте этот фрагмент кода и запустите в Rstudio.

  1. Создать учетные данные в консоли разработчика.

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

Далее нужно перейти в “Учетные данные” — “Создать учетные данные”.

Создание учетных данных в консоли разработчика для работы с Google Analytics API

Создаем “идентификатор клиента OAuth”,

Создание идентификатора клиента OAuth для работы с Google Analytics API

тип приложения — “другие типы”.

Создание типа приложения "другие типы" для работы с Google Analytics API

Скачайте файл с данными для авторизации.

Скачивание файла с данными для авторизации

Для авторизации скопируйте в переменную GA_AUTH_FILE приведенного ниже фрагмента кода свой путь к файлу с реквизитами доступа и запустите код в RStudio.

Если вам понадобится вызвать функцию удаления пользователей для разных почт, то для прохождения авторизации под новой почтой для параметра new_user установите значение TRUE.

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

Описание скрипта на R

За что я люблю R, так это за множество готовых пакетов с уже написанными функциями. Так, например, для создания этого скрипта оказалась полезной функция ga_users_list из пакета googleAnalyticsR Марка Эдмондсона. С её помощью можно получить список пользователей, у которых есть доступ к определенному аккаунту/ресурсу/представлению в Analytics.

Вот как выглядит эта функция:

где

accountId — идентификатор аккаунта Google Analytics,

webPropertyId — идентификатор ресурса Google Analytics,

viewId — идентификатор представления Google Analytics.

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

Рассмотрим самый простой пример использования функции ga_users_list для аккаунта OdesSeo.

Получить список пользователей, у которых есть доступ к аккаунту Гугл Аналитикс

В переменную acc я записала идентификатор аккаунта OdesSeo. Его можно посмотреть в административной панели Google Analytics (настройки аккаунта):

просмотр идентификатора аккаунта OdesSeo в административной панели Google Analytics, который записан в переменной асс

ga_users_list вернула список почт пользователей, у которых есть права к аккаунту Google Analytics OdesSeo, а также уровни разрешений этих пользователей.

список почтовых адресов, у которых есть права доступа к аккаунту Google Analytics

На скриншоте мы видим два столбца с разрешениями — “permissions.effective” и “permissions.local”. Это связано с тем, что в API используются действующие (effective) и локальные (local) разрешения. Для назначения разрешений с помощью API необходимо использовать permissions.local. Разрешения effective наследуются от родительских ресурсов. Напомню, что структура аккаунтов Google Analytics имеет следующие уровни: аккаунты, ресурсы и представления. На каждом из этих уровней можно назначать права для пользователя. Разрешения более высокого уровня наследуются. Если права для пользователя настроены на уровне аккаунта, то они будут распространяться на ресурсы и представления этого аккаунта. При переходе вниз по иерархии предоставляемые разрешения могут только увеличиваться. У прав, заданных на каком-либо уровне, приоритет выше, чем у тех, что унаследованы.

Например, при вызове функции ga_users_list для уровня ресурса

вызов функции ga_users_list для уровня ресурса

мы можем заметить, что столбец “permissions.local” пуст для всех пользователей, кроме одного. Это значит, что для всех пользователей, кроме первого в списке, права были назначены на уровне аккаунта и наследуются для ресурса. Для первого же пользователя право на изменение (EDIT) было назначено на уровне аккаунта, а право на управление (MANAGE_USERS)  — на уровне ресурса.

просмотр уровней доступа для пользователей Google Analytics

У пользователей могут быть следующие уровни доступа:

  • MANAGE_USERS (управление) – добавление и удаление пользователей, настройка разрешений.
  • EDIT (изменение) – добавление, изменение и удаление аккаунтов, ресурсов, представлений, фильтров, целей и пр., но без права управления пользователями.
  • COLLABORATE (совместное использование) — создание, изменение и удаление личных объектов. Совместное использование общих объектов.
  • READ_AND_ANALYZE (чтение и анализ) — просмотр данных, создание личных объектов, просмотр общих объектов без внесения изменений.

В скрипте в цикле осуществляется перебор всех аккаунтов, к которым у вас (у почты, для которой проведена авторизация) есть доступ. С помощью функции ga_users_list я получаю список пользователей, у которых есть доступ для конкретного аккаунта Google Analytics, и если среди этих почт есть адрес, для которого нужно закрыть доступ, вызываю функцию удаления прав. Удаление происходит с использованием метода DELETE.

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

Полный код скрипта можно посмотреть тут.

Для более удобного использования я оформила скрипт в отдельную функцию delete_users_permissions.

Чтобы использовать эту функцию нужно скопировать и запустить следующий фрагмент кода:

Как интерпретировать результаты работы скрипта

При успешном выполнении скрипта вы должны получить что-то подобное:

интерпретация результатов работы скрипта

Разберем подробнее результаты выполнения кода.

Если для почты 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. Удачи=)