Google Calendar API停止了返回活动

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Google Calendar API停止了返回活动相关的知识,希望对你有一定的参考价值。

从今天起,我遇到了与Google Calendar API v3相似的两个调用之一的问题:

calendar.events.list

两个调用都在请求assignemnts列表并使用privateExtendedProperty来过滤它们,但key = Value对是不同的。

当我将privateExtendedProperty设置为myStatus = READY时,它返回我需要的事件,但当我将privateExtendedProperty设置为myId = agxzfm1haWxmb29nYWVyNQsSDE9yZ2FuaXphdGlvbiIVYWN0aXZlZ2FtaW5nbWVkaWEuY29tDAsSBENhc2UYkcHA3wgM时,它不返回任何事件,但我确定这个myId有几个事件...

当查询由长度为90个字符的privateExtendedProperty时,日历API列表似乎返回一个空列表。

一切都运行良好多年,但今天早上我的一些用户突然爆发了......

这是我的要求:

GET googleapis.com/calendar/v3/calendars/****/events?privateExtendedProperty=myId%3Dagxzfm1haWxmb29nYWVyNQsSDE9yZ2FuaXphdGlvbiIVYWN0aXZlZ2FtaW5nbWVkaWEuY29tDAsSBENhc2UYwauk6QgM&key={YOUR_API_KEY} 

这是我在API资源管理器中看到的结果:

{
 "kind": "calendar#events",
 "etag": ""*****"",
 "summary": "*****",
 "description": "*****",
 "updated": "2018-02-20T03:18:35.098Z",
 "timeZone": "Asia/Tokyo",
 "accessRole": "owner",
 "defaultReminders": [
 ],
 "nextSyncToken": "CJDv1KDEs9kCEJDv1KDEs9kCGAU=",
 "items": [
 ]
}

更新1:我的privateExtendedProperty如下所示:

{
  "myStatus": "READY",
  "myId": "agxzfm1haWxmb29nYWVyNQsSDE9yZ2FuaXphdGlvbiIVYWN0aXZlZ2FtaW5nbWVkaWEuY29tDAsSBENhc2UYkcHA3wgM",
  "another": "Another value",
  "another2": "Another value2"
}

当我用“myStatus = READY”查询事件时 - 返回事件,但当我对“myId = agxzfm1 ...”执行相同操作时 - 它返回emtpy列表。

更新2:对于那些有同样问题的人。根据建议,我创建了一个新日历,然后复制了一些测试数据并在privateExtendedProperty查询中尝试了长值,并按预期返回了事件。这意味着,如果这是一个错误 - 并非所有日历都受到影响,并且将事物移动到新日历可能是一种方法。

答案

The document for Extended Properties说限制如下。

  1. 属性键的最大大小为44个字符,具有较长键的属性将以静默方式删除。
  2. 属性值的最大大小为1024个字符,具有较长值的属性将以静默方式截断。
  3. 事件最多可包含300个共享属性,总大小最大为32kB(键大小+值大小)。
  4. 事件的所有“副本”中最多可包含300个私有属性,总大小最多为32kB(键大小+值大小)。

由此看来,您的案例似乎超出了上述限制。在我的环境中,我也尝试过你的情况。结果,发现可以使用myId=agxzfm1haWxmb29nYWVyNQsSDE9yZ2FuaXphdGlvbiIVYWN0aXZlZ2FtaW5nbWVkaWEuY29tDAsSBENhc2UYkcHA3wgM

那么你能再次确认以下几点吗?

  1. 似乎您的API资源管理器检索到的结果不包含extendedProperties属性中的items。当您设置extendedProperties时,可以看到它。如果你使用fields,它可能无法被看到。
  2. 你能再次用extendedProperties设置myId=agxzfm1haWxmb29nYWVyNQsSDE9yZ2FuaXphdGlvbiIVYWN0aXZlZ2FtaW5nbWVkaWEuY29tDAsSBENhc2UYkcHA3wgM吗? 您可以使用calendar.events.patch进行设置。
  3. 使用myId=agxzfm1haWxmb29nYWVyNQsSDE9yZ2FuaXphdGlvbiIVYWN0aXZlZ2FtaW5nbWVkaWEuY29tDAsSBENhc2UYkcHA3wgM使用calendar.events.list检索事件时,如果使用myId%3dagxzfm1haWxmb29nYWVyNQsSDE9yZ2FuaXphdGlvbiIVYWN0aXZlZ2FtaW5nbWVkaWEuY29tDAsSBENhc2UYkcHA3wgM的URL编码值,请尝试使用不带URL编码的值。

如果这对你没用,我误解了你的问题,我很抱歉。

编辑:

  • 如果使用calendar.events.get检索事件,是否可以看到您设置的extendedProperties?如果您看不到它,请再次插入extendedProperties。 终点是GET https://www.googleapis.com/calendar/v3/calendars/### calendar Id ###/events/### event Id ###?fields=extendedProperties%2Fprivate
  • 在我的环境中,你的同一个端点工作正常。那么作为测试,您可以尝试创建新日历并运行该查询吗?因为我担心最近的日历更新是否会影响这种情况。

以上是关于Google Calendar API停止了返回活动的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 Javascript 中的 Google Calendar API 获取 Google Calendar 中事件的位置?

在 php 中使用 google calendar api v3 获取定期事件

将 INT 中的日期转换为 Google Calendar API 的 CreateEvent 的 DateTime

从google-calendar-API获取详细信息,无需帐户关联

Google Calendar API。为事件修补sharedExtendedProperty

Google Calendar API 活动地点