するさてさて、この間ここのブログで、LaravelからTwitterやwordpressに投稿するという記事を公開しました。その流れで他にも何かLaravelと連携できるものないかと考えていたところ、実際にクライアント様から承ったことがある内容を思い出しました。カレンダーとの連携です。守秘義務があるので詳しくは言えませんがそのシステムでは、ある注文データをLaravelだけでなく、Googleカレンダーとも同期し他のアプリなどからでも注文データにアクセスして業務の効率化をされていました。する基本的な使い方をご紹介したいと思います。合わせて読みたい実際にプログラムを書いていく前にあるシステムからGoogleカレンダーの操作を行うには、以下2つのサイトで事前に設定をする必要があります。コンソール側の作業まずはGoogleカレンダーにアクセスするための「アカウントキー」を取得しておきましょう。コンソールへアクセスしてください。シンプルに「calendar」と入力すれば以下のようにリストアップされると思います。APIの詳細ページが表示されるので、「有効にする」ボタンをクリックしてください。APIが有効になったら、移動先に表示されている「認証情報を作成」ボタンをクリックします。すると認証情報を入力するページが表示されるので、以下の項目をそれぞれ選択して「必要な認証情報」ボタンをクリックします。いいえ、使用しませんもしすでに他に認証情報が存在している場合は、以下のようにリストアップされますが、今回は分かりやすく説明するために「新しいサービスアカウントの作成」をクリックします。すると移動後にはページ上部に次のような表示が出るので、「サービスアカウントを作成」をクリックします。次にサービスアカウントの詳細を入力するフォームが表示されるので、以下のように入力して「作成」ボタンをクリックしてください。(もちろんお好みで変えてもらって大丈夫です)作成されると権限の設定が表示されますが、これは任意なのでパスして「続行」ボタンをクリックします。すると、ページが移動していろいろな情報が表示されますが、スクロールの下の方に以下のような場所があるので、「キーを作成」ボタンをクリックします。次に、キーのタイプをJSONにして「作成」ボタンをクリックしてください。すると、アカウントキーがjsonファイルとして自動的にダウンロードされるのでこのファイルをLaravelの/storage/app/jsonフォルダに保存しておきましょう。このファイルへのパスは後でLaravelの設定で使います。続いて、作成したサービスアカウントがGoogleカレンダーにアクセスできるように設定をします。Googleカレンダーにアクセスして、ページ右上にある歯車のマークをクリックして、「設定」を選択します。ページ移動すると、ページ左にマイカレンダーの設定という項目があるので、操作したいカレンダーのアカウントをクリックしてください。すると、次のページに以下のようなフォームが表示されるので、先ほど作成したサービスアカウントのメールアドレスを入力します。メールアドレスがわからない場合は、先ほどダウンロードしたJSONファイルの中にclient_emailとして書かれていますので、そちらを参照してください。「送信」ボタンをクリックします。最後にGoogleカレンダーの「カレンダーID」を取得してLaravelの.envファイルに追加しておきましょう。同じページの下の方に行くと、「カレンダーの統合」という項目があるので、そこに書かれているカレンダーIDをコピーしてください。コピーしたら、Laravelの.envファイルに次のように追加しておきます。GOOGLE_CALENDAR_ID=(あなたのカレンダーID)これで、Googleカレンダー側の作業は終了です。Laravel側の作業では、ここからLaravelでの作業になります。パッケージをインストールするまずはGoogleカレンダーを簡単に操作できるようになるパッケージspatie/laravel-google-calendarをインストールします。spatie/laravel-google-calendar設定するパッケージのインストールが完了したら、設定ファイルをconfigフォルダへコピーするために以下のコマンドを実行してください。--provider="Spatie\GoogleCalendar\GoogleCalendarServiceProvider"すると、config/google-calendar.phpというファイルが作成されるのでservice_account_credentials_jsonの部分を先ほどダウンロードして設置したjsonファイルのパスに変更してください。env('GOOGLE_CALENDAR_ID'),];これで設定も完了です。次の項目からは実際にGoogleカレンダーをLaravelから操作していきましょう。Googleカレンダーを操作する複数のイベントを取得する最もシンプルな方法まずはスケジュールを取得する一番シンプルな方法です。}}Event::get()を使うと、今後の全イベントのデータを取得することができます。(つまり過去データはこの方法では取得できません)そして、その個別$eventの主要なデータは以下のようになります。その他のデータについては、こちらのページをご覧ください。日時を指定してイベントデータを取得するある特定の日時を指定してイベントデータを取得するには、get()の第1、第2引数を使います。特定の日時「以降」の全イベントを取得する開始日時を指定するには第1引数を使います。Event::get($start_dt);特定の日時「以前」の全イベントを取得する終了日時を指定するには第2引数を使います。$end_dt);2つの日時の間にある全イベントを取得するある特定の範囲内の全イベントを取得するには第1引数、第2引数をともに指定します。$end_dt);検索文字列を指定してイベントを取得するタイトルなどでイベントを検索する場合はパラメータとしてqという値を第3引数に入れて実行します。$queryParameters);並べ替えをする取得するイベントを並べ替えするには、パラメータとしてorderByという値を第3引数に入れて実行します。updatedもstartTimeも昇順になります。個別のイベントを取得する各イベントがもっている個別の「カレンダーID」を指定してイベントを取得するにはfind()を使います。Event::find('(個別のカレンダーID)');イベントを追加するGoogleカレンダーに新しくイベントを追加するには、以下のように実行します。}イベントを変更するすでにGoogleカレンダーに登録されているイベントの内容を変更するには、まず該当するイベントを取得して、追加のときと同じようにして保存をします。'変更後のイベント名';$event->save();イベントを削除するすでに登録されたイベントを削除するには、delete()を使います。Event::find('(カレンダーID)');$event->delete();おわりにということで、今回はLaravelからGoogleカレンダーを操作する方法をご紹介しました。ちなみに、移転する前のブログでも一度同じ内容の記事を公開したことがあるのですが、そのときは今回使ったパッケージの存在を知らなかったので、おそらく今回の方が楽に実装できると思います。(GitHubのスターも600を超えています)また、Googleカレンダーを使った機能としては、今回紹介した注文データの同期だけでなく、在庫が少なくなってきたら「来月の●日に注文する」というようなアラームやリマインダーを設定する、なんてこともできるのでより便利な機能を開発できるんじゃないでしょうか。今回のテクニックを活用して開発してみてくださいね。開発スキルプログラム開発は15年以上。Laravel、Vue.jsをメインとしてPython(機械学習)やElectronの開発もお引き受けしております。過去2度カナダのバンクーバーに滞在していました。開発状況によりましては開発をお待ちいただく可能性がございますが、いつでもご相談は受けさせていただいております。お気軽にご連絡ください!お問い合わせフォーム開発してほしい機能を募集中!MITライセンスで公開します。詳しくはこちらの記事をご覧ください。ぷれりり・プレスリリース掲載無料のプレスリリース・スタンド!播磨孤道(はりまこどう)兵庫周辺のゆったり自転車一人旅の記事を書いていきます。