В этом руководстве описывается, как получить доступ к аккаунту Google Analytics, отправлять запросы в API этого сервиса, обрабатывать ответы и извлекать результаты обработки с применением Core Reporting API 3.0, Management API 3.0 и OAuth 2.0.
Шаг 1. Включите Google Analytics API
Перед началом работы с Google Analytics API используйте инструмент настройки, чтобы создать проект в Google API Console, включить API и зарегистрировать учетные данные.
Создайте идентификатор клиента
- Откройте страницу Сервисные аккаунты. При необходимости выберите проект.
- Нажмите Создать сервисный аккаунт.
- Укажите название аккаунта и выберите Создать новый закрытый ключ. Если вы хотите предоставить сервисному аккаунту права в рамках домена Google Workspace, выберите вариант Включить делегирование доступа к данным в домене Google Workspace. Затем нажмите кнопку Сохранить.
Система создаст новую пару ключей (открытый и закрытый), которая будет сохранена на ваш компьютер. Эта копия является единственной, и вы должны самостоятельно обеспечивать ее сохранность.
Добавьте сервисный аккаунт в аккаунт Google Analytics
Новый сервисный аккаунт будет связан с адресом электронной почты <projectId>-<uniqueId>@developer.gserviceaccount.com
. Используйте этот адрес, чтобы добавить пользователя в аккаунт Google Analytics, к которому вам нужен доступ через API. Для этого руководства требуется разрешение на чтение и анализ.
Шаг 2. Установите клиентскую библиотеку Google
Чтобы установить клиент Java для Google Analytics API, необходимо скачать ZIP-архив, содержащий все файлы JAR. Их нужно извлечь и скопировать в путь к классу Java.
- Скачайте клиентскую библиотеку Google Analytics для Java. Она запакована в ZIP-файл со всеми необходимыми взаимосвязями.
- Распакуйте ZIP-файл.
- Добавьте все файлы JAR из каталога
libs
в путь к классу Java. - Добавьте файл
google-api-services-analytics-v3-[version].jar
в путь к классу.
Шаг 3. Настройте пример
Вам нужно создать файл HelloAnalytics.java
с кодом этого примера.
- Скопируйте или загрузите следующий код для
HelloAnalytics.java
. - Переместите ранее скачанный файл
client_secrets.JSON
в каталог с примером кода. - Замените значения
KEY_FILE_LOCATION
значениями из Developers Console.
import com.google.api.client.googleapis.auth.oauth2.GoogleCredential; import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport; import com.google.api.client.http.HttpTransport; import com.google.api.client.json.JsonFactory; import com.google.api.client.json.gson.GsonFactory; import com.google.api.services.analytics.Analytics; import com.google.api.services.analytics.AnalyticsScopes; import com.google.api.services.analytics.model.Accounts; import com.google.api.services.analytics.model.GaData; import com.google.api.services.analytics.model.Profiles; import com.google.api.services.analytics.model.Webproperties; import java.io.FileInputStream; import java.io.IOException; import java.security.GeneralSecurityException; import java.io.IOException; /** * A simple example of how to access the Google Analytics API using a service * account. */ public class HelloAnalytics { private static final String APPLICATION_NAME = "Hello Analytics"; private static final JsonFactory JSON_FACTORY = GsonFactory.getDefaultInstance(); private static final String KEY_FILE_LOCATION = "<REPLACE_WITH_JSON_FILE>"; public static void main(String[] args) { try { Analytics analytics = initializeAnalytics(); String profile = getFirstProfileId(analytics); System.out.println("First Profile Id: "+ profile); printResults(getResults(analytics, profile)); } catch (Exception e) { e.printStackTrace(); } } /** * Initializes an Analytics service object. * * @return An authorized Analytics service object. * @throws IOException * @throws GeneralSecurityException */ private static AnalyticsReporting initializeAnalytic() throws GeneralSecurityException, IOException { HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport(); GoogleCredential credential = GoogleCredential .fromStream(new FileInputStream(KEY_FILE_LOCATION)) .createScoped(AnalyticsScopes.all()); // Construct the Analytics service object. return new Analytics.Builder(httpTransport, JSON_FACTORY, credential) .setApplicationName(APPLICATION_NAME).build(); } private static String getFirstProfileId(Analytics analytics) throws IOException { // Get the first view (profile) ID for the authorized user. String profileId = null; // Query for the list of all accounts associated with the service account. Accounts accounts = analytics.management().accounts().list().execute(); if (accounts.getItems().isEmpty()) { System.err.println("No accounts found"); } else { String firstAccountId = accounts.getItems().get(0).getId(); // Query for the list of properties associated with the first account. Webproperties properties = analytics.management().webproperties() .list(firstAccountId).execute(); if (properties.getItems().isEmpty()) { System.err.println("No Webproperties found"); } else { String firstWebpropertyId = properties.getItems().get(0).getId(); // Query for the list views (profiles) associated with the property. Profiles profiles = analytics.management().profiles() .list(firstAccountId, firstWebpropertyId).execute(); if (profiles.getItems().isEmpty()) { System.err.println("No views (profiles) found"); } else { // Return the first (view) profile associated with the property. profileId = profiles.getItems().get(0).getId(); } } } return profileId; } private static GaData getResults(Analytics analytics, String profileId) throws IOException { // Query the Core Reporting API for the number of sessions // in the past seven days. return analytics.data().ga() .get("ga:" + profileId, "7daysAgo", "today", "ga:sessions") .execute(); } private static void printResults(GaData results) { // Parse the response from the Core Reporting API for // the profile name and number of sessions. if (results != null && !results.getRows().isEmpty()) { System.out.println("View (Profile) Name: " + results.getProfileInfo().getProfileName()); System.out.println("Total Sessions: " + results.getRows().get(0).get(0)); } else { System.out.println("No results found"); } } }
Шаг 4. Запустите пример
После того как вы включили Google Analytics API, установили клиентскую библиотеку Google API для Java и настроили код примера, он готов к запуску.
Если вы используете IDE, убедитесь, что цель запуска по умолчанию определена классом HelloAnalytics
.
В противном случае вы можете составить и запустить приложение из командной строки.
- Скомпилируйте пример, используя следующий код:
javac -classpath /path/to/google/lib/*:/path/to/google/lib/libs/* HelloAnalytics.java
- Запустите прим, используя следующий код:
java -classpath ./:/path/to/google/lib/*:/path/to/google/lib/libs/* HelloAnalytics
После выполнения всех шагов будет выведено название первого профиля авторизованного пользователя в Google Analytics и количество сеансов за последние семь дней.
Имея авторизованный служебный объект Analytics, вы можете запустить любой из примеров кода, приведенных в справочных материалах по Management API. Например, можно попробовать изменить код, чтобы использовать метод accountSummaries.list.