Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
3
Help us understand the problem. What is going on with this article?
@ma7ma7pipipi

laravel 5.7 Analytics API

More than 1 year has passed since last update.

追記

period 10年とかにするとバグる。
で、以下の方法で最初の日付を固定する


$startDate = Carbon::parse('2014-06-02');
$endDate = Carbon::now();
$period = Period::create($startDate, $endDate);



$startDate = Carbon::now()->subDay(7);
$endDate = Carbon::now();
$period = Period::create($startDate, $endDate);

ページのアクセス数とかランキングとか作るならAnalyticsを使って、
Cronで回してDBに突っ込むべき。

参考
https://qiita.com/uehatsu/items/255cbe8940b324d051ef

laravel でのインスコ


composer require spatie/laravel-analytics

以下2つを追加

/config/app.php


'providers' => [
    Spatie\Analytics\AnalyticsServiceProvider::class,
];

'aliases' => [
    'Analytics' => Spatie\Analytics\AnalyticsFacade::class,
];



php artisan vendor:publish --provider="Spatie\Analytics\AnalyticsServiceProvider"

コンフィグファイル系の用意

1 credentialsファイルを用意

credentialsファイル(JSON形式)をダウンロードしたら、storage/app/analytics/service-account-credentials.jsonとして保存。

2 メールアドレスに権限を設定

credentialsファイルを開き、client_emailをコピーし、Google Analyticsの管理画面でそのメールアドレスに「表示と分析」の権限を付与する。

3 ビューIDを設定

.env

\.env

ANALYTICS_VIEW_ID=123456789

利用

HogeController.php

use Spatie\Analytics\AnalyticsClientFactory;
use Spatie\Analytics\Analytics;
use Spatie\Analytics\Period;


class HogeController extends Controller
{
    public function test()
    {

        $client = AnalyticsClientFactory::createForConfig(config('analytics'));
        $ga     = new Analytics($client, config('analytics.view_id'));

        $data = $ga->performQuery(
            Period::years(1),//これはダメ。 carbon で$period を取得しておく。
            'ga:pageviews',
            [
                'dimensions' => 'ga:pagePath',
                'sort' => '-ga:pageviews', //PV数多い順に
//                'filters' => 'ga:pageviews<=10',
                'filters' => 'ga:pagePath=~/f\//*'// /f/ で始まる URLのみ
            ]

        );


        pr($data);
        die;


これでデータを取得できる。

おまけ


        $client = AnalyticsClientFactory::createForConfig(config('analytics'));
        $ga     = new Analytics($client, config('analytics.view_id'));


        $options = [
            'start-index' => 1,//1から始まる。結果が10000超える場合だけこれをいじればいい。
            'max-results' => 10000,//何件取得するか
            'dimensions' => 'ga:pagePath',
            'sort' => '-ga:pageviews', //P1V数多い順に
//                'filters' => 'ga:pageviews<=10',
            'filters' => 'ga:pagePath=~/f\//*'// /f/ で始まる URLのみ
        ];



        $pageviews = $ga->performQuery(
            Period::years(10),
            'ga:pageviews',
            $options
        );

        $count = [];
        foreach ($pageviews->rows as $v) {
            $tmp = explode("/",$v[0]);
            if (is_numeric($tmp[2])) {
                $count[$tmp[2]] = [
                    'id' => $tmp[2],
                    'pageviews' => $v[1]
                ];
            }
        }




        $day7 = $ga->performQuery(
            Period::days(7),
            'ga:pageviews',
            $options
        );


        foreach ($day7->rows as $v) {
            $tmp = explode("/",$v[0]);
            if (is_numeric($tmp[2])) {

                $count[$tmp[2]] = [
                        'id' => $tmp[2],
                        'day7pageviews' => $v[1]
                    ];

            }
        }


//        保存できんので、配列の順番を 0からに振り直す
        $count = array_values($count);




        Fortune::insertOnDuplicateKey($count);

//        ゴミデータを削除
        $res = Fortune::query()
            ->where('social_id',0)
        ->delete();//削除

3
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ma7ma7pipipi
こんばんわ。PHP界の神です。 お仕事下さい。 浮気したことは人生で1度もありません。 一途なので。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
3
Help us understand the problem. What is going on with this article?