【问题标题】:How can I custom my Event ID of Google Calendar when I input new event with Google Calendar API Python?当我使用 Google Calendar API Python 输入新事件时,如何自定义我的 Google Calendar 事件 ID?
【发布时间】:2020-06-10 12:31:36
【问题描述】:

我想用 Python 将我想要的事件 ID 插入到 Google Calendar API, 但我不知道该怎么做,

 event = {
      'summary': acara,
      'location': lokasi,
      'description': deskripsi,
      'start': {
        'dateTime': start_time.strftime("%Y-%m-%dT%H:%M:%S"),
        'timeZone': timezone,
      },
      'end': {
        'dateTime': end_time.strftime("%Y-%m-%dT%H:%M:%S"),
        'timeZone': timezone,
      },


      'attendees': attendees,

      'reminders': {
        'useDefault': False,
        'overrides': [
          {'method': 'email', 'minutes': 24 * 60},
          {'method': 'popup', 'minutes': 10},
        ],
      },
    }

【问题讨论】:

    标签: python insert google-calendar-api event-id


    【解决方案1】:

    您可以通过简单地将字段id 添加到事件资源中来指定您的自定义事件ID:

     event = {
          'id': 123456
          'summary': acara,
          'location': lokasi,
          'description': deskripsi,
          'start': {
            'dateTime': start_time.strftime("%Y-%m-%dT%H:%M:%S"),
            'timeZone': timezone,
          },
          'end': {
            'dateTime': end_time.strftime("%Y-%m-%dT%H:%M:%S"),
            'timeZone': timezone,
          },
    
    
          'attendees': attendees,
    
          'reminders': {
            'useDefault': False,
            'overrides': [
              {'method': 'email', 'minutes': 24 * 60},
              {'method': 'popup', 'minutes': 10},
            ],
          },
        }
    

    重要

    事件 ID 需要满足documentation 中指定的某些条件:

    创建新单曲或循环播放时 事件,您可以指定它们的 ID。提供的 ID 必须遵循这些 规则:

    ID 中允许的字符是 base32hex 中使用的字符 编码,即小写字母 a-v 和数字 0-9,参见第 3.1.2 节 在 RFC2938 中

    ID 的长度必须在 5 到 1024 个字符之间

    每个日历的 ID 必须是唯一的

    由于全球分布 系统的性质,我们不能保证 ID 冲突会 在事件创建时检测到。为了尽量减少碰撞的风险,我们 建议使用已建立的 UUID 算法,例如在 RFC4122。

    如果你不指定一个ID,它会自动 由服务器生成。

    请注意,icalUID 和 id 不相同,并且只是其中之一 它们应该在事件创建时提供。一处不同 它们的语义是在重复发生的事件中,所有出现的一个 事件具有不同的 id,但它们都共享相同的 icalUID。)

    【讨论】:

      【解决方案2】:

      您可以使用“事件:插入”。可以看详情here.

      event = service.events().insert(calendarId='primary', body=event).execute()
      

      来源:https://developers.google.com/calendar/v3/reference/events/insert#python

      【讨论】:

      • Ping 不能这样工作。如果您想与版主交谈,您可以使用任何帖子下方的flag 按钮,并清楚说明您希望他们采取什么行动以及原因。
      • 也许一个更好、更坦率的方法是在一个新的Meta Stack Overflow 帖子中解释这些事件,并解释你从激进到谦虚的明显转变。除此之外,也许最简单的方法是放弃已删除的帖子,然后重新提出一个新的问题。
      • 嗯,事情变得复杂了。将您的代表提高到您摆脱禁令的程度将是第一步。
      • @Dharman 你能详细说明为什么这个答案会被否决吗?它非常具体地回答了这个问题。
      • 我不知道为什么这个答案会被否决。也许读过它的人认为这不足以解释问题。尝试添加一些解释,并教提问者将来如何解决类似的问题。
      【解决方案3】:

      只是一个自插式:

      有用于 Python 的 Google Calendar Simple API(由我编写)。它更简单,更 Pythonic,面向对象。它为您处理凭据、JSON 格式、日期时间/时区、重复周期等。这是Documentation

      你会使用它:

      from gcsa.google_calendar import GoogleCalendar
      from gcsa.event import Event
      
      calendar = GoogleCalendar('your_email@gmail.com')
      event = Event(
          summary=acara,
          event_id=your_id,
          start=start_date,
          end=end_time,
          timezone=timezone,
          attendees=attendees,
          recurrence=Recurrence.rule(freq=DAILY)),
          minutes_before_email_reminder=24 * 60,
          minutes_before_popup_reminder=10
      )
      
      calendar.add_event(event)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多