PHPからGoogleカレンダーに予定を追加・変更・削除する

  • 2020.06.30
  • PHP
PHPからGoogleカレンダーに予定を追加・変更・削除する

PHPからGoogleカレンダーに予定を追加・変更・削除する方法を紹介します。

必要なもの

  • Googleアカウント
  • APIキー類
  • google-api-php-client

APIキー類を取得する

*Googleアカウントはすでに取得していることとする。

Google Developer Consoleにアクセスをし、クライアントID、クライアントシークレット、APIキーを取得する。
https://code.google.com/apis/console/

リフレッシュトークンを取得する

①下記のアドレスでブラウザにアクセスする。

https://accounts.google.com/o/oauth2/auth
?client_id=[クライアントID]
&redirect_uri=[リダイレクトURI]
&scope=https://www.googleapis.com/auth/calendar
&response_type=code
&approval_prompt=force
&access_type=offline

②許可を求められてきたら「許可」をクリックする。

③リダイレクトURLが表示されたらパラメータのcode(認証コード)を取得する。

④ターミナル上でcurlコマンドを実行する

curl -d client_id=[クライアントID]
-d client_secret=[クライアントシークレット]
-d redirect_uri=[リダイレクトURI]
-d grant_type=authorization_code
-d code=[認証コード]
https://accounts.google.com/o/oauth2/token

⑤返ってきたrefresh_tokenを取得する。

google-api-php-clientを取得する

下記のアドレスから取得することができます。
https://github.com/google/google-api-php-client

PHPでGoogleカレンダーを使う宣言

//google-api-php-clientを呼び出さす。
require_once "../google-api-php-client/src/Google/autoload.php";

//APIのキー等
//クライアントID
$CLIENT_ID = "xxxxxxxxxxx.apps.googleusercontent.com";

//クライアントシークレット
$CLIENT_SECRET 	= "xxxxxxxxxx";

//リフレッシュトークン
$REFRESH_TOKEN 	= "xxxxxxxxxx";

//サービスAPIキー
$SERVER_API_KEY = "xxxxxxxxxx";

//カレンダーID
$CALENDAR_ID = "xxxxxxxxxx";

//Google APIのインスタンス生成
$server = new Google_Client();
$server->setClientId($CLIENT_ID);
$server->setClientSecret($CLIENT_SECRET);
$server->refreshToken($REFRESH_TOKEN);
$server->setDeveloperKey($SERVER_API_KEY);

$server_access_token = $server->getAccessToken();
$server->setAccessToken($server_access_token);

$service = new Google_Service_Calendar($server);

予定を追加する


//カレンダー登録
$event = new Google_Service_Calendar_Event();
$event->setSummary("件名はここです"); //件名
$event->setDescription("内容はここです"); //内容
$event->setColorId("1"); //色
$event->setTransparency("opaque"); //外部向け表示(予定あり:opaque、予定なし:transparent)

$start = new Google_Service_Calendar_EventDateTime();
$start->setDateTime("2020-06-30T10:00:00+09:00");
$event->setStart($start);

$end = new Google_Service_Calendar_EventDateTime();
$end->setDateTime("2020-06-30T12:00:00+09:00");
$event->setEnd($end);

$result = $service->events->insert($CALENDAR_ID, $event);

//イベントIDの取得
$event_id = $result->getId();

予定を変更する

//登録時に取得した予定のIDを指定する
$event_id = "xxxxxxx";

//カレンダー更新
$result = $service->events->update($CALENDAR_ID, $event_id, $event);

$event_uid = $result->getId();

予定を削除する

//登録時に取得したIDを指定して削除する。
$event_id = "xxxxxxx";

//カレンダー削除
$service->events->delete($CALENDAR_ID, $event_id);