haeliomarcio / laravel-google-calendar
管理Google日历上的事件
Requires
- php: ^7.1
- google/apiclient: ^2.2
- illuminate/support: ^5.8|^7.0
- nesbot/carbon: ^2.0
Requires (Dev)
- mockery/mockery: ^1.3.0
- orchestra/testbench: ^4.0|^5.0
- phpunit/phpunit: ^8.4|^9.0
README
此包使使用Google日历变得轻而易举。一旦设置完成,您可以执行以下操作
use Spatie\GoogleCalendar\Event; //create a new event $event = new Event; $event->name = 'A new event'; $event->startDateTime = Carbon\Carbon::now(); $event->endDateTime = Carbon\Carbon::now()->addHour(); $event->addAttendee(['email' => 'youremail@gmail.com']); $event->addAttendee(['email' => 'anotherEmail@gmail.com']); $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是一家位于比利时的安特卫普的网页设计公司。您可以在我们的网站上找到我们所有开源项目的概述 这里。
支持我们
通过观看我们的高级视频课程,了解如何创建这样的包
我们投入了大量资源来创建 一流的开放源代码包。您可以通过 购买我们的付费产品之一 来支持我们。
我们非常感谢您从您的家乡寄给我们一张明信片,并说明您正在使用我们的哪个包。您可以在 我们的联系页面 上找到我们的地址。我们将发布收到的所有明信片在我们的 虚拟明信片墙上。
安装
您可以通过Composer安装此包
composer require spatie/laravel-google-calendar
您必须使用以下命令发布配置
php artisan vendor:publish --provider="Spatie\GoogleCalendar\GoogleCalendarServiceProvider"
这将发布一个名为 google-calendar.php
的文件到您的配置目录中,内容如下
return [
/*
* Path to the json file containing the credentials.
*/
'service_account_credentials_json' => storage_path('app/google-calendar/service-account-credentials.json'),
/*
* The id of the Google Calendar that will be used by default.
*/
'calendar_id' => env('GOOGLE_CALENDAR_ID'),
];
如何获取与Google日历通信的凭证
首先,您需要获取用于使用Google API的凭证。假设您已经创建了一个Google账户并已登录。前往 Google API控制台 并在标题中点击 "选择项目"。
接下来,我们必须指定项目可以消耗哪些API。从标题中选择 "启用API和服务"。
在下一页,搜索 "日历" 并从列表中选择 "Google日历API"。
从这里,点击 "启用" 以为此项目启用Google日历API。
现在,您已经创建了一个可以访问日历API的项目,您需要下载一个包含这些凭证的文件。点击侧边栏中的 "凭证" 并然后点击 "API和服务中的凭证" 链接。
从此页面,打开 "创建凭证" 下拉菜单并选择 "服务帐户密钥"。
在下一个屏幕上,您可以给服务帐户起一个名字。您可以起任何您喜欢的名字。在服务帐户ID中您将看到一个电子邮件地址。我们将在本指南的后面使用这个电子邮件地址。选择 "JSON" 作为密钥类型并点击 "创建" 下载JSON文件。您将收到一个警告,表明服务帐户没有角色,您可以安全地忽略此警告,并在不分配角色的前提下创建服务帐户。
将json文件保存在您的Laravel项目中,位置位于此包配置文件中 service_account_credentials_json
键指定的位置。因为json文件可能包含潜在敏感信息,我不建议将其提交到您的git仓库。
现在API网站上已经设置完毕,我们还需要在Google日历网站上做一些配置。前往Google日历,查看您希望通过PHP操作的日历的设置。在 "与特定人员共享" 选项卡上点击 "添加人员" 按钮,并添加在API网站上创建凭证时显示的服务帐户ID。
滚动到“集成日历”部分以查看日历的id。您需要在配置文件中指定该id。
用法
获取事件
您只需调用 Event::get();
即可获取所有事件,这将返回下一年度的事件。事件以 Spatie\GoogleCalendar\Event
对象的形式出现。
函数的完整签名是
public static function get(Carbon $startDateTime = null, Carbon $endDateTime = null, array $queryParameters = [], string $calendarId = null): Collection
您可以在 $queryParameters
中传递的参数列表,请参阅 谷歌日历API文档中的“list”部分。
访问事件的开始和结束日期
您可以使用这些getter来检索开始和结束日期,作为 Carbon 实例
$events = Event::get(); $events[0]->startDate; $events[0]->startDateTime; $events[0]->endDate; $events[0]->endDateTime;
创建事件
您只需实例化一个 Spatie\GoogleCalendar\Event
-对象
$event = new Event; $event->name = 'A new event'; $event->startDateTime = Carbon\Carbon::now(); $event->endDateTime = Carbon\Carbon::now()->addHour(); $event->save();
您还可以调用 create
静态方法
Event::create([ 'name' => 'A new event', 'startDateTime' => Carbon\Carbon::now(), 'endDateTime' => Carbon\Carbon::now()->addHour(), ]);
这将创建一个具有特定开始和结束时间的事件。如果您想创建一个全天事件,必须使用 startDate
和 endDate
而不是 startDateTime
和 endDateTime
。
$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');
获取单个事件
谷歌为每个单个事件分配一个唯一的id。您可以通过使用 get
方法获取事件并获取 Spatie\GoogleCalendar\Event
-对象的 id
属性来获取此id
// get the id of the first upcoming event in the calendar. $eventId = Event::get()->first()->id;
您可以使用此id从谷歌获取单个事件
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();
限制
Google日历API提供了许多选项。此包不支持所有这些选项。例如,使用此包无法正确管理重复事件。如果您坚持使用名称和日期创建事件,应该没有问题。
从v1升级到v2
v1
和 v2
之间的唯一主要区别在于底层使用的是v2 Google API而不是v1。以下是升级所需的步骤
- 将配置文件重命名为
laravel-google-calendar
- 在配置文件中,将
client_secret_json
键重命名为service_account_credentials_json
变更日志
请参阅 变更日志 以获取有关最近更改的更多信息。
测试
composer test
贡献
请参阅 贡献指南 以获取详细信息。
安全
如果您发现任何与安全相关的问题,请通过电子邮件 freek@spatie.be 联系我们,而不是使用问题跟踪器。
鸣谢
衷心感谢 Sebastiaan Luca 为创建此包的v2版本提供的巨大帮助。
许可证
MIT许可证(MIT)。请参阅 许可证文件 以获取更多信息。