Questo tutorial illustra i passaggi necessari per accedere all'API di reporting di Analytics v4.
1. Abilita l'API
Per iniziare a utilizzare la versione 4 dell'API Analytics Reporting, devi prima utilizzare lo strumento di configurazione, che ti guida nella creazione di un progetto nella console API di Google, nell'abilitazione dell'API e nella creazione delle credenziali.
Crea credenziali
- Apri la pagina Account di servizio. Se richiesto, seleziona un progetto.
- Fai clic su Crea account di servizio, quindi inserisci un nome e una descrizione per l'account di servizio. Puoi utilizzare l'ID account di servizio predefinito o sceglierne un altro univoco. Al termine, fai clic su Crea.
- La sezione Autorizzazioni dell'account di servizio (facoltativo) che segue non è obbligatoria. Fai clic su Continua.
- Nella schermata Concedi agli utenti l'accesso a questo account di servizio, scorri verso il basso fino alla sezione Crea chiave. Fai clic su Crea chiave.
- Nel riquadro laterale visualizzato, seleziona il formato della chiave: si consiglia di usare JSON.
- Fai clic su Crea. Viene generata e scaricata sul tuo computer una nuova coppia di chiavi pubblica/privata, che sarà l'unica copia esistente. Per informazioni su come archiviare le chiavi in modo sicuro, consulta la sezione Gestire le chiavi degli account di servizio.
- Fai clic su Chiudi nella finestra di dialogo Chiave privata salvata nel computer, poi fai clic su Fine per tornare alla tabella degli account di servizio.
Aggiungi un account di servizio all'account Google Analytics
L'account di servizio appena creato avrà un indirizzo email simile al seguente:
quickstart@PROJECT-ID.iam.gserviceaccount.com
Utilizza questo indirizzo email per aggiungere un utente alla vista di Google Analytics a cui vuoi accedere tramite l'API. Per questo tutorial sono necessarie solo le autorizzazioni di Lettura e analisi.
2. Installa la libreria client
Per installare il client Java dell'API di Google Analytics, devi scaricare un file ZIP contenente tutti i jar che devi estrarre e copiare nel tuo classpath Java.
- Scarica la libreria client Java v4 dell'API di reporting di Analytics, raggruppata come file ZIP con tutte le dipendenze richieste.
- Estrai il file ZIP.
- Aggiungi tutti i JAR all'interno della directory
libs
al percorso. - Aggiungi il jar
google-api-services-analyticsreporting-v4-[version].jar
al percorso del corso.
Dettagli dell'ambiente Java
Eclipse
Per Eclipse, consulta questa domanda di StackOverflow per istruzioni su come aggiungere JAR al percorso di classe del tuo progetto.
NetBeans
Per NetBeans, consulta questa domanda di StackOverflow per istruzioni su come aggiungere JAR al percorso della classe del progetto.
IDEA IntelliJ
Per IntelliJ IDEA, consulta questa domanda di StackOverflow per istruzioni su come aggiungere JAR al percorso di classe del tuo progetto.
Riga di comando
Se sviluppi dalla riga di comando, aggiungi quanto segue alle chiamate ai comandi javac
e java
:
-classpath /path/to/directory/with/unzipped/jars
3. Configura l'esempio
Devi creare un singolo file denominato HelloAnalyticsReporting.java
, che conterrà il codice campione fornito.
- Copia o scarica il seguente codice sorgente in
HelloAnalyticsReporting.java
.
- Sposta l'elemento
client_secrets.json
scaricato in precedenza nella stessa directory del codice di esempio. - Sostituisci i valori di
KEY_FILE_LOCATION
con i valori appropriati della Developer Console.
- Sostituisci il valore
VIEW_ID
con l'ID della vista a cui vuoi accedere.
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. Esegui l'esempio
Se utilizzi un IDE, assicurati che sia impostato un target di esecuzione predefinito sulla classe HelloAnalytics
.
In caso contrario, puoi compilare ed eseguire l'applicazione dalla riga di comando:
Compila l'esempio utilizzando:
javac -classpath '/path/to/analyticsreporting/*:/path/to/analyticsreporting/libs/*' HelloAnalyticsReporting.java
Esegui l'esempio utilizzando:
java -classpath '.:/path/to/analyticsreporting/*:/path/to/analyticsreporting/libs/*' HelloAnalyticsReporting
Al termine di questi passaggi, l'esempio restituisce il numero di sessioni per la vista specificata negli ultimi sette giorni.