Sample code for 30+ languages & platforms
PowerShell

Outlook Calendar List Calendars

See more Outlook Calendar Examples

Get all the user's calendars.

Chilkat PowerShell Downloads

PowerShell
Add-Type -Path "C:\chilkat\ChilkatDotNet47-x64\ChilkatDotNet47.dll"

$success = $false

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

$http = New-Object Chilkat.Http

# Use your previously obtained access token here: Get Outlook Calendar OAuth2 Access Token (Azure AD v2.0 Endpoint).

$jsonToken = New-Object Chilkat.JsonObject
$success = $jsonToken.LoadFile("qa_data/tokens/outlookCalendar.json")
if ($success -eq $false) {
    $($jsonToken.LastErrorText)
    exit
}

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

$resp = New-Object Chilkat.HttpResponse
$success = $http.HttpNoBody("GET","https://graph.microsoft.com/v1.0/me/calendars",$resp)
if ($success -eq $false) {
    $($http.LastErrorText)
    exit
}

$("Response status code = " + $resp.StatusCode)

# The HTTP request succeeded if the response status code = 200.
if ($resp.StatusCode -ne 200) {
    $($resp.BodyStr)
    $("Failed")
    exit
}

$json = New-Object Chilkat.JsonObject
$json.Load($resp.BodyStr)
$json.EmitCompact = $false
$($json.Emit())

# Here is a sample response:

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

# {
#     "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#me/calendars",
#     "value": [
#         {
#             "@odata.id": "https://graph.microsoft.com/v1.0/users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/calendars('AAMkAGI2TGuLAAA=')",
#             "id": "AAMkAGI2TGuLAAA=",
#             "name": "Calendar",
#             "color": "auto",
#             "changeKey": "nfZyf7VcrEKLNoU37KWlkQAAA0x0+w==",
#             "canShare":true,
#             "canViewPrivateItems":true,
#             "hexColor": "",
#             "canEdit":true,
#             "allowedOnlineMeetingProviders": [
#                 "teamsForBusiness"
#             ],
#             "defaultOnlineMeetingProvider": "teamsForBusiness",
#             "isTallyingResponses": true,
#             "isRemovable": false,
#             "owner":{
#                 "name":"Samantha Booth",
#                 "address":"samanthab@adatum.onmicrosoft.com"
#             }
#         }
#     ]
# }

$odata_context = $json.StringOf("`"@odata.context`"")
$i = 0
$count_i = $json.SizeOfArray("value")
while ($i -lt $count_i) {
    $json.I = $i
    $id = $json.StringOf("value[i].id")
    $name = $json.StringOf("value[i].name")
    $color = $json.StringOf("value[i].color")
    $hexColor = $json.StringOf("value[i].hexColor")
    $isDefaultCalendar = $json.BoolOf("value[i].isDefaultCalendar")
    $changeKey = $json.StringOf("value[i].changeKey")
    $canShare = $json.BoolOf("value[i].canShare")
    $canViewPrivateItems = $json.BoolOf("value[i].canViewPrivateItems")
    $canEdit = $json.BoolOf("value[i].canEdit")
    $defaultOnlineMeetingProvider = $json.StringOf("value[i].defaultOnlineMeetingProvider")
    $isTallyingResponses = $json.BoolOf("value[i].isTallyingResponses")
    $isRemovable = $json.BoolOf("value[i].isRemovable")
    $ownerName = $json.StringOf("value[i].owner.name")
    $ownerAddress = $json.StringOf("value[i].owner.address")
    $j = 0
    $count_j = $json.SizeOfArray("value[i].allowedOnlineMeetingProviders")
    while ($j -lt $count_j) {
        $json.J = $j
        $strVal = $json.StringOf("value[i].allowedOnlineMeetingProviders[j]")
        $j = $j + 1
    }

    $i = $i + 1
}