0

从今天开始,我对 Google Calendar API v3 的 2 个类似调用之一遇到了问题:

calendar.events.list

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

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

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

多年来一切正常,但今天早上我的一些用户突然崩溃了......

这是我的要求:

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

这是我在 API Explorer 中看到的结果:

{
 "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 查询中尝试了 long 值,它按预期返回了事件。这意味着,如果这是一个错误 - 并非所有日历都会受到影响,将事情转移到新日历可能是一种方法。

4

1 回答 1

0

扩展属性的文档说明了以下限制。

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

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

那么您能否再次确认以下几点?

  1. 您的 API 资源管理器检索到的结果似乎不包含extendedPropertiesitems. 设置extendedProperties后,就可以看到了。如果您使用fields,它可能无法被看到。
  2. 可以重新设置extendedPropertiesmyId=agxzfm1haWxmb29nYWVyNQsSDE9yZ2FuaXphdGlvbiIVYWN0aXZlZ2FtaW5nbWVkaWEuY29tDAsSBENhc2UYkcHA3wgM
    • 您可以使用calendar.events.patch.
  3. myId=agxzfm1haWxmb29nYWVyNQsSDE9yZ2FuaXphdGlvbiIVYWN0aXZlZ2FtaW5nbWVkaWEuY29tDAsSBENhc2UYkcHA3wgM使用 using检索事件时calendar.events.list,如果使用 的 URL 编码值myId%3dagxzfm1haWxmb29nYWVyNQsSDE9yZ2FuaXphdGlvbiIVYWN0aXZlZ2FtaW5nbWVkaWEuY29tDAsSBENhc2UYkcHA3wgM,请尝试使用不带 URL 编码的值。

如果这对您没有用并且我误解了您的问题,我很抱歉。

编辑 :

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