Google Calendar API停止了返回活动

时间:2018-02-20 03:21:17

标签: google-api google-calendar-api google-api-explorer

从今天起,我遇到了对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查询中尝试了长值,并按预期返回了事件。这意味着,如果这是一个错误 - 并非所有日历都受到影响,并且将事物移动到新日历可能是一种方法。

1 个答案:

答案 0 :(得分:0)

The document for Extended Properties说的限制如下。

  
      
  1. 属性密钥的最大大小为44个字符,密钥较长的属性将以静默方式删除。
  2.   
  3. 属性值的最大大小为1024个字符,具有较长值的属性将被静默截断。
  4.   
  5. 一个事件最多可包含300个共享属性,总大小不超过32kB(密钥大小+值大小)。
  6.   
  7. 一个事件最多可以包含300个私有属性,总大小达32kB(密钥大小+值大小),所有"副本"事件。
  8.   

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

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

  1. API资源管理器检索到的结果似乎并未包含extendedProperties items的属性。设置extendedProperties时,可以看到它。如果您使用fields,则可能无法看到它。
  2. 您可以再次使用extendedProperties设置myId=agxzfm1haWxmb29nYWVyNQsSDE9yZ2FuaXphdGlvbiIVYWN0aXZlZ2FtaW5nbWVkaWEuY29tDAsSBENhc2UYkcHA3wgM吗?
    • 您可以使用calendar.events.patch
    • 进行设置
  3. 当您使用myId=agxzfm1haWxmb29nYWVyNQsSDE9yZ2FuaXphdGlvbiIVYWN0aXZlZ2FtaW5nbWVkaWEuY29tDAsSBENhc2UYkcHA3wgM使用calendar.events.list检索事件时,如果您使用myId%3dagxzfm1haWxmb29nYWVyNQsSDE9yZ2FuaXphdGlvbiIVYWN0aXZlZ2FtaW5nbWVkaWEuY29tDAsSBENhc2UYkcHA3wgM的网址编码值,请尝试使用不带网址编码的值。
  4. 如果这对你没用,我误解了你的问题,我很抱歉。

    编辑:

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