与 Google Calendar 集成

下载该软件包 here

简介

本章节介绍如何保持 Scheduler 与 Google Calendar 的同步。

同步是双向的,因此在 Scheduler 或 Google Calendar 中进行的任何更新都会在两个地方反映出来。

  • 如果同一个事件在两个应用中都被修改,最近的更改会被同步。
  • 在一个日历中删除事件会使其在两个日历中都被移除。
  • 同步仅限于主 Google Calendar,辅助日历不会被包含。
  • Scheduler 和 Google Calendar 中的所有事件都会同步——无法选择特定事件进行同步。
  • 默认情况下,Scheduler 会从 Google Calendar 导入事件的文本和持续时间(开始和结束时间)。如有需要,也可以获取更多的事件详细信息。详见下文

入门指南

请按照以下步骤设置集成:

  1. 登录 Google API 控制台https://console.cloud.google.com/cloud-resource-manager
  2. 点击 “Create new project” 按钮,进入 “Google apis” 页面。
  3. “Services” 标签下启用 “Calendar API” 服务。
  4. 进入 “API Access” 标签页,点击 “Create an OAuth2.0 Client ID”。这将打开 “Create Client ID” 表单。
  5. 完成表单并点击 “Next” 继续。
  6. 选择 “Service account” 选项并点击 “Create client ID”。这将生成你的私钥文件、Client ID 和 Email 地址——请妥善保存,后续会用到。
  7. 登录你希望与应用配合使用的 Google Calendar,并将其共享给在 Google API 控制台中创建的 Email 地址(见第 1 步)。
  8. 在日历设置中找到并保存 calendar ID。

服务端:

  1. 新建一个名为 "data.php" 的 PHP 文件,内容如下:
    <?php
     
    include('../src/google_proxy.php');
     
    $calendar = new GoogleCalendarProxy(
        "<account>@developer.gserviceaccount.com",
        "<account>.apps.googleusercontent.com",
        file_get_contents("<key>"),
        "<calendar id>"
    );
     
    $calendar->connect();
    ?>

其中:

  • <account> 是用于登录 Google API 控制台的 Email 地址。
  • <key> 是你的私钥文件路径。
  • <calendar_id> 是你在 Google Calendar 设置中获取的日历 ID。

客户端:

1. 打开已初始化 scheduler 的 HTML 文件,或者按常规方式进行初始化(详情请参考 How to Start 文章)。

2. 使用 load 方法将 Google Calendar 事件加载到 scheduler。第一个参数为 'data.php' 文件路径,第二个参数为数据格式,应为 'json'。

scheduler.load("./data.php", "json");

3. 初始化 dataProcessor 以启用双向同步(如果只需要只读访问,可以跳过此步骤)。

var dp =  scheduler.createDataProcessor("./data.php");
dp.init(scheduler);
dp.setTransactionMode("POST", false);

如何传递与事件相关的附加信息

默认情况下,Scheduler 会读取 Google Calendar 的所有字段,但只主动处理其中四个,其余字段视为只读。

Google Calendar 字段与 Scheduler 字段的对应关系如下:

Google Calendar -> Scheduler

  • id -> id
  • title -> text
  • startTime -> start_date
  • endTime -> end_date

如需处理附加属性,可以修改软件包中的 "src/google_proxy.php" 文件
(下载链接)。

返回顶部