Google CalenderをLaravelアプリケーションから操作する(実践編)

Google Calenderを操作するための準備がお済みでない方は下記のURLから認証設定をしてください。

Laravelのインストール
早速、composerコマンドを使ってLaravelのインストールを行い、プロジェクトを作成していきます。

#ターミナル

 $ composer create-project --prefer-dist laravel/laravel laravel_google_calendar

インストールしたLaravelのバージョンは6.11.0です。


google/apiclientパッケージのインストール

#ターミナル

$ composer require google/apiclient:^2.0

秘密鍵のキーファイルの保存

認証設定で取得した秘密鍵のキーファイルをLaravelからアクセスできる場所に保存します。Laravelのインストールディレクトリのstorage/appの下にgoogle-calendarディレクトリを作成しキーファイルを保存します。


コントローラーファイルの作成

#ターミナル

$ php artisan make:controller GoogleCalendarController

コントローラが作成できたら、続いてweb.phpファイルにはルーティングを追加します。

#web.php

Route::resource('/calendar', 'GoogleCalendarController');


環境変数の設定

取得したカレンダーのIDは.envファイルに登録を行います。.envファイルの最後に追加してください。カレンダーIDは皆様の環境により異なります。

# .env

GOOGLE_CALENDAR_ID = "XXXXXXXXX@group.calendar.google.com"


Google Calenderからイベント一覧を取得

Google Calendarに登録されているイベントを取得します。

#GoogleCalendarController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Google_Client;
use Google_Service_Calendar;

class GoogleCalendarController extends Controller
{
    public function index(){

        $client = $this->getClient();
        $service = new Google_Service_Calendar($client);
        $calendarId = env('GOOGLE_CALENDAR_ID');
        $optParams = [];
        $results = $service->events->listEvents($calendarId, $optParams);
        $events = $results->getItems();

        foreach($events as $event){
            echo $event->getSummary().'';
        }  
    }

        public function getClient()
        {

            $client = new Google_Client();
            $client->setApplicationName('Google Calendar API plus Laravel');
            $client->setScopes(Google_Service_Calendar::CALENDAR_READONLY);
            $client->setAuthConfig(storage_path('app/google-calendar/XXXXXXX.json'));

            return $client;

        }
}

カレンダーのIDについては.envファイルに保存されているのでヘルパー関数envにパラメータを設定して取得しています。
$client->setAuthConfigメソッドではキーファイルを指定しています。保存した場合はヘルパー関数のstorage_pathを利用しています。
それではブラウザでhttp://127.0.0.1:8000/calendarへアクセスを行い確認しましょう。

こちらでカレンダーに登録しているイベントのタイトルが表示できれば完成です。
$client->setAuthConfig(storage_path('app/google-calendar/XXXXXXX.json'));
上記のパスはjsonファイルを保存しているパス名を正確に入力してください。

もし、パス名や.envファイルの記述が誤っていないのにエラーが出てしまう場合は下記のコマンドでキャッシュをクリアしてください。

#ターミナル

php artisan config:clear

最後に
本日はGoogle CalenderをLaravelアプリケーションから操作をしていきました。
いかがだったでしょうか?
本日も最後までご覧いただきありがとうございました。