Skip to content

日历常见问题

本文汇总了使用日历 API 期间可能遇到的常见问题与解决方案。

日历相关

Q:如何获取日历订阅列表?

你可以调用获取日历列表,该接口获取到的日历为用户当前已经订阅的日历。

Q:飞书日历是否支持查询法定工作日、节假日安排?

飞书日历不提供法定工作日、节假日的查询功能。如果已知有对应内容的日历,则可以调用搜索日历 接口找到对应的日历,然后调用获取日程列表接口获取日程数据,并根据日程数据判断当日的安排。

Q:飞书客户端上绑定了三方日历 (Google、Exchange),是否支持通过 API 操作解绑?

目前仅支持 Exchange 账号的绑定、解绑操作,且需要租户超级管理员权限。Google 暂不支持。

日程相关

Q:获取指定时间段内的所有日程时,单次调用未获取到完整数据,再次调用传入的 sync_token 不起作用是什么原因?

获取日程列表接口中,开始/结束时间参数(start_time/end_time)和增量同步标记参数(sync_token)不能同时使用。这两类参数代表了两种不同的同步方式:

  • 开始/结束时间参数(start_time/end_time)

    用于获取指定时间段内的日程列表。例如,获取 2021-11-01 00:00:00 到 2021-11-02 00:00:00 期间所有的日程。

  • 增量同步标记参数(sync_token)

    通过日程版本号获取日程列表。每一次日程信息更新时都会同步更新版本号,使用 sync_token 可以获取指定版本号内后续发生变动的日程信息。

Q:能看见日程返回,但无法看见日程标题是什么原因?

能否看到日程标题和以下权限参数相关。

  • 创建日程接口中的 visibility 参数,该参数用于指定日程的公开范围。取值范围:

    • public:公开,默认显示日程详情。
    • default:默认权限,用户有 reader 权限可以查看详情。
    • private:私密,即便用户有 reader 权限也不能查看详情。
  • 创建访问控制中的 role 参数,该参数用于设置用户对日历的访问权限(可通过查询日历信息中的 role 参数获取用户对日历的访问权限)。role 参数取值范围:

    • unknown:未知权限(即不考虑当前 role)。
    • free_busy_reader:游客,只能看到忙碌/空闲信息。
    • reader:订阅者,查看所有日程详情。
    • writer:编辑者,创建及修改日程。
    • owner:管理员,管理日历及共享设置。

Note

  • 当日程公开范围为 public,用户对当前日历无论为何种权限均可见标题。
  • 当日程公开范围为 private,用户对当前日历为 writerowner 时可见标题。
  • 当日程公开范围为 default, 用户对当前日历为readerwriterowner时可见标题。

Q:我为什么不能编辑日程标题或删除日程?

当用户为日程参与人时,可以在自己的主日历上获取到日程,但并不代表有日程的编辑权限。相关文档:

  • 更新日程删除日程接口文档内阅读注意事项,了解什么情况下可以更新或删除日程。
  • 如何判断当前用户对日历的权限,可调用查询日历信息接口。
  • 如何判断当前用户是否为日程组织者,可参考本文的 如何判断当前用户是否为日程组织者

Q:如何判断当前用户是否为日程组织者?

目前可通过获取日程参与人列表接口,查看参与人是否为日程的组织者。

  1. 路径参数中的 calendar_id 需传入当前用户的主日历 ID。
  2. 获取到参与人列表后,如果 is_organizer: true 的用户与当前用户身份匹配时,则表示当前用户为日程的组织者。

Q:重复性日程为什么只能获取到一个日程?

重复性日程是通过日程 Rrule 字段表示重复规则的,详细定义可以参考 RFC5545 协议。例如,每天重复一次的日程对应 RRULE: FREQ=DAILY;UNTIL=20220531T155959Z;INTERVAL=1

Q: 调用接口设置了日程颜色, 为什么不生效?

调用接口设置的日程颜色(color 字段), 仅对当前身份生效。如果需要改变其他人看到的日程颜色, 需要用对方的身份来修改。类似逻辑的字段还有 reminder (日程提醒)。

参与人(含会议室)相关

Q:如何通过开放平台 OpenAPI 预定会议室?

你需要在创建日程后,调用添加日程参与人接口预定会议室,而不是创建日程时传入 location 字段。

调用添加日程参与人接口预定会议室时,需要注意:

  • 如果调用接口时以应用身份进行预定,则需要上传 operate_id 字段,该字段用于指定会议室的联系人。
  • 最终是否预定成功,取决于管理员是否在管理后台配置了会议室预定限制(包括审批、时间限制和范围限制),以及是否有其他用户在同一时间抢占会议室。

Q:预定会议室时没有日程冲突仍然预定失败是什么原因?

可能有多种原因,包括但不限于:

  1. 管理员在管理后台配置了 会议室预定限制

    • 会议室为审批会议室。因为 OpenAPI 未支持审批功能,所以当管理员在管理后台打开会议室审批开关后,用户发起会议室预定请求会失败。

    • 会议室设置了时间范围限制。当管理员在管理后台开启了预定时间限制后,不满足时间限制会预定失败。例如:会议室每日预定时间范围为 08:00 ~ 23:00, 则当预定 03:00 ~ 04:00 时间段时会失败。

    • 会议室设置了用户可预定范围限制。当管理员在管理后台设置了可预定范围后,如果当前用户并未在可预定范围内,则会预定失败。

    image.png

  2. 并发预定会议室。其他用户先预定了当前会议室,因为两个请求间隔时间较短,会导致用户获取会议室忙闲时,出现会议室未被预定,但实际已被预定的情况。

Q: 预定会议室后, 为什么不能立刻知道是否预定成功?

调用接口预定会议室是一个异步过程,并且可能涉及和其他用户的竞争抢占。因此,当提交预定会议室的操作后,需要等待几秒才会返回最终的预定状态。

Q:是否支持订阅参与人回复接受、拒绝等操作的日程变更事件?

你可以订阅日程变更事件,参与人点击接受、拒绝等操作带来的数据变更,包含在日程变更事件的范围内。

错误码相关

Q:如何使用调用接口后返回的错误码?

你可以在 OpenAPI 对应的帮助文档内,或者参见通用错误码,查找相匹配的错误码,然后根据错误码说明与排查建议修复问题。

内容来源:飞书开放平台 · 自动爬取整理