通过 Google 日历 API v3 创建重复事件

Creating recurring events via Google Calendar API v3

我有一个 web 应用程序,用户填写表单并在提交时将事件添加到 google 日历。我可以将事件的单个实例插入到日历中,但是当我尝试设置事件的重复发生时,我无法这样做。到目前为止,我的方法要么没有完成任何事情,要么创建了事件,但仅针对一次事件。

我正在使用 google api 日历 v3 下面是我插入事件的代码。

try{
    Google.Apis.Calendar.v3.CalendarService g = new
    Google.Apis.Calendar.v3.CalendarService();

    Google.Apis.Calendar.v3.Data.Event ev = new 
    Google.Apis.Calendar.v3.Data.Event();

    //Create Date Times for start and end time
    EventDateTime starter = new EventDateTime();
    starter.DateTime = start;
    EventDateTime ender = new EventDateTime();
    ender.DateTime = end;

    //Add values to the event
    ev.Start = starter;
    ev.End = ender;
    ev.Summary = summary.Text;
    ev.Location = location.Text;
    ev.Description = description.Text;
    String[] recd = {"RRULE:FREQ=WEEKLY;COUNT=2"};

    Random rnd = new Random();
    ev.RecurringEventId = "asdf" + rnd.Next(9999).ToString();
    ev.Recurrence = recd;

    //Add to calendar
    addEvent(service, ev);
    g.Events.Insert(ev, "********");    
}

编辑 1: 我重写了我的事件创建代码如下:

EventDateTime starter = new EventDateTime();
starter.DateTime = start;

EventDateTime ender = new EventDateTime();
ender.DateTime = end;

Event newEvent = new Event()
  {
    Summary = summary.Text,
    Location = location.Text,
    Description = description.Text,
    Start = starter,
    End = ender,
    Recurrence = new String[] {"RRULE:FREQ=DAILY;COUNT=2"}
  };
    String calendarId = "****@group.calendar.google.com";
    EventsResource.InsertRequest request = service.Events.Insert(newEvent, calendarId);
    Event createdEvent = request.Execute();

唯一的问题是事件不会被创建,也不会重复发生。如果我离开该行,代码将 运行 并将单个事件插入到日历中。

你是不是忘记调用 .execute() 了?

Event newEvent = new Event()
            {
                Summary = "Read Awesome Blog posts by Linda ",
                Location = "1600 Amphitheatre Parkway., Mountain View, CA 94043",
                Description = "A chance to learn more about Google APIs.",
                Start = new EventDateTime()
                {
                    DateTime = DateTime.Parse("2015-09-20T09:00:00-07:00"),
                    TimeZone = "America/Los_Angeles",
                },
                End = new EventDateTime()
                {
                    DateTime = DateTime.Parse("2015-09-20T17:00:00-07:00"),
                    TimeZone = "America/Los_Angeles",
                },
                Recurrence = new String[] { "RRULE:FREQ=DAILY;COUNT=2" },
                Attendees = new EventAttendee[] {
                    new EventAttendee() { Email = "test@test.com" },
                },
                Reminders = new Event.RemindersData()
                {
                    UseDefault = false,
                    Overrides = new EventReminder[] {
                        new EventReminder() { Method = "email", Minutes = 24 * 60 },
                        new EventReminder() { Method = "sms", Minutes = 10 },
                }
                }
            };

            String calendarId = "primary";
            EventsResource.InsertRequest request = service.Events.Insert(newEvent, calendarId);
            Event createdEvent = request.Execute();