2016-12-27 35 views
1

我想自定義提醒添加到谷歌日曆與golang:對谷歌日曆添加提醒與golang

event := &calendar.Event{ 
    Summary:  "Test GG calendar", 
    Location: "31 AAA", 
    Description: "Test google calendar", 
    Start: &calendar.EventDateTime{ 
     DateTime: "2016-12-27T17:30:00+07:00", 
     TimeZone: "Asia/Ho_Chi_Minh", 
    }, 
    End: &calendar.EventDateTime{ 
     DateTime: "2016-12-27T17:40:00+07:00", 
     TimeZone: "Asia/Ho_Chi_Minh", 
    }, 
    Reminders: &calendar.EventReminders{ 
     Overrides: []*calendar.EventReminder{ 
      {Method: "email", Minutes: 30}, 
      {Method: "popup", Minutes: 10}, 
     }, 
     UseDefault: false, 
    }, 
} 

當我運行這段代碼,谷歌不能添加事件。我收到此錯誤:無法創建事件。 googleapi:錯誤400:在同一時間不能同時指定默認的提醒和覆蓋,cannotUseDefaultRemindersAndSpecifyOverride

感謝

+1

我找到了解決方案。我們必須在UseDefault:false之後添加 'ForceSendFields:[] string {「UseDefault」},' ,因爲他們認爲false值爲空值,並且他們沒有將它發送到服務器:https://godoc.org/google .golang.org/api/calendar/v3#EventReminders – hungpk

回答

1

根據我的google-apps/calendar/concepts/reminders閱讀,似乎你不應該指定UseDefault: false,在同一時間設置Overrides。不要放置UseDefault: false,部分,並且它將默認爲false,因爲它只需要設置何時想要刪除已存在的覆蓋。

所以期望代碼是:

event := &calendar.Event{ 
    Summary:  "Test GG calendar", 
    Location: "31 AAA", 
    Description: "Test google calendar", 
    Start: &calendar.EventDateTime{ 
     DateTime: "2016-12-27T17:30:00+07:00", 
     TimeZone: "Asia/Ho_Chi_Minh", 
    }, 
    End: &calendar.EventDateTime{ 
     DateTime: "2016-12-27T17:40:00+07:00", 
     TimeZone: "Asia/Ho_Chi_Minh", 
    }, 
    Reminders: &calendar.EventReminders{ 
     Overrides: []*calendar.EventReminder{ 
      {Method: "email", Minutes: 30}, 
      {Method: "popup", Minutes: 10}, 
     }, 
    }, 
} 
+0

感謝您的回答。 – hungpk

+1

在Go中,默認值bool爲false,所以當我們沒有指定它時,UserDefault的值始終爲false。在此示例代碼中,我們必須將UserDefault設置爲false:https://developers.google.com/google-apps/calendar/create-events。我不知道爲什麼谷歌刪除提示在Go部分的示例代碼。你可以在Java或PHP部分看到它。 – hungpk