【发布时间】:2020-05-18 15:42:32
【问题描述】:
我的问题:如何在受计数限制的重复事件中更新“这个和所有未来”实例,以使事件总数保持一致?
有什么问题:
尝试修改重复事件,我遵循以下指南:
https://developers.google.com/calendar/recurringevents
基本上要使用目标事件更新所有未来的重复事件,文档说需要进行两次调用:
- 更新现有事件以使其在目标事件日期之前结束
- 使用相同的字段创建一个新的定期事件,但需要更改的除外。
在发生受发生次数限制的事件之前,它可以正常工作。
假设有一个重复发生的事件限制为 10 次,目标事件是第 5 次事件。 现在我需要拆分原始事件,以便前 4 个事件转到原始事件(因此我将 COUNT 从 10 更新为 4),然后创建一个新的重复事件来保存其余 6 个事件(因此 COUNT 在这种情况下为 6 )
我的第一个观察是,这不是拆分事件在谷歌日历中的显示方式 - 如果我手动测试,这两个事件仍然显示 10 次,但第二个不会产生任何额外的事件(我希望从开发人员的角度来看有 14 个事件,但正如任何用户所期望的那样有 10 个)。这意味着这里有不同的方法吗?是吗?
此外,如果我最终手动计算事件的数量,仍然存在一些问题,例如首先删除一个事件(比如说第四个事件) - 现在我怎么知道我需要显示 6 个实例新的而不是 7?
这些想法让我觉得有更好的方法,但我找不到任何其他选择。对此有何建议?
更新
Google 的做法似乎有所不同:例如,在日历视图中更改“此和未来”事件的标题后,它似乎不会产生两个不同的重复事件,因为如果您尝试删除“所有”事件,这将完全删除所有这些(而不是只删除一个块,无论是在目标事件之前还是之后)
似乎他们正在创建一堆异常,或者可能是“重复异常”或这样做的东西。到目前为止,找不到任何关于如何做到这一点的示例。
【问题讨论】:
-
用 UNTIL 代替 COUNT 怎么样?因此,您可以将所有事件更新到某个日期,然后从那里创建其余事件。
-
感谢@Jescanellas。我想这可能会从技术角度解决它。只需要获取所有实例来获取结束日期(如果 COUNT 很大,这可能是另一个极端情况)。尽管我认为从 UX 角度来看这将是出乎意料的——如果用户设置了 10 个事件,他们希望坚持使用该类型而不是将其切换为日期(例如,如果他们需要添加更多事件,他们只需更改原始计数)。谷歌仍然很好地处理了这一点。用更多观察更新了我的问题 - 也许这可能会带来一些额外的启示。
-
我理解并同意您的做法。您是否介意分享一个简单的 sn-p,说明您如何更新 1 到 4 事件,然后是 5 到 10?您是否通过先前对实例的调用获得了第 5 个事件?谢谢。
-
感谢@Jescanellas。这实际上是我想要弄清楚的——我该如何编码。但是为了给你更多的背景信息,我总是从“现在”和主实例中获得接下来的 5 个实例。因此,当我按照上面的教程进行操作时,我应该使用 googleapi nodejs 库中的“events.update”和“events.insert”方法将其中一个实例用作目标事件。但是从我的问题中深入挖掘会发现这个问题。不确定这是否有帮助,所以请告诉我是否可以提供任何其他详细信息。
-
要更新重复事件中的特定事件,您需要通过指定事件实例 ID 来更新单个实例。这只是与日期时间戳连接的事件 ID(您可以在为您的 eventID 发出
events: instances请求时看到这一点;如果您的事件 ID 是xxxxxxxxxxxx,那么实例 ID 将类似于xxxxxxxxxxxx__20200603T170000Z)。这是使用 UI 更新实例的方式,但没有直接的 update-instances 端点,因此要在一个请求中更新多个实例,您需要使用 batching