从今天起,我遇到了对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查询中尝试了长值,并按预期返回了事件。这意味着,如果这是一个错误 - 并非所有日历都受到影响,并且将事物移动到新日历可能是一种方法。
答案 0 :(得分:0)
The document for Extended Properties说的限制如下。
- 属性密钥的最大大小为44个字符,密钥较长的属性将以静默方式删除。
- 属性值的最大大小为1024个字符,具有较长值的属性将被静默截断。
- 一个事件最多可包含300个共享属性,总大小不超过32kB(密钥大小+值大小)。
- 一个事件最多可以包含300个私有属性,总大小达32kB(密钥大小+值大小),所有"副本"事件。
醇>
由此看来,您的案例似乎超出了上述限制。在我的环境中,我也尝试过你的情况。结果发现可以使用myId=agxzfm1haWxmb29nYWVyNQsSDE9yZ2FuaXphdGlvbiIVYWN0aXZlZ2FtaW5nbWVkaWEuY29tDAsSBENhc2UYkcHA3wgM
。
那你能再次确认以下几点吗?
extendedProperties
items
的属性。设置extendedProperties
时,可以看到它。如果您使用fields
,则可能无法看到它。extendedProperties
设置myId=agxzfm1haWxmb29nYWVyNQsSDE9yZ2FuaXphdGlvbiIVYWN0aXZlZ2FtaW5nbWVkaWEuY29tDAsSBENhc2UYkcHA3wgM
吗?
calendar.events.patch
。myId=agxzfm1haWxmb29nYWVyNQsSDE9yZ2FuaXphdGlvbiIVYWN0aXZlZ2FtaW5nbWVkaWEuY29tDAsSBENhc2UYkcHA3wgM
使用calendar.events.list
检索事件时,如果您使用myId%3dagxzfm1haWxmb29nYWVyNQsSDE9yZ2FuaXphdGlvbiIVYWN0aXZlZ2FtaW5nbWVkaWEuY29tDAsSBENhc2UYkcHA3wgM
的网址编码值,请尝试使用不带网址编码的值。如果这对你没用,我误解了你的问题,我很抱歉。
calendar.events.get
检索事件,是否可以看到您设置的extendedProperties?如果您看不到它,请再次插入extendedProperties。
GET https://www.googleapis.com/calendar/v3/calendars/### calendar Id ###/events/### event Id ###?fields=extendedProperties%2Fprivate