前提・実現したいこと
はじめて利用するので、分かりづらかったら申し訳ないです。
Google Analytics APIを利用したアクセスランキングを作成しようとしています。
WordPressではなく、テキストエディタで作成したサイトです。
特定のディレクトリのみを対象にしたいので、新しくビューを作り、そのビューIDを使っています。
発生している問題・エラーメッセージ
ランキングは1位~10位まで表示しており、期間は15日前から本日までです。
昨日までは特に問題なかったのですが、先程見たら同じページが2つ(1位と7位に)表示されていました。
Google Analyticsの方で期間を変えたり全期間にして見てもそのページは1つしか見つからないので、phpの方が間違っているのだと思います。
初心者ゆえにどこが間違っているのかさっぱり分からず...。
ちなみにページビュー数はGoogle Analyticsの方と全く違います(APIで取得した方は少ないです)が、これは最初からなので諦めています。
該当のソースコード
長いですがごめんなさい。
echoの部分はちょっと端折っています(表示は正常なのでechoの部分は間違っていないはずです)。
php
1require_once __DIR__ . '/vendor/autoload.php'; 2$analytics = initializeAnalytics(); 3$response = getReport( $analytics ); 4printResults( $response ); 5 6function initializeAnalytics() { 7 $KEY_FILE_LOCATION = __DIR__ . '/service-account-credentials.json'; 8 $client = new Google_Client(); 9 $client->setApplicationName( "Hello Analytics Reporting" ); 10 $client->setAuthConfig( $KEY_FILE_LOCATION ); 11 $client->setScopes( ['https://www.googleapis.com/auth/analytics.readonly'] ); 12 $analytics = new Google_Service_AnalyticsReporting( $client ); 13 return $analytics; 14} 15function getReport( $analytics ) { 16 $VIEW_ID = "対象のビューID"; 17 18 $dateRange = new Google_Service_AnalyticsReporting_DateRange(); 19 $dateRange->setStartDate( "15daysAgo" ); 20 $dateRange->setEndDate( "today" ); 21 22 $sessions = new Google_Service_AnalyticsReporting_Metric(); 23 $sessions->setExpression( "ga:sessions" ); 24 $sessions->setAlias( "sessions" ); 25 26 $dimention = new Google_Service_AnalyticsReporting_Dimension(); 27 $dimention->setName( 'ga:pagePath' ); 28 $dimention2 = new Google_Service_AnalyticsReporting_Dimension(); 29 $dimention2->setName( 'ga:pageTitle' ); 30 31 $orderby = new Google_Service_AnalyticsReporting_OrderBy(); 32 $orderby->setFieldName( "ga:sessions" ); 33 $orderby->setOrderType( "VALUE" ); 34 $orderby->setSortOrder( "DESCENDING" ); 35 36 $request = new Google_Service_AnalyticsReporting_ReportRequest(); 37 $request->setViewId( $VIEW_ID ); 38 $request->setDateRanges( $dateRange ); 39 $request->setMetrics( array( $sessions ) ); 40 $request->setDimensions( array( $dimention,$dimention2 ) ); 41 $request->setOrderBys( $orderby ); 42 $request->setPageSize(10); 43 44 $body = new Google_Service_AnalyticsReporting_GetReportsRequest(); 45 $body->setReportRequests( array( $request) ); 46 return $analytics->reports->batchGet( $body ); 47} 48 49function printResults( $reports ) { 50 $report = $reports[0]; 51 $rows = $report->getData()->getRows(); 52 for ( $rowIndex = 0; $rowIndex < count( $rows ); $rowIndex++ ) { 53 $row = $rows[ $rowIndex ]; 54 $dimensions = $row->getDimensions(); 55 $metrics = $row->getMetrics(); 56 $session = $metrics[0]->getValues()[0]; 57 58 echo '<a href="'.$dimensions[0].'">'; 59 //タイトルにサイト名と特定の文字列が入るのでそれを消したい 60 echo str_replace(array('●●●','▲▲▲'), '', $dimensions[1]); 61 echo '</a><br>'; 62 echo 'テキストを入れています'.$session.'テキストを入れています'; 63 echo "\n"; 64 } 65}
色々と調べてはみたのですがヒットするのは古い情報(前のバージョンのものでしょうか?)ばかりで、そちらのやり方では、ランキングの表示すらできませんでした。
あるサイトさんが新しいものの解説をしていたので、ほぼコピペをさせてもらいました。
原因が分かる方がみえましたら、どうかお知恵を拝借願えませんでしょうか?
また、Google Analytics API以外に(レンタルや広告が入るもの以外で)特定のディレクトリのみを対象にしたランキングが作成できるCGIやPHPなどはありますでしょうか?
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー