我正在使用https://github.com/google/google-api-ruby-client连接到不同的Google API,尤其是Google日历 .
创建一个事件,更新它并删除它,大部分时间都是通常可以找到的事件 .
在上次更新事件日期之后尝试更新事件详细信息时,会出现此问题 . 在这种情况下,提供的ID不够,请求失败并显示错误:
SmhwCalendar :: GoogleServiceException:序列值无效 . 400
然而,文档没有提到这样的事情:https://developers.google.com/google-apps/calendar/v3/reference/calendars/update
事件文档确实描述了sequence属性,但没有多说:https://developers.google.com/google-apps/calendar/v3/reference/events/update
-
更新活动需要什么?
-
是否有特定属性可以跟踪创建,更新事件ID以外的事件?
-
ruby google api客户端如何处理这些?
2 回答
我想Cannot Decrease the Sequence Number of an Event的答案也适用于此 . 序列号不能减少(如果你没有像提供0那样't supply it, it'),某些操作(例如时间变化)会使序列号产生碰撞 . 确保始终使用最新的事件副本(响应中提供的副本) .
@luc答案非常正确,但这里有一些细节 .
Google API文档目前尚不清楚(https://developers.google.com/google-apps/calendar/v3/reference/events/update) .
您应该考虑第一个响应包含序列号0.第一个更新应包含该序列号(以及 Headers 和描述等) . 对该请求的响应将包含一个增量序列号(在本例中为1),您应该在下次更新时存储和重用该序列号 .
虽然第一次更新意味着序列号为0(和工作)如果你没有传递任何第二次可能仍然通过但第三次可能不会(因为它期望1作为序列) .
因此该属性可能看起来是可选的,但实际上它根本不是可选的 .