vb.net 在 VB 中创建 Google 日历事件
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/27015252/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Creating a Google Calendar event in VB
提问by Mojachiee
I'm trying to create a Google Calendar Event in Visual Basic using the Google Api v3.
我正在尝试使用 Google Api v3 在 Visual Basic 中创建一个 Google 日历事件。
I've managed to authenticate and get events from the calendar but I'm not sure how to save events and the documentation isn't very helpful.
我已经设法验证并从日历中获取事件,但我不确定如何保存事件,而且文档也不是很有帮助。
Here's my current code:
这是我当前的代码:
Imports System.Collections.Generic
Imports System.IO
Imports System.Threading
Imports Google.Apis.Calendar.v3
Imports Google.Apis.Calendar.v3.Data
Imports Google.Apis.Calendar.v3.EventsResource
Imports Google.Apis.Services
Imports Google.Apis.Auth.OAuth2
Imports Google.Apis.Util.Store
Imports Google.Apis.Requests
Public Class ClsGoogle
'' Calendar scopes which is initialized on the main method.
Dim scopes As IList(Of String) = New List(Of String)()
'' Calendar service.
Dim service As CalendarService
Public CalEvents As List(Of [Event]) = New List(Of [Event]) 'List of events in the calendar
Sub New() 'Classes constructor, to authenticate with google servers everytime an object is created
Authenticate()
End Sub
Private Function Authenticate() 'Function that gets authenticates with google servers
' Add the calendar specific scope to the scopes list.
scopes.Add(CalendarService.Scope.Calendar)
Dim credential As UserCredential
Using stream As New FileStream("client_secrets.json", FileMode.Open, FileAccess.Read)
credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
GoogleClientSecrets.Load(stream).Secrets, scopes, "user", CancellationToken.None,
New FileDataStore("Calendar.VB.Sample")).Result
End Using
' Create the calendar service using an initializer instance
Dim initializer As New BaseClientService.Initializer()
initializer.HttpClientInitializer = credential
initializer.ApplicationName = "VB.NET Calendar Sample"
service = New CalendarService(initializer)
Return 0
End Function
Sub GetCalendar(MinDate As Date, Optional MaxDate As Date = Nothing)
Dim list As IList(Of CalendarListEntry) = service.CalendarList.List().Execute().Items() 'List of all the google calendars the user has
Dim EventRequest As ListRequest = service.Events.List(list("0").Id) 'Specifies which google calendar to perform the query
EventRequest.TimeMin = MinDate 'Specifies the minimum date to look for in the query
If Not MaxDate = Nothing Then
EventRequest.TimeMax = MaxDate 'Specifies the maximum date to look for in the query
End If
For Each CalendarEvent As Data.Event In EventRequest.Execute.Items 'For each event in the google calendar add to CalEvents
CalEvents.Add(CalendarEvent)
Next
End Sub
Sub UpdateCalendar()
Dim CalendarEvent As New Data.Event
Dim StartDateTime As New Data.EventDateTime
Dim A As Date
A = "19/11/2014 12:00"
StartDateTime.DateTime = A
Dim b As Date
b = A.AddHours(2)
Dim EndDateTime As New Data.EventDateTime
EndDateTime.DateTime = b
CalendarEvent.Start = StartDateTime
CalendarEvent.End = EndDateTime
CalendarEvent.Id = System.Guid.NewGuid.ToString
CalendarEvent.Description = "Test"
Dim Request As New InsertRequest(service, CalendarEvent, service.Events.List(list("0").Id))
Request.CreateRequest()
Request.Execute()
End Sub
End Class
回答by NUMERO
1) new event
1) 新活动
service.Events.Insert(CalendarEvent, service.Events.List(list("0").Id).Execute()
2) delete event (id is event id)
2)删除事件(id为事件id)
' search id event
'搜索id事件
Dim id As String = Getevent_id(oggetto, data, ora)
service.Events.Delete(service.Events.List(list("0").Id, id).Execute()
3) update event (id is event id)
3)更新事件(id为事件id)
' search id event
'搜索id事件
Dim id As String = Getevent_id(oggetto, data, ora)
service.Events.Update(CalendarEvent, service.Events.List(list("0").Id, id).Execute()
`------------------------------------------------------------------------------------------
`------------------------------------------------- -----------------------------------------
Public Function Getevent_id(testo As String, data As String, ora As String)
Dim EventRequest As ListRequest = service.Events.List(service.Events.List(list("0").Id))
'
EventRequest.Q = testo
'
For Each CalendarEvent As Data.Event In EventRequest.Execute.Items
Dim stringa As String = data.ToString & " " & ora.ToString
If CalendarEvent.Start.DateTime.ToString <> Nothing Then
If CalendarEvent.Start.DateTime.ToString.Substring(0, stringa.Length) = data.ToString & " " & ora.ToString Then
' ok
Return CalendarEvent.Id
End If
End If
Next
Return 0
End Function
回答by Gerardo
Here you can find an example on adding a recurring event in c#, which is not very different in the way of creating a normal event, it also shouldn't be difficult to change it into VB code. https://developers.google.com/google-apps/calendar/recurringevents.
这里可以找到c#中添加循环事件的例子,和普通事件的创建方式没有太大区别,改成VB代码应该也不难。 https://developers.google.com/google-apps/calendar/recurringevents。

