Sample code for 30+ languages & platforms
Perl

Outlook Calendar List Calendars

See more Outlook Calendar Examples

Get all the user's calendars.

Chilkat Perl Downloads

Perl
use chilkat();

$success = 0;

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

$http = chilkat::CkHttp->new();

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

$jsonToken = chilkat::CkJsonObject->new();
$success = $jsonToken->LoadFile("qa_data/tokens/outlookCalendar.json");
if ($success == 0) {
    print $jsonToken->lastErrorText() . "\r\n";
    exit;
}

$http->put_AuthToken($jsonToken->stringOf("access_token"));

$resp = chilkat::CkHttpResponse->new();
$success = $http->HttpNoBody("GET","https://graph.microsoft.com/v1.0/me/calendars",$resp);
if ($success == 0) {
    print $http->lastErrorText() . "\r\n";
    exit;
}

print "Response status code = " . $resp->get_StatusCode() . "\r\n";

# The HTTP request succeeded if the response status code = 200.
if ($resp->get_StatusCode() != 200) {
    print $resp->bodyStr() . "\r\n";
    print "Failed" . "\r\n";
    exit;
}

$json = chilkat::CkJsonObject->new();
$json->Load($resp->bodyStr());
$json->put_EmitCompact(0);
print $json->emit() . "\r\n";

# 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 < $count_i) {
    $json->put_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 < $count_j) {
        $json->put_J($j);
        $strVal = $json->stringOf("value[i].allowedOnlineMeetingProviders[j]");
        $j = $j + 1;
    }

    $i = $i + 1;
}