Outlook の予定表とそのイベントを共有または委任する

Outlook では、予定表の所有者は、予定表を他のユーザーと共有して、共有者に予定表のイベントを表示または変更させることができます。共有された予定表は、所有者のプライマリ予定表にしたり、所有者が作成したカスタムの予定表にすることができます。 所有者は、プライマリ予定表に代理人を設定し、会議出席依頼の受信や返信、プライマリ予定表のアイテム作成と変更を、自分に代わって実行する許可を与えることもできます。

プログラムを使用して、Microsoft Graph では、他のユーザーが共有している予定表のイベントの読み取りと書き込みと、共有予定表の読み取りと共有受信者の予定表名の更新がサポートされています。 サポートは、委任された予定表にも適用されます。 この記事の残りの部分では、共有または委任された予定表のイベントの読み取りについて説明します。 イベントを作成する方法については、「共有または委任された予定表内の Outlook イベントを作成する」を参照してください。

共有受信者: 予定表の所有者のメールボックスから共有予定表またはそのイベントを直接取得する

以下の 3 つの例では、次のシナリオを使用しています。Alex は Outlook で自分のプライマリ予定表を Megan と共有し、Megan に読み取りアクセス許可を与えました。 Megan がアプリにサインインしていて、委任されたアクセス許可 (Calendars.Read.Shared または Calendars.ReadWrite.Shared) をアプリに与えている場合は、Megan の代わりに、アプリが Alex のプライマリ予定表とそのイベントに Alex のメールボックスから直接アクセスできます。

以下の 3 つの例では、所有者の ID (Alex のユーザー ID またはユーザー プリンシパル名) と calendar ショートカットを指定しています。 これらは所有者のメールボックスのみに対応する予定表とイベント ID にアクセスします。 共有受信者のメールボックス (Megan のユーザー ID またはユーザー プリンシパル名) でこれらの予定表とイベント ID を指定すると、エラーが返されます。 共有受信者のメールボックスに対応する予定表 ID とイベント ID を使用するには、「 共有受信者: 共有受信者のメールボックスから共有、カスタム予定表、またはそのイベントを取得する」を参照してください。

注:

共有アクセス許可 (Calendars.Read.Shared または Calendars.ReadWrite.Shared) が与えられると、共有または委任された予定表でイベントを読み書きできます。 そのようなフォルダーでアイテムの変更通知をサブスクライブすることはできません。 テナントで共有カレンダー、委任カレンダー、その他のユーザーまたはリソース カレンダーに含まれているイベントに変更通知サブスクリプションを設定するには、アプリケーション アクセス許可の Calendars.Read を使用します。

Megan: 共有されたプライマリ予定表を Alex のメールボックスから直接取得する

Megan としてサインインし、Alex が Megan と共有したプライマリ予定表を Alex のメールボックスから直接取得します。

GET https://graph.microsoft.com/v1.0/users/{Alex-userId | Alex-userPrincipalName}/calendar

正常に完了すると、HTTP 200 OK と、Alex の共有のプライマリ 予定表 を表す予定表インスタンスが Alex のメールボックスに表示されます。

Megan: 共有されたプライマリ予定表のイベントを Alex のメールボックスから直接取得する

Megan としてサインインし、アプリは Alex が Megan と共有したプライマリ予定表の特定のイベントを Alex のメールボックスから直接取得します。

GET https://graph.microsoft.com/v1.0/users/{Alex-userId | Alex-userPrincipalName}/calendar/events/{id}

正常に終了すると、HTTP 200 OK となり、Alex のプライマリ予定表で {id} によって識別されるイベント インスタンスを Alex のメールボックスから直接取得できます。

Megan: 共有されたプライマリ予定表のすべてのイベントを Alex のメールボックスから取得する

Megan としてサインインし、Alex が Megan と共有したプライマリ予定表のすべてのイベントを Alex のメールボックスから直接取得します。

GET https://graph.microsoft.com/v1.0/users/{Alex-userId | Alex-userPrincipalName}/calendar/events

正常に終了すると、HTTP 200 OK となり、Alex のプライマリ予定表のイベント インスタンスのコレクションを Alex のメールボックスから直接取得できます。

Alex が自分のプライマリ予定表へのアクセスを Megan に委任している、または自分のメールボックス全体へのアクセスを Megan に委任している場合は、同じ GET 機能が適用されます。

Alex が Megan でプライマリ 予定表を共有または委任していない場合は、前の GET 操作で Alex のユーザー ID またはユーザー プリンシパル名を指定するとエラーが返されます。

共有受信者: 共有受信者のメールボックスから共有、カスタム予定表、またはそのイベントを取得する

Alex がカスタムの予定表 (たとえば "子供のパーティー" など) を Adele と共有し、Adele が委任されたアクセス許可 (Calendars.Read または Calendars.ReadWrite) をアプリに与えている場合、アプリは以下に説明するように、Adele のメールボックスにある Alex の予定表のローカル コピーからイベントや予定表を取得できます。

  1. Adele としてサインインし、次のいずれかの要求を使用して、Adele がアクセスできるすべての予定表 (共有されたカスタムの予定表を含む) を取得します。

    GET https://graph.microsoft.com/v1.0/me/calendars
    GET https://graph.microsoft.com/v1.0/users/{Adele-userId | Adele-userPrincipalName}/calendars
    

    成功した応答には、応答コード HTTP 200 と、Adele がアクセスできる予定表のコレクションが含まれます。これには、応答の2 番目の予定表として所有者名が "Alex Wilber" である予定表 ("子供のパーティー") が含まれます。 共有受信者の Adele の場合、共有予定表の canShare プロパティは常に false です。

    HTTP/1.1 200 OK
    Content-type: application/json
    
    {
        "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('d3b9214b-dd8b-441d-b7dc-c446c9fa0e69')/calendars",
        "value": [
            {
                "id": "AQMkADU5NAAAJMjAAAAA==",
                "name": "Calendar",
                "color": "auto",
                "changeKey": "NDznl+Uh50WkanaCOKHkaQAAAAACXQ==",
                "canShare": true,
                "canViewPrivateItems": true,
                "canEdit": true,
                "owner": {
                    "name": "Adele Vance",
                    "address": "AdeleV@contoso.com"
                }
            },
            {
                "id": "AAMkADAABf0JlyAAA=",
                "name": "Kids parties",
                "color": "lightYellow",
                "changeKey": "NDznl+Uh50WkanaCOKHkaQAAYumJRQ==",
                "canShare": false,
                "canViewPrivateItems": false,
                "canEdit": false,
                "owner": {
                    "name": "Alex Wilber",
                    "address": "AlexW@contoso.com"
                }
            }
        ]
    }
    
  2. Adele としてサインインし、手順 1 の応答の 2 番目の予定表 ID を使用して、共有された予定表、または共有された予定表の 1 つ以上のイベントを取得します。 共有された予定表とそのイベントの ID は、Adele のメールボックスの Alex の予定表のローカル コピーに対応しています。

    GET https://graph.microsoft.com/v1.0/me/calendars/AAMkADAABf0JlyAAA=
    GET https://graph.microsoft.com/v1.0/users/{Adele-userId | Adele-userPrincipalName}/calendars/AAMkADAABf0JlyAAA=
    
    GET https://graph.microsoft.com/v1.0/me/calendars/AAMkADAABf0JlyAAA=/events/{id}
    GET https://graph.microsoft.com/v1.0/users/{Adele-userId | Adele-userPrincipalName}/calendars/AAMkADAABf0JlyAAA=/events/{id}
    
    GET https://graph.microsoft.com/v1.0/me/calendars/AAMkADAABf0JlyAAA=/events
    GET https://graph.microsoft.com/v1.0/users/{Adele-userId | Adele-userPrincipalName}/calendars/AAMkADAABf0JlyAAA=/events
    

正常に完了すると、HTTP 200 OK と、Alex が Adele と共有した要求されたイベント、イベント、または予定表が表示されます。