dvico/google-calendar

管理 Google 日历上的事件

2.3.2 2018-09-05 09:46 UTC

This package is not auto-updated.

Last update: 2024-09-26 17:03:19 UTC


README

Latest Version on Packagist Software License Build Status SensioLabsInsight Quality Score StyleCI Total Downloads

此包使与 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

接下来,必须注册服务提供者

'providers' => [
    ...
    Spatie\GoogleCalendar\GoogleCalendarServiceProvider::class,
];

可选地,必须注册 Spatie\GoogleCalendar\GoogleCalendarFacade

'aliases' => [
	...
    'GoogleCalendar' => Spatie\GoogleCalendar\GoogleCalendarFacade::class,
    ...
]

您必须使用此命令发布配置

php artisan vendor:publish --provider="Spatie\GoogleCalendar\GoogleCalendarServiceProvider"

这将发布位于您的 config 目录中的名为 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 Calendar 通信的凭证

首先,您需要获取一些凭证以使用 Google API。假设您已经创建了一个 Google 账户并已登录。前往 Google API 控制台,然后在页眉中点击 "选择项目"。

1

接下来,我们必须指定项目可以消耗哪些 API。在可用的 API 列表中点击 "Google Analytics API"。在下一个屏幕上点击 "启用"。

2

现在,您已经创建了一个可以访问 Analytics API 的项目,是时候下载包含这些凭证的文件了。点击侧边栏中的 "凭证"。您希望创建一个 "服务账户密钥"。

3

在下一个屏幕上,您可以为服务账户命名。您可以取任何您喜欢的名字。在服务账户 id 中,您会看到一个电子邮件地址。我们将在本指南的后面使用此电子邮件地址。选择 "JSON" 作为密钥类型,然后点击 "创建" 下载 JSON 文件。

4

将 json 文件保存在您的 Laravel 项目中,位置在配置文件中指定的 service_account_credentials_json 键的位置。由于 json 文件可能包含敏感信息,我不建议将其提交到您的 git 仓库中。

现在,API 站点上已经设置好了所有内容,我们还需要在 Google Calendar 站点上配置一些内容。前往 Google Calendar,查看您想要通过 PHP 使用的日历的设置。在“共享此日历”选项卡中,添加在 API 站点上创建凭证时显示的服务账户 id。

5

打开“日历详情”选项卡以查看日历的 id。您需要在配置文件中指定该 id。

6

用法

获取事件

您可以通过简单地调用 Event::get(); 来获取所有事件,这将返回未来一年的所有事件。事件以 Spatie\GoogleCalendar\Event 对象的形式出现。

函数的完整签名是

public static function get(Carbon $startDateTime = null, Carbon $endDateTime = null, array $queryParameters = [], string $calendarId = null): Collection

您可以在 $queryParameters 中传递的参数列表可以在 Google 日历 API 文档中关于 list 的文档 上找到。

访问事件的开始和结束日期

您可以使用这些获取器以 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(),
]);

这将创建一个具有特定开始和结束时间的活动。如果您想创建一个全天活动,您必须使用startDateendDate而不是使用startDateTimeendDateTime

$event = new Event;

$event->name = 'A new full day event';
$event->startDate = Carbon\Carbon::now();
$event->endDate = Carbon\Carbon::now()->addDay();

$event->save();

获取单个活动

Google为每个单独的活动分配一个唯一的ID。您可以通过使用get方法获取活动,然后在Spatie\GoogleCalendar\Event对象上获取id属性来获取此ID。

// get the id of the first upcoming event in the calendar.
$calendarId = Event::get()->first()->id;

您可以使用此ID从Google获取单个活动。

Event::find($calendarId);

更新活动

很简单,只需更改一些属性并调用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

v1v2之间的唯一主要区别在于,在内部使用的是Google API v2而不是v1。以下是升级所需的步骤:

  • 将配置文件从laravel-google-calendar重命名为google-calendar
  • 在配置文件中,将client_secret_json键重命名为service_account_credentials_json

变更日志

有关最近更改的更多信息,请参阅变更日志

测试

composer test

贡献

有关详细信息,请参阅贡献指南

安全

如果您发现任何安全相关的问题,请通过电子邮件freek@spatie.be联系,而不是使用问题跟踪器。

明信片软件

您可以使用此包,但如果它进入您的生产环境,我们非常感谢您从您的家乡寄给我们一张明信片,说明您正在使用我们的哪个包。

我们的地址是:Spatie,Samberstraat 69D,2060 安特卫普,比利时。

我们将所有收到的明信片发布在我们的公司网站上

鸣谢

感谢Sebastiaan Luca在创建此包的第二版时提供的巨大帮助。

支持我们

Spatie 是一家位于比利时安特卫普的网络设计公司。您可以在我们的网站上找到我们所有开源项目的概述 在这里

您的业务是否依赖于我们的贡献?联系并支持我们在Patreon上的工作。所有承诺都将致力于分配人力以维护和新奇事物。

许可

MIT许可(MIT)。有关更多信息,请参阅许可文件