शुभ दिवस,

मैं वास्तव में Google Analytics से पहला 10,000 डेटा प्राप्त करने के बाद डेटा का अगला सेट प्राप्त करना चाहता हूं। आगे के शोध के बाद नेक्स्टपेजटोकन नामक एक चीज है, जो कि मुझे डेटा का अगला सेट प्राप्त करने में परेशानी हो रही है। मैंने इसे आजमाया है, लेकिन त्रुटि को त्रुटि देता रहा या कोई डेटा नहीं लिया गया। क्या किसी के पास पहले भी यही समस्या है? कृपया इस पर मेरी सहायता करें (नमूना कोड की बहुत सराहना की जाती है)। बहुत - बहुत धन्यवाद।

यहाँ मेरा कोड है:

 <?php
     $analytics = initializeAnalytics();     
     $response = getReport($analytics);  
     printResults($response);

    function initializeAnalytics()
    {
        $KEY_FILE_LOCATION = __DIR__ . 'MyFileDirectory';
        // Create and configure a new client object.
        $client = new Google_Client();
        $client->setApplicationName("Hello Analytics Reporting");
        $client->setAuthConfig($KEY_FILE_LOCATION);
        $client->setScopes(['https://www.googleapis.com/auth/analytics.readonly']);
        $analytics = new Google_Service_AnalyticsReporting($client);
        return $analytics;
     }

    function getReport($analytics) {
        // Replace with your view ID, for example XXXX.
        $VIEW_ID = "MyViewId";

        // Create the DateRange object.
        $dateRange = new Google_Service_AnalyticsReporting_DateRange();
        $dateRange->setStartDate("2017-04-01");
        $dateRange->setEndDate("2017-06-19");

        // Create the Metrics object.
        $totalEvents = new Google_Service_AnalyticsReporting_Metric();
        $totalEvents->setExpression("ga:totalEvents");
        $totalEvents->setAlias("totalEvents");

        //Create the Dimensions object.
        $clientId = new Google_Service_AnalyticsReporting_Dimension();
        $clientId->setName("ga:dimension4");
        $sessionId = new Google_Service_AnalyticsReporting_Dimension();
        $sessionId->setName("ga:dimension5");
        $eventLabel = new Google_Service_AnalyticsReporting_Dimension();
        $eventLabel->setName("ga:eventLabel");
        $timestamp = new Google_Service_AnalyticsReporting_Dimension();
        $timestamp->setName("ga:dimension3");

        // Create the ReportRequest object.
        $request = new Google_Service_AnalyticsReporting_ReportRequest();
        $request->setViewId($VIEW_ID);
        //set number of rows
        $request->setPageSize(10000);
        $request->setDateRanges($dateRange);
        $request->setMetrics(array($totalEvents));
        $request->setDimensions(array($clientId,$sessionId,$eventLabel, 
        $timestamp));   
        $body = new Google_Service_AnalyticsReporting_GetReportsRequest();
        $body->setReportRequests( array( $request) );
        return $analytics->reports->batchGet( $body );
    }

    function printResults($reports) {
        for ( $reportIndex = 0; $reportIndex < count( $reports ); $reportIndex++ ) 
        {
            $report = $reports[ $reportIndex ];
            $header = $report->getColumnHeader();
            $dimensionHeaders = $header->getDimensions();
            $metricHeaders = $header->getMetricHeader()->getMetricHeaderEntries();
            $rows = $report->getData()->getRows();  
            echo '<table border="1">';

            for ( $rowIndex = 0; $rowIndex < count($rows); $rowIndex++) {
                $row = $rows[ $rowIndex ];
                $dimensions = $row->getDimensions();
                $metrics = $row->getMetrics();
                echo '<tr>';     

                for ($i = 0; $i < count($dimensionHeaders) && $i < count($dimensions); $i++) 
                {
                    echo '<td>' . ": " . $dimensions[$i] . "\n" .'</td>';
                }
                for ($j = 0; $j < count($metrics); $j++) {
                    $values = $metrics[$j]->getValues();
                    for ($k = 0; $k < count($values); $k++) {
                        $entry = $metricHeaders[$k];
                        echo '<td>'  . ": " . $values[$k] . "\n" .'</td>' ;
                    }
                    echo '</tr>';
                }
            }
            echo '</table>';
      }
    }
?>
1
Ben 13 अगस्त 2017, 06:37

1 उत्तर

सबसे बढ़िया उत्तर

आपको प्रत्येक प्रतिक्रिया से nextPageToken मान प्राप्त करना होगा और प्रत्येक अगले अनुरोध पर सेट करना होगा:

$client = new \Google_Client();
/* ... */
$analytics = new \Google_Service_AnalyticsReporting($client);
$request = new \Google_Service_AnalyticsReporting_ReportRequest();
$request->setViewId($view);
$request->setMetrics($metrics);
$request->setDateRanges($dateRange);
$request->setPageSize(10000);
/* ... */
$body = new \Google_Service_AnalyticsReporting_GetReportsRequest();
$body->setReportRequests(array($request));
do {
    $response = $analytics->reports->batchGet($body, $params);
    /* ...
    Processing $response
    ... */
    $request->setPageToken($response[0]->getNextPageToken());
} while ($response[0]->getNextPageToken() != '');
2
Dmitry Sulman 13 अगस्त 2017, 11:26
मैंने ऊपर दिए गए कोड की कोशिश की लेकिन मुझे खाली स्क्रीन मिली। क्या मैं स्पष्ट कर सकता हूं कि आपके द्वारा प्रदान किया गया कोड मुझे किस विशेष पंक्ति में सम्मिलित करना चाहिए? क्षमा करें, नौसिखिया यहाँ।
 – 
Ben
18 सितंबर 2017, 12:31