我有一个具有以下场景的应用程序:
- 用户在我的应用程序中的谷歌日历中创建重复事件(通过谷歌日历 API v3)
- 他们改变了其中一个实例的时间(这会以一种很好的方式创建异常实例-“异常”)
- 现在他们想要扩展该重复事件,并更改主事件的计数或结束日期
问题是在最后一步之后所有异常都消失了(日历 UI 似乎可以处理,但如果通过 API 完成,异常就消失了)。然而,我注意到 Outlook 通过他们的 API 可以很好地管理这种情况。
是否有任何简单的方法可以通过 API 在谷歌日历中保留这种情况下的异常?
我还注意到,如果我在更新主节点后尝试进一步更新原始异常之一,则会出现错误(以一种糟糕的方式出现“异常”)并指出实例事件被标记为已删除,因此不能被更新('get' 仍然返回它)。在这种情况下,它创建了一个新的实例事件,用一个新的 id 代替原来的。
更新
更新主事件的伪代码如下所示:
let originalMastEvent = {
id:"google_generated_master_event_id",
...
recurrence: [ 'RRULE:FREQ=WEEKLY;INTERVAL=1;BYDAY=WE,SA;COUNT=6' ],
...
}
//change the count from 6 to 10, the rest stays the same:
let newMastEvent = {
id:"google_generated_master_event_id",
summary: 'Summary',
start: { dateTime: '2020-06-24T01:00:00+02:00', timeZone: 'UTC' },
end: { dateTime: '2020-06-24T02:00:00+02:00', timeZone: 'UTC' },
recurrence: [ 'RRULE:FREQ=WEEKLY;INTERVAL=1;BYDAY=WE,SA;COUNT=10' ],
sendUpdates: 'all',
attendees:[ { email: 'attendee1@gmail.com'} ]
}
const {google} = require('googleapis/build/src/index'); //I'm on node.js
let auth = {...} //setup google api oauth obj
let calendar = await google.calendar({version: 'v3', auth});
let res = await calendar.events.update({
calendarId: 'primary',
eventId: newMastEvent.id,
resource: newMastEvent,
sendUpdates: newMastEvent.sendUpdates
})