Sample code for 30+ languages & platforms
Visual Basic 6.0

MS Graph Calendar Create Event

See more Microsoft Calendar Examples

Creates a new event in a specified calendar.

For more details, see https://docs.microsoft.com/en-us/graph/api/calendar-post-events?view=graph-rest-1.0

Chilkat Visual Basic 6.0 Downloads

Visual Basic 6.0
Dim success As Long
success = 0

' This example requires the Chilkat API to have been previously unlocked.
' See Global Unlock Sample for sample code.

Dim http As New ChilkatHttp

' Use your previously obtained access token as shown here:
'    Get Microsoft Graph OAuth2 Access Token with Calendars.ReadWrite scope.

Dim jsonToken As New ChilkatJsonObject
success = jsonToken.LoadFile("qa_data/tokens/msGraphCalendar.json")
If (success = 0) Then
    Debug.Print jsonToken.LastErrorText
    Exit Sub
End If

http.AuthToken = jsonToken.StringOf("access_token")

' Create a JSON body for the HTTP POST
' Use this online tool to generate the code from sample JSON: 
' Generate Code to Create JSON

' {
'   "subject": "Let's go for lunch",
'   "body": {
'     "contentType": "HTML",
'     "content": "Does mid month work for you?"
'   },
'   "start": {
'       "dateTime": "2019-11-15T12:00:00",
'       "timeZone": "Pacific Standard Time"
'   },
'   "end": {
'       "dateTime": "2019-11-15T14:00:00",
'       "timeZone": "Pacific Standard Time"
'   },
'   "location":{
'       "displayName":"Harry's Bar"
'   },
'   "attendees": [
'     {
'       "emailAddress": {
'         "address":"adelev@contoso.onmicrosoft.com",
'         "name": "Adele Vance"
'       },
'       "type": "required"
'     }
'   ]
' }

Dim json As New ChilkatJsonObject
success = json.UpdateString("subject","Let's go for lunch")
success = json.UpdateString("body.contentType","HTML")
success = json.UpdateString("body.content","Does mid month work for you?")
success = json.UpdateString("start.dateTime","2019-11-15T12:00:00")
success = json.UpdateString("start.timeZone","Pacific Standard Time")
success = json.UpdateString("end.dateTime","2019-11-15T14:00:00")
success = json.UpdateString("end.timeZone","Pacific Standard Time")
success = json.UpdateString("location.displayName","Harry's Bar")
success = json.UpdateString("attendees[0].emailAddress.address","adelev@contoso.onmicrosoft.com")
success = json.UpdateString("attendees[0].emailAddress.name","Adele Vance")
success = json.UpdateString("attendees[0].type","required")

' POST the JSON to https://graph.microsoft.com/v1.0/me/calendars/{id}/events
' This is posting to a calendar in the default calendarGroup.

' Specify the calendar id
success = http.SetUrlVar("id","AQMkADAwATM0MDAAMS1iNTcwLWI2NTEtMDACLTAwCgBGAAADsVyfxjDU406Ic4X7ill8xAcA5_vF7TKKdE6bGCRqXyl2PQAAAgEGAAAA5_vF7TKKdE6bGCRqXyl2PQAClEpRTgAAAA==")
Dim resp As New ChilkatHttpResponse
success = http.HttpJson("POST","https://graph.microsoft.com/v1.0/me/calendars/{$id}/events",json,"application/json",resp)
If (success = 0) Then
    Debug.Print http.LastErrorText
    Exit Sub
End If

success = json.Load(resp.BodyStr)
json.EmitCompact = 0

If (resp.StatusCode <> 201) Then
    Debug.Print json.Emit()
    Debug.Print "Failed, response status code = " & resp.StatusCode
    Exit Sub
End If

Debug.Print json.Emit()

' A sample response:
' (See code for parsing this response below..)

' {
'   "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('admin%40chilkat.io')/calendars('AQMkADAwATM0MDAAMS ... AClEpRTgAAAA%3D%3D')/events/$entity",
'   "@odata.etag": "W/\"5+vF7TKKdE6bGCRqXyl2PQAClIgmmw==\"",
'   "id": "AQMkADAwAT ... ApRZ7JkAAAA=",
'   "createdDateTime": "2019-04-26T14:31:39.8791929Z",
'   "lastModifiedDateTime": "2019-04-26T14:31:41.2753537Z",
'   "changeKey": "5+vF7TKKdE6bGCRqXyl2PQAClIgmmw==",
'   "categories": [
'   ],
'   "originalStartTimeZone": "Pacific Standard Time",
'   "originalEndTimeZone": "Pacific Standard Time",
'   "iCalUId": "040000008200E00074C5B7101A82E00800000000F05DF1C23CFCD40100000000000000001000000009911D155F71EF42A230FEBFE5F7486A",
'   "reminderMinutesBeforeStart": 15,
'   "isReminderOn": true,
'   "hasAttachments": false,
'   "subject": "Let's go for lunch",
'   "bodyPreview": "Does mid month work for you?",
'   "importance": "normal",
'   "sensitivity": "normal",
'   "isAllDay": false,
'   "isCancelled": false,
'   "isOrganizer": true,
'   "responseRequested": true,
'   "seriesMasterId": null,
'   "showAs": "busy",
'   "type": "singleInstance",
'   "webLink": "https://outlook.live.com/owa/?itemid=AQMkADAwATM0MDAAMS1iNTcwL...pRZ7JkAAAA%3D&exvsurl=1&path=/calendar/item",
'   "onlineMeetingUrl": null,
'   "recurrence": null,
'   "responseStatus": {
'     "response": "organizer",
'     "time": "0001-01-01T00:00:00Z"
'   },
'   "body": {
'     "contentType": "html",
'     "content": "<html>\r\n<head>\r\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\r\n<meta content=\"text/html; charset=us-ascii\">\r\n</head>\r\n<body>\r\nDoes mid month work for you?\r\n</body>\r\n</html>\r\n"
'   },
'   "start": {
'     "dateTime": "2019-11-15T12:00:00.0000000",
'     "timeZone": "Pacific Standard Time"
'   },
'   "end": {
'     "dateTime": "2019-11-15T14:00:00.0000000",
'     "timeZone": "Pacific Standard Time"
'   },
'   "location": {
'     "displayName": "Harry's Bar",
'     "locationType": "default",
'     "uniqueId": "Harry's Bar",
'     "uniqueIdType": "private"
'   },
'   "locations": [
'     {
'       "displayName": "Harry's Bar",
'       "locationType": "default",
'       "uniqueId": "Harry's Bar",
'       "uniqueIdType": "private"
'     }
'   ],
'   "attendees": [
'     {
'       "type": "required",
'       "status": {
'         "response": "none",
'         "time": "0001-01-01T00:00:00Z"
'       },
'       "emailAddress": {
'         "name": "Adele Vance",
'         "address": "adelev@contoso.onmicrosoft.com"
'       }
'     }
'   ],
'   "organizer": {
'     "emailAddress": {
'       "name": "Matt",
'       "address": "outlook_3A33FCEB9B74CC15@outlook.com"
'     }
'   }
' }
' 
' 

' Use this online tool to generate parsing code from sample JSON: 
' Generate Parsing Code from JSON

Dim displayName As String
Dim locationType As String
Dim uniqueId As String
Dim uniqueIdType As String
Dim statusResponse As String
Dim statusTime As String
Dim emailAddressName As String
Dim emailAddressAddress As String

Dim odataContext As String
odataContext = json.StringOf("""@odata.context""")
Dim odataEtag As String
odataEtag = json.StringOf("""@odata.etag""")
Dim id As String
id = json.StringOf("id")
Dim createdDateTime As String
createdDateTime = json.StringOf("createdDateTime")
Dim lastModifiedDateTime As String
lastModifiedDateTime = json.StringOf("lastModifiedDateTime")
Dim changeKey As String
changeKey = json.StringOf("changeKey")
Dim originalStartTimeZone As String
originalStartTimeZone = json.StringOf("originalStartTimeZone")
Dim originalEndTimeZone As String
originalEndTimeZone = json.StringOf("originalEndTimeZone")
Dim iCalUId As String
iCalUId = json.StringOf("iCalUId")
Dim reminderMinutesBeforeStart As String
reminderMinutesBeforeStart = json.IntOf("reminderMinutesBeforeStart")
Dim isReminderOn As String
isReminderOn = json.BoolOf("isReminderOn")
Dim hasAttachments As String
hasAttachments = json.BoolOf("hasAttachments")
Dim subject As String
subject = json.StringOf("subject")
Dim bodyPreview As String
bodyPreview = json.StringOf("bodyPreview")
Dim importance As String
importance = json.StringOf("importance")
Dim sensitivity As String
sensitivity = json.StringOf("sensitivity")
Dim isAllDay As String
isAllDay = json.BoolOf("isAllDay")
Dim isCancelled As String
isCancelled = json.BoolOf("isCancelled")
Dim isOrganizer As String
isOrganizer = json.BoolOf("isOrganizer")
Dim responseRequested As String
responseRequested = json.BoolOf("responseRequested")
Dim seriesMasterId As String
seriesMasterId = json.StringOf("seriesMasterId")
Dim showAs As String
showAs = json.StringOf("showAs")
Dim type As String
type = json.StringOf("type")
Dim webLink As String
webLink = json.StringOf("webLink")
Dim onlineMeetingUrl As String
onlineMeetingUrl = json.StringOf("onlineMeetingUrl")
Dim recurrence As String
recurrence = json.StringOf("recurrence")
Dim responseStatusResponse As String
responseStatusResponse = json.StringOf("responseStatus.response")
Dim responseStatusTime As String
responseStatusTime = json.StringOf("responseStatus.time")
Dim bodyContentType As String
bodyContentType = json.StringOf("body.contentType")
Dim bodyContent As String
bodyContent = json.StringOf("body.content")
Dim startDateTime As String
startDateTime = json.StringOf("start.dateTime")
Dim startTimeZone As String
startTimeZone = json.StringOf("start.timeZone")
Dim endDateTime As String
endDateTime = json.StringOf("end.dateTime")
Dim endTimeZone As String
endTimeZone = json.StringOf("end.timeZone")
Dim locationDisplayName As String
locationDisplayName = json.StringOf("location.displayName")
Dim locationLocationType As String
locationLocationType = json.StringOf("location.locationType")
Dim locationUniqueId As String
locationUniqueId = json.StringOf("location.uniqueId")
Dim locationUniqueIdType As String
locationUniqueIdType = json.StringOf("location.uniqueIdType")
Dim organizerEmailAddressName As String
organizerEmailAddressName = json.StringOf("organizer.emailAddress.name")
Dim organizerEmailAddressAddress As String
organizerEmailAddressAddress = json.StringOf("organizer.emailAddress.address")
Dim i As Long
i = 0
Dim count_i As Long
count_i = json.SizeOfArray("categories")
Do While i < count_i
    json.I = i
    ' ...
    i = i + 1
Loop
i = 0
count_i = json.SizeOfArray("locations")
Do While i < count_i
    json.I = i
    displayName = json.StringOf("locations[i].displayName")
    locationType = json.StringOf("locations[i].locationType")
    uniqueId = json.StringOf("locations[i].uniqueId")
    uniqueIdType = json.StringOf("locations[i].uniqueIdType")
    i = i + 1
Loop
i = 0
count_i = json.SizeOfArray("attendees")
Do While i < count_i
    json.I = i
    type = json.StringOf("attendees[i].type")
    statusResponse = json.StringOf("attendees[i].status.response")
    statusTime = json.StringOf("attendees[i].status.time")
    emailAddressName = json.StringOf("attendees[i].emailAddress.name")
    emailAddressAddress = json.StringOf("attendees[i].emailAddress.address")
    i = i + 1
Loop

Debug.Print "Success."