Нумерация страниц в Google Analytics с использованием Java - PullRequest
0 голосов
/ 19 февраля 2020

Я выполняю извлечение данных из Google Analytics, используя Java, и я следую этому примеру: https://developers.google.com/analytics/devguides/reporting/core/v4/quickstart/service-java

Мне удалось извлечь нужные мне данные, но я не могу понять, как установить start-index, используя его клиент. Ниже вы можете увидеть изменения, которые я внес в стандартную реализацию. Я могу установить размер страницы, но не могу узнать, как установить start-index.

public GetReportsResponse getReport(String dateStart, String dateEnd) throws IOException {

        String[] metricsArr = {"ga:users", "ga:newUsers", "ga:sessions", "ga:totalEvents"};
        String[]  dimensionsArr = {"ga:eventLabel","ga:eventCategory","ga:eventAction", "ga:country", "ga:countryIsoCode", "ga:dateHourMinute"};

        // Create the DateRange object.
        DateRange dateRange = new DateRange();
        dateRange.setStartDate(dateStart);
        dateRange.setEndDate(dateEnd);

        // Create the Metrics object.
        ArrayList<Metric> metrics = new ArrayList<Metric>();
        for(String item : metricsArr){
            Metric m = new Metric().setExpression(item).setAlias(item.replace("ga:", ""));
            metrics.add(m);
        }

        ArrayList<Dimension> dimensions = new ArrayList<Dimension>();
        for(String item : dimensionsArr){
            Dimension d = new Dimension().setName(item);
            dimensions.add(d);
        }

        // Create the ReportRequest object.
        ReportRequest request = new ReportRequest()
                .setViewId(this.VIEW_ID)
                .setDateRanges(Arrays.asList(dateRange))
                .setMetrics(metrics)
                .setDimensions(dimensions)
                .setFiltersExpression("ga:eventCategory=@NOTICE,ga:eventCategory==Document,ga:eventCategory==Document reader")
                .setPageSize(10000);

        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;
    }

Как мне добиться этого, чтобы я мог перемещаться по всем страницам и извлекать все элементы?

Спасибо за любую помощь

1 Ответ

1 голос
/ 25 февраля 2020

В Reporting API V4 используются маркеры страниц. Ответ от API отчетов вернет токен следующей страницы, см. nextPageToken . Используя это, вы можете сделать точно такой же вызов, но обновив pageToken в запросе с помощью nextpagetoken из предыдущего ответа. Обратите внимание, что при первом вызове API отчетов не будет привязан маркер страницы к запросу, а на последней странице не будет установлен набор nextpage.

Надеюсь, это поможет.

...