В этом руководстве описаны шаги, необходимые для доступа к API отчетов Google Analytics версии 4.
1. Включите API
Чтобы начать использовать Analytics Reporting API v4, вам необходимо сначала использовать инструмент настройки , который поможет вам создать проект в консоли Google API, включить API и создать учетные данные.
Создать учетные данные
- Откройте страницу учетных записей службы . При появлении запроса выберите проект.
- Нажмите учетную запись службы» , введите имя и описание учетной записи службы. Вы можете использовать идентификатор учетной записи службы по умолчанию или выбрать другой, уникальный. Когда закончите, нажмите «Создать» .
- Следующий раздел «Разрешения учетной записи службы (необязательно)» не является обязательным. Нажмите Продолжить .
- На экране «Предоставить пользователям доступ к этой учетной записи службы» прокрутите вниз до раздела «Создать ключ» . Нажмите Создать ключ» .
- На появившейся боковой панели выберите формат вашего ключа: рекомендуется JSON .
- Нажмите Создать . Ваша новая пара открытого/закрытого ключей генерируется и загружается на ваш компьютер; он служит единственной копией этого ключа. Информацию о том, как безопасно хранить данные, см. в разделе Управление ключами сервисных учетных записей .
- Нажмите «Закрыть» в диалоговом окне «Закрытый ключ, сохраненный на вашем компьютере» , затем нажмите « Готово», чтобы вернуться к таблице ваших учетных записей служб.
Добавить учетную запись службы в учетную запись Google Analytics
Вновь созданная учетная запись службы будет иметь адрес электронной почты, похожий на:
quickstart@PROJECT-ID.iam.gserviceaccount.com
Используйте этот адрес электронной почты, чтобы добавить пользователя в представление Google Analytics, к которому вы хотите получить доступ через API. Для этого руководства необходимы только разрешения на чтение и анализ .
2. Установите клиентскую библиотеку.
Чтобы установить Java-клиент Google Analytics API, необходимо загрузить zip-файл, содержащий все файлы jar, которые необходимо извлечь и скопировать в путь к классам Java.
- Загрузите клиентскую библиотеку Java Analytics Reporting API v4 , которая поставляется в виде ZIP-файла со всеми необходимыми зависимостями.
- Извлеките ZIP-файл.
- Добавьте все JAR-файлы из каталога
libs
в свой путь к классам. - Добавьте jar
google-api-services-analyticsreporting-v4-[version].jar
в свой путь к классам.
Подробности среды Java
Затмение
Для Eclipse см. этот вопрос StackOverflow для получения инструкций по добавлению JAR-файлов в путь к классам вашего проекта.
NetBeans
Для NetBeans см. этот вопрос StackOverflow для получения инструкций по добавлению JAR-файлов в путь к классам вашего проекта.
IntelliJ ИДЕЯ
Для IntelliJ IDEA см. этот вопрос StackOverflow, чтобы получить инструкции по добавлению JAR-файлов в путь к классам вашего проекта.
Командная строка
При разработке из командной строки добавьте следующее к вызовам команд javac
и java
:
-classpath /path/to/directory/with/unzipped/jars
3. Настройте образец
Вам нужно будет создать один файл с именем HelloAnalyticsReporting.java
, который будет содержать данный пример кода.
- Скопируйте или загрузите следующий исходный код в
HelloAnalyticsReporting.java
.
- Переместите ранее загруженный
client_secrets.json
в тот же каталог, что и пример кода. - Замените значения
KEY_FILE_LOCATION
соответствующими значениями из консоли разработчика.
- Замените значение
VIEW_ID
идентификатором представления, к которому вы хотите получить доступ.
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 java.io.FileInputStream; import java.io.IOException; import java.security.GeneralSecurityException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import com.google.api.services.analyticsreporting.v4.AnalyticsReportingScopes; import com.google.api.services.analyticsreporting.v4.AnalyticsReporting; import com.google.api.services.analyticsreporting.v4.model.ColumnHeader; import com.google.api.services.analyticsreporting.v4.model.DateRange; import com.google.api.services.analyticsreporting.v4.model.DateRangeValues; import com.google.api.services.analyticsreporting.v4.model.GetReportsRequest; import com.google.api.services.analyticsreporting.v4.model.GetReportsResponse; import com.google.api.services.analyticsreporting.v4.model.Metric; import com.google.api.services.analyticsreporting.v4.model.Dimension; import com.google.api.services.analyticsreporting.v4.model.MetricHeaderEntry; import com.google.api.services.analyticsreporting.v4.model.Report; import com.google.api.services.analyticsreporting.v4.model.ReportRequest; import com.google.api.services.analyticsreporting.v4.model.ReportRow; public class HelloAnalyticsReporting { private static final String APPLICATION_NAME = "Hello Analytics Reporting"; private static final JsonFactory JSON_FACTORY = GsonFactory.getDefaultInstance(); private static final String KEY_FILE_LOCATION = "<REPLACE_WITH_JSON_FILE>"; private static final String VIEW_ID = "<REPLACE_WITH_VIEW_ID>"; public static void main(String[] args) { try { AnalyticsReporting service = initializeAnalyticsReporting(); GetReportsResponse response = getReport(service); printResponse(response); } catch (Exception e) { e.printStackTrace(); } } /** * Initializes an Analytics Reporting API V4 service object. * * @return An authorized Analytics Reporting API V4 service object. * @throws IOException * @throws GeneralSecurityException */ private static AnalyticsReporting initializeAnalyticsReporting() throws GeneralSecurityException, IOException { HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport(); GoogleCredential credential = GoogleCredential .fromStream(new FileInputStream(KEY_FILE_LOCATION)) .createScoped(AnalyticsReportingScopes.all()); // Construct the Analytics Reporting service object. return new AnalyticsReporting.Builder(httpTransport, JSON_FACTORY, credential) .setApplicationName(APPLICATION_NAME).build(); } /** * Queries the Analytics Reporting API V4. * * @param service An authorized Analytics Reporting API V4 service object. * @return GetReportResponse The Analytics Reporting API V4 response. * @throws IOException */ private static GetReportsResponse getReport(AnalyticsReporting service) throws IOException { // Create the DateRange object. DateRange dateRange = new DateRange(); dateRange.setStartDate("7DaysAgo"); dateRange.setEndDate("today"); // Create the Metrics object. Metric sessions = new Metric() .setExpression("ga:sessions") .setAlias("sessions"); Dimension pageTitle = new Dimension().setName("ga:pageTitle"); // Create the ReportRequest object. ReportRequest request = new ReportRequest() .setViewId(VIEW_ID) .setDateRanges(Arrays.asList(dateRange)) .setMetrics(Arrays.asList(sessions)) .setDimensions(Arrays.asList(pageTitle)); ArrayList<ReportRequest> requests = new ArrayList<ReportRequest>(); requests.add(request); // Create the GetReportsRequest object. GetReportsRequest getReport = new GetReportsRequest() .setReportRequests(requests); // Call the batchGet method. GetReportsResponse response = service.reports().batchGet(getReport).execute(); // Return the response. return response; } /** * Parses and prints the Analytics Reporting API V4 response. * * @param response An Analytics Reporting API V4 response. */ private static void printResponse(GetReportsResponse response) { for (Report report: response.getReports()) { ColumnHeader header = report.getColumnHeader(); List<String> dimensionHeaders = header.getDimensions(); List<MetricHeaderEntry> metricHeaders = header.getMetricHeader().getMetricHeaderEntries(); List<ReportRow> rows = report.getData().getRows(); if (rows == null) { System.out.println("No data found for " + VIEW_ID); return; } for (ReportRow row: rows) { List<String> dimensions = row.getDimensions(); List<DateRangeValues> metrics = row.getMetrics(); for (int i = 0; i < dimensionHeaders.size() && i < dimensions.size(); i++) { System.out.println(dimensionHeaders.get(i) + ": " + dimensions.get(i)); } for (int j = 0; j < metrics.size(); j++) { System.out.print("Date Range (" + j + "): "); DateRangeValues values = metrics.get(j); for (int k = 0; k < values.getValues().size() && k < metricHeaders.size(); k++) { System.out.println(metricHeaders.get(k).getName() + ": " + values.getValues().get(k)); } } } } } }
4. Запустите образец
Если вы используете IDE, убедитесь, что в качестве цели запуска по умолчанию установлен класс HelloAnalytics
. В противном случае вы можете скомпилировать и запустить приложение из командной строки:
Скомпилируйте образец, используя:
javac -classpath '/path/to/analyticsreporting/*:/path/to/analyticsreporting/libs/*' HelloAnalyticsReporting.java
Запустите образец, используя:
java -classpath '.:/path/to/analyticsreporting/*:/path/to/analyticsreporting/libs/*' HelloAnalyticsReporting
Когда вы выполните эти шаги, в образце выводится количество сеансов за последние семь дней для данного представления.