Questo tutorial illustra i passaggi necessari per accedere alla versione 4 dell'API Analytics Reporting.
1. Abilita l'API
Per iniziare a utilizzare l'API Analytics Reporting v4, devi prima utilizzare lo strumento di configurazione, che ti guiderà 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 che viene visualizzato, seleziona il formato della chiave (quello consigliato è 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 classpath Java.
- Scarica la libreria client Java della versione 4 dell'API Analytics Reporting, raggruppata come file ZIP con tutte le dipendenze richieste.
- Estrai il file ZIP.
- Aggiungi tutti i JAR all'interno della directory
libs
al tuo classpath. - Aggiungi il jar
google-api-services-analyticsreporting-v4-[version].jar
al tuo classpath.
Dettagli dell'ambiente Java
Eclipse
Per Eclipse, consulta questa domanda di StackOverflow per istruzioni sull'aggiunta di JAR al percorso di classe del progetto.
NetBeans
Per NetBeans, consulta questa domanda di StackOverflow per istruzioni sull'aggiunta di JAR al percorso di classe del progetto.
IDEA IntelliJ
Per IDEA IntelliJ, consulta questa domanda di StackOverflow per istruzioni sull'aggiunta di JAR al percorso di classe del progetto.
Riga di comando
Se sviluppi dalla riga di comando, aggiungi quanto segue alle chiamate dei comandi javac
e java
:
-classpath /path/to/directory/with/unzipped/jars
3. Configura l'anteprima
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 di
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 alternativa, 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, il campione restituisce il numero di sessioni degli ultimi sette giorni per la vista in questione.