CakePHP4でのGoogle API連携 後編
〜CakePHP4でのスケジュール操作〜

thumbnail_20211119.png

こんにちは、マイロプスでエンジニアをしているFukushimaです。
CakePHP4でGoogle APIを使用してカレンダーの予定を取得したり、追加、編集、削除をする方法を紹介します。
前回のブログにGoogleカレンダー側での連携準備の仕方を説明しておりますので 先にこちらをお読みください。

前提として既にGoogleのアカウントを持ち、CakePHP4は「Amzon Linux2」上にインストール済みかつ、前回のブログの内容の作業をを実施しているの想定です。 またウェブサーバーは「Apache/2.4.46」、DBは「5.5.68-MariaDB」になります。
主にコードを紹介することが中心です。まず、GoogleのAPIを使うために必要なライブラリをインストールしましょう。
carbonは日時のフォーマット変更で使用します。

次にDatabaseにスケジュールを管理するテーブルを作成します。今回は「schedules」という名前で作成します。
テーブルの詳細は以下となります。

sashie_20211119_1.png

●各種カラム詳細 ・title スケジュールタイトル(ex:第▲▲ 〇〇会)

  • creator_id 作成者のid(usersテーブルid) ※
  • location 開催場所(ex:〇〇会議室、▲▲ビル5F) ※
  • location_url 開催場所のHPのURL ※
  • date 開催日
  • start_time 開催時刻
  • end_time 終了時刻
  • remarks スケジュール説明文
  • calendar_id Googleカレンダーにスケジュール追加時に発行されるID
  • created 作成日時
  • modified 編集日時

※ 任意で追加してください。

bakeコマンドを実行してでTemplate,Controller,Modelファイルを生成しましょう。以下のファイルが生成されます。
src/Controller/SchedulesController.php
src/Model/Table/SchedulesTable.php
src/Model/Entity/Schedule.php
templates/Schedules/index.php, add.php, edit.php, view.php(今回はview.phpは使用しません)

予定追加機能

まず作成したSchedulesController.phpをまず編集していきましょう。
新規にスケジュールを作成するadd()にAPI用の処理を書き加えます。
各種処理の説明はコメントを付けましたので確認してください。
また、今回はAPI処理専用のコンポーネント「ApiComponent.php」を作成してみます。
componentファイルは以下のbakeコマンドで作成できます。
bin/cake bake component [コンポーネント名]
src/Controller/Component 配下にApiComponent.phpが作成されます。

SchedulesController.php

ControllerファイルでComponentを使用するためには下記の2つのコードを加えてください。

ApiComponent.php

イベント追加する場合は上記のように設定します。
先ほどインストールしたライブラリを使えるように以下を必ず入れてください。

以上で準備完了です。実際にフォームに入力してカレンダーに追加されるか確認します。
下記が入力フォームです(/schedules/add)こちらはlabel等を分かり易いように日本語に書き換えています。

sashie_20211119_2.png

2021/09/10 18:00-20:00 に株式会社マイロプスで親睦会を開くと想定して情報を入力しました。
このまま「登録」を押下しましょう。Googleカレンダーに登録した予定が追加されます。

sashie_20211119_3.png

予定編集機能

続いて予定編集の説明をします。APIで編集するためには先ほどAPI登録した際に取得したidが必要です。
Schedulesテーブルの[calendar_id]に該当します。

SchedulesController.php

ApiComponent.php

下記の内容で編集します。(/schedules/edit/[id])

sashie_20211119_4.png

2021/09/12 14:00-17:00 に変更しました。
Googleカレンダーの予定が編集した内容に変更されています。

sashie_20211119_5.png

予定削除機能

続いては削除です。先ほどの編集と同様にSchedulesテーブルの[calendar_id]が必要です。
削除のAPIの引数は上記のidのみとなります。

SchedulesController.php

ApiComponent.php

スケジュール一覧ページ(schedules/index)より削除します。

sashie_20211119_6.png

カレンダーを確認してみましょう。カレンダーから先ほど編集した予定が消えています。

sashie_20211119_.png

以上がCakePHP4でのGoogleカレンダーへの予定の追加、編集、削除の方法でした。
最後まで読んでいただきありがとうございました。

マイロプスでは一緒に働いてくるエンジニア、デザイナーを募集中です!

人と人、人とコト、人とチャンスを繋げられる自社プロダクトの開発等を一緒にやってみませんか?

  • ITとデザインのチカラで、なにか面白いことができないかと思っている人
  • デザインを制作だけでなく人と人、モノ、コトとの関係性の設計と捉え、 社会を動かす重要な概念だと思っている人。

やりたいことがあればどんどん発言できる会社なので私個人的にはITに興味があって好奇心旺盛な人ならきっと飽きない会社だと思います。

興味がある方は求人ページをご覧ください。

Fukushima

エンジニア

SESを2年経験し、マイロプスに入社。
週末は趣味のバスケットボールをしている。

関連記事

お仕事のご相談、採用についてなど、お気軽にお問い合わせください。