[英]Google Calendar API: Deleting a Event does not delete an Event Id
首先:我創建一個新事件:
event = {
"id": "tph13",
"start": {
"dateTime": convert_to_RFC_datetime(2021,5,10,8,15),
"timeZone": "Europe/Zurich"
},
"end": {
"dateTime": convert_to_RFC_datetime(2021,5,10,12,00),
"timeZone": "Europe/Zurich"
},
"summary": "TEST_EVENT"
}
event = service.events().insert(calendarId='primary', body=event).execute()
這成功地在 Google 日歷中創建了一個活動!
然后:我再次刪除事件:
service.events().delete(calendarId='primary', eventId='tph13').execute()
它成功刪除了事件(至少我不再看到它了)。
然后:我重新創建相同的事件:
event = {
"id": "tph13",
"start": {
"dateTime": convert_to_RFC_datetime(2021,5,10,8,15),
"timeZone": "Europe/Zurich"
},
"end": {
"dateTime": convert_to_RFC_datetime(2021,5,10,12,00),
"timeZone": "Europe/Zurich"
},
"summary": "TEST_EVENT"
}
event = service.events().insert(calendarId='primary', body=event).execute()
...但后來我得到這個錯誤:
'請求的標識符已經存在。'
我究竟做錯了什么?
(對於那些有興趣的人)
def convert_to_RFC_datetime(year=1900, month=1, day=1, hour=0, minute=0):
dt = datetime.datetime(year, month, day, hour, minute, 0).isoformat() + 'Z'
return dt
從文檔中:
由於系統的全球分布特性,我們不能保證在事件創建時會檢測到 ID 沖突。
https://developers.google.com/calendar/v3/reference/events/insert
盡管這不能解決您的確切問題,但它指出了一個重要問題,即更新需要時間來傳播。
雖然不允許創建以前刪除的 ID 有一些優勢(如下所述),但最終這些 ID 可能會再次可用。 如果真實 ID 被刪除,可能需要幾天時間才能在系統中傳播。 那是假設它們完全從系統中刪除。 很可能,身份證會在未來很長一段時間內徘徊。
可以從一個或多個其他資源中指向舊 ID。 如果一個應用程序依賴一個特定的事件來收集一些信息,然后發現這個 ID 有完全不同的信息,那就有點奇怪了。 讓其他資源發現該事件已被刪除,而不是找到一個完全不同的事件。
實際上,當您對已刪除的事件發出GET
請求時,它實際上會返回帶有一個重要字段的事件:
"status": "cancelled",
這是有道理的,因為可能很多人已經在他們的日歷中添加了這個事件 ID 的提醒,如果 API 允許您完全更改最近刪除的事件,那么人們可能會開始收到隨機事件的提醒。
它顯示為“已取消”的事實表明,ID 實際上可能永遠不會被刪除,或者至少保留足夠長的時間以使上述問題永遠不會成為問題。
如果您想保持相同的 ID,但想完全更新事件,那么您將需要使用update
或patch
端點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.