前提
PHP、Google Analytics APIでPVランキングを作成したいのです。
下記ページを参照に対応してみています。
https://blog.apar.jp/web/11573/
phpコードをサーバーに置き、アクセスしたところ実行されませんでした。
var_dumpを用いながらチェックしていると下記箇所で何も表示されなくなりました。
綴り間違いやアロー演算子がハイフンになっているなど基本的な事を確認したのですが、
どれも正しく原因が不明です。
php
1$reports_obj = $analytics->reports->batchGet( $body ); 2var_dump($reports_obj);
実現したいこと
下記コードを実行できる形にする
該当のソースコード
php
1<?php 2 3// Google API クライアントライブラリの読込み 4require_once __DIR__ . '/google-api-php-client--PHP7.4/vendor/autoload.php'; 5 6// 鍵ファイルのパス 7$key_file_location = __DIR__ . '/client_secret_xxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxx.apps.googleusercontent.com.json'; 8 9// ビューID 10$view_id = 'XXXXXXXXXX'; 11 12// 認証処理 13$client = new Google_Client(); 14$client->setApplicationName('sample'); 15$client->setAuthConfig( $key_file_location ); 16$client->setScopes(['https://www.googleapis.com/auth/analytics.readonly']); 17$analytics = new Google_Service_AnalyticsReporting($client); 18 19//var_dump($analytics);//どうやらちゃんと何か取得出来ている 20 21// データを取得する期間 22$dateRange = new Google_Service_AnalyticsReporting_DateRange(); 23$today = date("Y-m-d"); 24$lastMonth = date("Y-m-d", strtotime("-1 month")); 25$dateRange->setStartDate( $today ); 26$dateRange->setEndDate( $lastMonth ); 27 28// 取得するメトリクスの指定 29// https://developers.google.com/analytics/devguides/reporting/core/dimsmets 30// PV 31$pageviews = new Google_Service_AnalyticsReporting_Metric(); 32$pageviews->setExpression('ga:pageviews'); 33// セッション 34$sessions = new Google_Service_AnalyticsReporting_Metric(); 35$sessions->setExpression('ga:sessions'); 36// ユーザー 37$users= new Google_Service_AnalyticsReporting_Metric(); 38$users->setExpression('ga:users'); 39 40// リクエストの作成 41$request = new Google_Service_AnalyticsReporting_ReportRequest(); 42$request->setViewId($view_id); 43$request->setDateRanges($dateRange); 44$request->setMetrics(array($pageviews, $sessions, $users)); 45 46//var_dump($request);//どうやらちゃんと何か取得出来ている 47 48// リクエスト実行 49$body = new Google_Service_AnalyticsReporting_GetReportsRequest(); 50$body->setReportRequests(array($request)); 51 52var_dump($body);//どうやらちゃんと何か取得出来ている 53 54$reports_obj = $analytics->reports->batchGet( $body ); 55 56var_dump($reports_obj);//ここで何もひょうじされない 57 58// オブジェクトを配列変数に変換 59$reports_array = json_decode(json_encode($reports_obj), true); 60 61//var_dump($reports_array['reports'][0]['data']['totals'][0]); 62 63/** 64 * Parses and prints the Analytics Reporting API V4 response. 65 * 66 * @param An Analytics Reporting API V4 response. 67 */ 68function printResults($reports) { 69 for ( $reportIndex = 0; $reportIndex < count( $reports ); $reportIndex++ ) { 70 $report = $reports[ $reportIndex ]; 71 $header = $report->getColumnHeader(); 72 $dimensionHeaders = $header->getDimensions(); 73 $metricHeaders = $header->getMetricHeader()->getMetricHeaderEntries(); 74 $rows = $report->getData()->getRows(); 75 76 for ( $rowIndex = 0; $rowIndex < count($rows); $rowIndex++) { 77 $row = $rows[ $rowIndex ]; 78 $dimensions = $row->getDimensions(); 79 $metrics = $row->getMetrics(); 80 for ($i = 0; $i < count($dimensionHeaders) && $i < count($dimensions); $i++) { 81 print($dimensionHeaders[$i] . ": " . $dimensions[$i] . "\n"); 82 } 83 84 for ($j = 0; $j < count($metrics); $j++) { 85 $values = $metrics[$j]->getValues(); 86 for ($k = 0; $k < count($values); $k++) { 87 $entry = $metricHeaders[$k]; 88 print($entry->getName() . ": " . $values[$k] . "\n"); 89 } 90 } 91 } 92 } 93} 94?>
試したこと
コード内にvar_dumpを埋め込み順を追って追跡中
補足情報(FW/ツールのバージョンなど)
PHP Version 7.4.28
エラー内容
いただいたご意見元にエラーが表示されるようにしました。
表示されてたエラーは以下です。
php
1Fatal error: Uncaught Google\Service\Exception: { "error": { "code": 401, "message": "Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.", "errors": [ { "message": "Login Required.", "domain": "global", "reason": "required", "location": "Authorization", "locationType": "header" } ], "status": "UNAUTHENTICATED", "details": [ { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "reason": "CREDENTIALS_MISSING", "domain": "googleapis.com", "metadata": { "service": "analyticsreporting.googleapis.com", "method": "google.analytics.reporting.v4.Reporting.GetReports" } } ] } } in C:\home\site\wwwroot\google-api-php-client--PHP7.4\src\Http\REST.php:134 Stack trace: #0 C:\home\site\wwwroot\google-api-php-client--PH in C:\home\site\wwwroot\google-api-php-client--PHP7.4\src\Http\REST.php on line 134
回答1件
あなたの回答
tips
プレビュー