簡體   English   中英

Google 日歷 API:刪除事件不會刪除事件 ID

[英]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 永遠無法再次使用。

從文檔中:

由於系統的全球分布特性,我們不能保證在事件創建時會檢測到 ID 沖突。

https://developers.google.com/calendar/v3/reference/events/insert

盡管這不能解決您的確切問題,但它指出了一個重要問題,即更新需要時間來傳播。

雖然不允許創建以前刪除的 ID 有一些優勢(如下所述),但最終這些 ID 可能會再次可用。 如果真實 ID 被刪除,可能需要幾天時間才能在系統中傳播。 那是假設它們完全從系統中刪除。 很可能,身份證會在未來很長一段時間內徘徊。

為什么要保留 ID?

可以從一個或多個其他資源中指向舊 ID。 如果一個應用程序依賴一個特定的事件來收集一些信息,然后發現這個 ID 有完全不同的信息,那就有點奇怪了。 讓其他資源發現該事件已被刪除,而不是找到一個完全不同的事件。

實際上,當您對已刪除的事件發出GET請求時,它實際上會返回帶有一個重要字段的事件:

"status": "cancelled",

這是有道理的,因為可能很多人已經在他們的日歷中添加了這個事件 ID 的提醒,如果 API 允許您完全更改最近刪除的事件,那么人們可能會開始收到隨機事件的提醒。

它顯示為“已取消”的事實表明,ID 實際上可能永遠不會被刪除,或者至少保留足夠長的時間以使上述問題永遠不會成為問題。

更改事件

如果您想保持相同的 ID,但想完全更新事件,那么您將需要使用updatepatch端點。

參考

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM