このパッケージは、Googleカレンダーでの作業を簡単にします。セットアップしたら、これらのことを行うことができます。
use Spatie GoogleCalendar Event ;
// create a new event
$ event = new Event ;
$ event -> name = ' A new event ' ;
$ event -> description = ' Event description ' ;
$ event -> startDateTime = Carbon Carbon:: now ();
$ event -> endDateTime = Carbon Carbon:: now ()-> addHour ();
$ event -> addAttendee ([
' email ' => ' [email protected] ' ,
' name ' => ' John Doe ' ,
' comment ' => ' Lorum ipsum ' ,
' responseStatus ' => ' needsAction ' ,
]);
$ event -> addAttendee ([ ' email ' => ' [email protected] ' ]);
$ event -> addMeetLink (); // optionally add a google meet link to the event
$ event -> save ();
// get all future events on a calendar
$ events = Event:: get ();
// update existing event
$ firstEvent = $ events -> first ();
$ firstEvent -> name = ' updated name ' ;
$ firstEvent -> save ();
$ firstEvent -> update ([ ' name ' => ' updated again ' ]);
// create a new event
Event:: create ([
' name ' => ' A new event ' ,
' startDateTime ' => Carbon Carbon:: now (),
' endDateTime ' => Carbon Carbon:: now ()-> addHour (),
]);
// delete an event
$ event -> delete ();Spatieは、ベルギーのAntwerpに拠点を置くWebdesign代理店です。当社のウェブサイトにあるすべてのオープンソースプロジェクトの概要を見つけることができます。
私たちは多くのリソースを、クラスで最高のオープンソースパッケージを作成するために投資しています。有料製品の1つを購入することで、私たちをサポートできます。
故郷からハガキを送ってくれて、あなたが使用しているパッケージのどれについて言及してくれてありがとう。お問い合わせページにアドレスがあります。仮想のはがきの壁に受け取ったポストカードをすべて公開しています。
Composer経由でパッケージをインストールできます。
composer require spatie/laravel-google-calendarこのコマンドで構成を公開する必要があります。
php artisan vendor:publish --provider= " SpatieGoogleCalendarGoogleCalendarServiceProvider "これにより、これらのコンテンツを使用して、config-directoryにgoogle-calendar.phpというファイルが公開されます。
return [
' default_auth_profile ' => env ( ' GOOGLE_CALENDAR_AUTH_PROFILE ' , ' service_account ' ),
' auth_profiles ' => [
/*
* Authenticate using a service account.
*/
' service_account ' => [
/*
* Path to the json file containing the credentials.
*/
' credentials_json ' => storage_path ( ' app/google-calendar/service-account-credentials.json ' ),
],
/*
* Authenticate with actual google user account.
*/
' oauth ' => [
/*
* Path to the json file containing the oauth2 credentials.
*/
' credentials_json ' => storage_path ( ' app/google-calendar/oauth-credentials.json ' ),
/*
* Path to the json file containing the oauth2 token.
*/
' token_json ' => storage_path ( ' app/google-calendar/oauth-token.json ' ),
],
],
/*
* The id of the Google Calendar that will be used by default.
*/
' calendar_id ' => env ( ' GOOGLE_CALENDAR_ID ' ),
];最初に行う必要があることは、GoogleのAPIを使用する資格情報を取得することです。私はあなたがすでにGoogleアカウントを作成していてサインインしていると仮定しています。GoogleAPIコンソールに向かい、ヘッダーの「プロジェクトを選択」をクリックします。

次に、プロジェクトが消費する可能性のあるAPIを指定する必要があります。ヘッダーから、「APIとサービスを有効にする」を選択します。

次のページで、「カレンダー」を検索し、リストから「Google Calendar API」を選択します。

ここから、「有効」を押して、このプロジェクトのGoogleカレンダーAPIを有効にします。

カレンダーAPIにアクセスできるプロジェクトを作成したので、これらの資格情報を含むファイルをダウンロードする時が来ました。サイドバーの「資格情報」をクリックしてから、「APIS&Servicesの資格情報」リンクを押します。

このページから、「資格情報の作成」ドロップダウンを開き、「サービスアカウントキー」を選択します。

次の画面では、サービスアカウントに名前を付けることができます。あなたが望むものは何でも名前を付けることができます。サービスアカウントIDには、メールアドレスが表示されます。このガイドでは、このメールアドレスを後で使用します。キータイプとして「JSON」を選択し、「作成」をクリックしてJSONファイルをダウンロードします。サービスアカウントには役割がないという警告が表示されます。これを安全に無視し、役割を割り当てることなくサービスアカウントを作成できます。
サービスアカウントへのドメイン全体のアクセスを委任し、ユーザーアカウントになりすましする場合は、Configファイルのユーザーアカウントの電子メールアドレスを指定します。

このパッケージの構成ファイルのservice_account_credentials_jsonキーで指定された場所で、laravelプロジェクト内のJSONを保存します。 JSONファイルには潜在的に機密情報が含まれているため、Gitリポジトリにコミットすることはお勧めしません。
すべてがAPIサイトに設定されたので、Googleカレンダーサイトでいくつかのものを構成する必要があります。 Googleカレンダーにアクセスして、PHP経由で作業するカレンダーの設定を表示します。 [特定の人と共有]タブで[Peopleの追加]ボタンを押し、APIサイトで資格情報を作成するときに表示されたサービスアカウントIDを追加します。


「カレンダーの統合」セクションにスクロールして、カレンダーのIDを表示します。構成ファイルにそのIDを指定する必要があります。

このパッケージは、OAUTH2認証をサポートしています。これにより、実際のGoogleアカウントで認証し、独自のGoogleアカウントでイベントを作成および管理できます。
OAUTH2認証には、資格情報ファイルに加えて、トークンファイルが必要です。これらの両方のファイルを生成する最も簡単な方法は、PHP QuickStartツールを使用することです。このガイドに従うことで、2つのファイル、 credentials.jsonとtoken.jsonが生成されます。それらは、それぞれプロジェクトにoauth-credentials.jsonとoauth-token.jsonとして保存する必要があります。これらのファイルを保存する場所の正確な詳細については、このパッケージの構成ファイルを確認してください。
OAUTH2を使用するには、.ENVファイルに新しい環境変数を設定する必要があります。
GOOGLE_CALENDAR_AUTH_PROFILE =oauthこのパッケージの古いバージョンからアップグレードする場合は、構成の公開を強制する必要があります。
php artisan vendor:publish --provider= " SpatieGoogleCalendarGoogleCalendarServiceProvider " --force最後に、アプリケーションでよりシームレスなエクスペリエンスをするために、QuickStartツールを使用する代わりに、Google APIコンソールで同意画面を設定できます。これにより、アプリケーションの技術以外のユーザーが独自のトークンを簡単に生成できるようになります。これは完全にオプションです。
Event::get();これにより、来年のすべてのイベントが返されます。イベントはSpatieGoogleCalendarEventオブジェクトの形で提供されます。
関数の完全な署名は次のとおりです。
public static function get( Carbon $ startDateTime = null , Carbon $ endDateTime = null , array $ queryParameters = [], string $ calendarId = null ): Collection $queryParametersで渡すことができるパラメーターは、Google Calendar APIドキュメントのlistのドキュメントにリストされています。
これらのゲッターを使用して、カーボンインスタンスとして開始日と終了日を取得できます。
$ events = Event:: get ();
$ events [ 0 ]-> startDate ;
$ events [ 0 ]-> startDateTime ;
$ events [ 0 ]-> endDate ;
$ events [ 0 ]-> endDateTime ;SpatieGoogleCalendarEvent -Objectを新しくすることができます
$ event = new Event ;
$ event -> name = ' A new event ' ;
$ event -> startDateTime = Carbon Carbon:: now ();
$ event -> endDateTime = Carbon Carbon:: now ()-> addHour ();
$ event -> save (); statially: createを呼び出すこともできます。
Event:: create ([
' name ' => ' A new event ' ,
' startDateTime ' => Carbon Carbon:: now (),
' endDateTime ' => Carbon Carbon:: now ()-> addHour (),
]);これにより、特定の開始時間と終了時間のイベントが作成されます。終日イベントを作成する場合は、 startDateTimeとendDateTimeの代わりにstartDateとendDate使用する必要があります。
$ event = new Event ;
$ event -> name = ' A new full day event ' ;
$ event -> startDate = Carbon Carbon:: now ();
$ event -> endDate = Carbon Carbon:: now ()-> addDay ();
$ event -> save ();次のような単純なテキスト文字列に基づいてイベントを作成できます。
$ event = new Event ();
$ event -> quickSave ( ' Appointment at Somewhere on April 25 10am-10:25am ' );
// statically
Event:: quickCreate ( ' Appointment at Somewhere on April 25 10am-10:25am ' );Googleは、すべてのイベントに一意のIDを割り当てます。このIDを取得して、 getメソッドを使用してイベントを取得し、 SpatieGoogleCalendarEvent -Objectでidプロパティを取得できます。
// get the id of the first upcoming event in the calendar .
$ eventId = Event:: get ()-> first ()-> id ;
// you can also get the id after creating the event , then you can save it to database .
$ event = new Event ;
$ newEvent = $ event -> save ();
echo $ newEvent -> id ; // display the event idこのIDを使用して、Googleから1つのイベントを取得できます。
Event:: find ( $ eventId );簡単に、一部のプロパティを変更してsave()を呼び出します。
$ event = Event:: find ( $ eventId );
$ event -> name = ' My updated title ' ;
$ event -> save ();または、更新方法を使用できます。
$ event = Event:: find ( $ eventId );
$ event -> update ([ ' name ' => ' My updated title ' ]);それには何もありません!
$ event = Event:: find ( $ eventId );
$ event -> delete ();イベントにソースURLを設定できます。イベントは、イベントの作成者にのみ表示されます(ソースプロパティの詳細については、ドキュメントを参照してください)。この関数は、OAuthを介して認証された場合にのみ機能します。
$ yourEvent -> source = [
' title ' => ' Test Source Title ' ,
' url ' => ' http://testsource.url ' ,
];イベントに特定の色を設定できます(ColorID 1〜11)。可能性は、GoogleカレンダーAPIのカラー定義に限定されています。ここで見つけることができます。
$ yourevent -> setColorId ( 11 );GoogleカレンダーAPIには多くのオプションが提供されます。このパッケージはそれらのすべてをサポートするわけではありません。たとえば、このパッケージでは、定期的なイベントを適切に管理することはできません。名前と日付でイベントを作成することに固執する場合は、大丈夫です。
v1とv2の唯一の大きな違いは、V1の代わりにGoogle API V2が使用されていることです。アップグレードに必要な手順は次のとおりです。
laravel-google-calendarからgoogle-calendarに構成ファイルの名前を変更しますclient_secret_jsonキーをservice_account_credentials_jsonに変更します最近変更されたものの詳細については、Changelogをご覧ください。
composer test 詳細については、寄付をご覧ください。
セキュリティ関連の問題を発見した場合は、問題トラッカーを使用する代わりに[email protected]にメールしてください。
このパッケージのV2を作成してくれたSebastiaan Lucaに感謝します。
MITライセンス(MIT)。詳細については、ライセンスファイルをご覧ください。