Outlook で予定表を共有または委任する

Outlook では、予定表の所有者が別のユーザーと予定表を共有できます。 所有者は、非公開でないイベントのうち表示可能にする情報を指定して、同じ組織内のユーザーに予定表への書き込みアクセス権限を付与できます。

また、所有者は、所有者のプライマリ予定表にある会議の管理を別のユーザーに委任することもできます。 デリゲートは、すべての情報を表示でき、プライベート以外のイベントへの書き込みアクセス権を持つ共有受信者です。 会議出席依頼と返信を受信することも、所有者の代理として会議出席依頼に応答することもできます。 さらに、所有者は予定表にある所有者の非公開イベントを表示するアクセス許可を代理人に明示的に付与することもできます。

予定表の共有または委任を有効にする前に、所有者は共有受信者を送信するか招待を委任し、共有受信者または代理人が招待を受け入れるか、共有または委任された予定表をアクセス用に明示的に追加します。 招待と共有または委任する予定表の追加は、Outlook クライアントで実施します。

Outlook で共有または委任をセットアップすると、アプリは共有および委任を管理するために Microsoft Graph API を使用できるようになります。

ここからは、次のシナリオ例に基づいて説明を続けます。

  • Alex Wilber は、自分のプライマリ予定表を Megan Bowen に委任しています。また、その予定表にある非公開イベントの表示を Megan に許可しています。
  • Alex は「子供たちのパーティー」予定表を Adele Vance および Megan Bowen と共有しています。また、「子供たちのパーティー」予定表のうち非公開でないイベントのすべての詳細項目と、非公開イベントの空き時間状態に対する read 権限を Adele と Megan の両方に付与しています。

この記事では、共有または委任した予定表について、次のタスクをプログラムで実行する方法について説明します。

アプリでは、一般公開されている API を使用して次の操作を実行することも可能です。

注:

このトピックで説明されている予定表の共有と委任のプロパティと API は、予定表のプロパティ isSharedisSharedWithMe を除いて、現在 v1.0 エンドポイントで使用できます。 これらの 2 つのプロパティは、ベータ エンドポイントでのみ公開されます。

共有の受信者と代理人に関する予定表情報を取得し、個々のアクセス許可を更新する

このセクションで説明する項目:

各予定表は calendarPermission オブジェクトのコレクションに関連付けられます。各オブジェクトには、共有の受信者または代理人と、予定表の所有者が設定した関連するアクセス許可が記述されています。 calendarRoleType 列挙型では、Microsoft Graph がサポートするアクセス許可の範囲を定義します。

  • none この値は、予定表に対するアクセス許可がない場合にのみ My Organization 適用されます。 アクセス許可を持つユーザーのみが予定表の calendarPermission オブジェクトに関連付けられるため、個別のユーザーは該当しません。
  • freeBusyRead 共有受信者は、所有者の空き時間情報の状態を表示できますが、予定表のその他の詳細は表示できません。
  • limitedRead 共有受信者は、所有者の空き時間情報の状態と、予定表のプライベート以外のイベントのタイトルと場所を表示できます。
  • read 共有受信者は、プライベート イベントの所有者の空き時間情報と、予定表上のプライベート以外のイベントのすべての詳細を表示できます。
  • write 共有受信者は、プライベート イベントで所有者の空き時間情報を表示したり、予定表のすべての詳細を表示したり、予定表のプライベート以外のイベントを編集 (作成、更新、または削除) したりできます。
  • delegateWithoutPrivateEventAccess: 代理人は、所有者の非公開イベントの空き時間状態を表示できます。また、予定表の非公開でないイベントへの write アクセス権を持ちます。
  • delegateWithPrivateEventAccess: 代理人は、所有者の非公開および非公開でないイベントの詳細項目を表示できます。また、予定表のすべてのイベントへの write アクセス権を持ちます。

ユーザーのプライマリ予定表は、常に、所有者と同じ組織内のユーザーを表す "自分の所属組織" と共有されます。 既定では、そうしたユーザーはその予定表にある所有者の空き時間状態の読み取りが可能で、freeBusyRead アクセス許可を持ちます。

予定表の所有者: 共有または委任の情報とアクセス許可を取得する

次の例は、Alex または管理者の同意の下に、Alex のプライマリ予定表に関連付けられた calendarPermission オブジェクトを取得する方法を示しています。 この要求により、そのような 2 つの permission オブジェクトが返されます。

  • 最初の calendarPermission オブジェクトは、代理人の Megan に割り当てられているもので、次のプロパティ値が設定されています。

    • isRemovable は true に設定されています (そのため、Alex は委任を取り消すオプションを選択できます)。
    • isInsideOrganization は true に設定されています (同じ組織内のユーザーのみが代理人になれるため)。
    • Megan の roledelegateWithPrivateEventAccess です (Alex による設定)。
    • allowedRoles には、委任をサポートするロールの種類 delegateWithoutPrivateEventAccessdelegateWithPrivateEventAccess が含まれています。
    • emailAddress は Megan を指定しています。
  • 2 番目の calendarPermission オブジェクトは、"自分の所属組織" に関連付けられている既定のオブジェクトであり、次のプロパティ値が設定されています。

    • isRemovable は false に設定されています (プライマリ予定表は、常に所有者の組織に関連付けられているため)。
    • isInsideOrganization は true です。
    • rolefreeBusyRead です ("自分の所属組織" の既定の設定)。
    • emailAddress は "自分の所属組織" として name プロパティを指定しています。既定では、"自分の所属組織" の address は Null になっています。

Microsoft Graph のアクセス許可

この操作には、必要に応じて、最も特権の少ない委任またはアプリケーションのアクセス許可 Calendars.Read を使用します。 詳細については、「予定表のアクセス許可」を参照してください。

GET https://graph.microsoft.com/beta/users/AlexW@contoso.com/calendar/calendarPermissions
HTTP/1.1 200 OK
Content-type: application/json

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#users('64339082-ed84-4b0b-b4ab-004ae54f3747')/calendar/calendarPermissions",
    "value": [
        {
            "id": "L289RXhjaGFuZ2VMYWJTWVnYW5C",
            "isRemovable": true,
            "isInsideOrganization": true,
            "role": "delegateWithPrivateEventAccess",
            "allowedRoles": [
                "freeBusyRead",
                "limitedRead",
                "read",
                "write",
                "delegateWithoutPrivateEventAccess",
                "delegateWithPrivateEventAccess"
            ],
            "emailAddress": {
                "name": "Megan Bowen",
                "address": "MeganB@contoso.com"
            }
        },
        {
            "id": "RGVmYXVsdA==",
            "isRemovable": false,
            "isInsideOrganization": true,
            "role": "freeBusyRead",
            "allowedRoles": [
                "none",
                "freeBusyRead",
                "limitedRead",
                "read",
                "write"
            ],
            "emailAddress": {
                "name": "My Organization"
            }
        }
    ]
}

予定表の所有者: 予定表の既存の共有受信者または代理人のアクセス許可を更新する

Alex または管理者の同意を得て、既存の共有受信者または代理人 ( ロール プロパティで指定) に割り当てられたアクセス許可を更新できます。その予定表の共有受信者または代理人に対して最初に設定された allowedRoles によって新しいアクセス許可がサポートされている限り、

ロール プロパティとは別に、既存の共有受信者または代理人の他のプロパティを更新することはできません。 emailAddress プロパティの値を変更するには、共有受信者または代理人を削除し、calendarPermission の新しいインスタンスをもう一度設定する必要があります。

このセクションの例では、 ロール プロパティを更新し、カスタム予定表 "キッズ パーティー" の既存の共有受信者 Adele のアクセス許可を から readwrite 変更します。

Microsoft Graph のアクセス許可

この操作には、必要に応じて、最も特権の少ない委任またはアプリケーションのアクセス許可 Calendars.ReadWrite を使用します。 詳細については、「予定表のアクセス許可」を参照してください。

PATCH https://graph.microsoft.com/beta/users/AlexW@contoso.com/calendars/AAMkADAwAABf02bAAAA=/calendarPermissions/L289RXhjaGFuZ2VMYWJQWRlbGVW
Content-type: application/json

{
  "role": "write"
}
HTTP/1.1 200 OK
Content-type: application/json

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#users('64339082-ed84-4b0b-b4ab-004ae54f3747')/calendars('AAMkADAwAABf02bAAAA%3D')/calendarPermissions/$entity",
    "id": "L289RXhjaGFuZ2VMYWJQWRlbGVW",
    "isRemovable": true,
    "isInsideOrganization": true,
    "role": "write",
    "allowedRoles": [
        "freeBusyRead",
        "limitedRead",
        "read",
        "write"
    ],
    "emailAddress": {
        "name": "Adele Vance",
        "address": "AdeleV@contoso.com"
    }
}

共有または委任した予定表のプロパティを取得する

このセクションで説明する項目:

この例で前述したように、Alex は自分のプライマリ予定表を委任して、代理人の Megan Bowen に非公開のマークが付いた予定表アイテムを表示する権限を付与しています。 このセクションでは、委任されている予定表のプロパティを示します。まず、所有者 Alex の立場から所有者の同意を得たときのプロパティを示し、その後で、代理人 Megan の立場から代理人の同意を得たときのプロパティを示します。 管理者からの同意があると、どちらの場合も正しい結果が得られます。

予定表の所有者: 共有または委任した予定表のプロパティを取得する

このセクションの例では、所有者 Alex の立場からプライマリ予定表のプロパティを取得します。

次のプロパティは Alex の立場である点に注意してください。

  • canShare は true です (Alex が所有者であるため)。
  • canViewPrivateItems は true です (Alex が所有者であるため)。
  • isShared は true に設定されています (この予定表の委任を Alex が設定したため)。
  • isSharedWithMe は、予定表の所有者に対して常に false になります。
  • owner は、所有者としての Alex を示しています。

Microsoft Graph のアクセス許可

この操作には、必要に応じて、最も特権の少ない委任またはアプリケーションのアクセス許可 Calendars.Read を使用します。 詳細については、「予定表のアクセス許可」を参照してください。

GET https://graph.microsoft.com/beta/users/AlexW@contoso.com/calendar
HTTP/1.1 200 OK
Content-type: application/json

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#users('64339082-ed84-4b0b-b4ab-004ae54f3747')/calendar/$entity",
    "id": "AQMkADAw7QAAAJfygAAAA==",
    "name": "Calendar",
    "color": "auto",
    "hexColor": "",
    "changeKey": "NEXywgsVrkeNsFsyVyRrtAAAAAACOg==",
    "canShare": true,
    "canViewPrivateItems": true,
    "isShared": true,
    "isSharedWithMe": false,
    "canEdit": true,
    "allowedOnlineMeetingProviders": [
        "teamsForBusiness"
    ],
    "defaultOnlineMeetingProvider": "teamsForBusiness",
    "isTallyingResponses": true,
    "isRemovable": false,
    "owner": {
        "name": "Alex Wilber",
        "address": "AlexW@contoso.com"
    }
}

受信者または代理人を共有する: 共有または委任された予定表のプロパティを取得する

このセクションの例では、同じ予定表のプロパティを代理人 Megan の立場から取得します。

次のプロパティに注意してください。

  • 予定表の name は、既定で所有者の表示名になります。 この場合、"Alex Wilber" になります (この予定表は、Megan に委任した Alex の予定表であるため)。
  • canShare は false です (Megan は、この予定表の所有者でないため)。
  • 代理人の Megan の場合、canViewPrivateItems は true になります (Alex が設定したため)。 代理人ではない共有相手の場合、このプロパティは常に false になります。
  • isShared は false です。 このプロパティは、予定表の所有者に対してのみ、予定表が共有または委任されているかどうかを示します。
  • isSharedWithMe プロパティは true です (Megan が代理人のため)。
  • canEdit は true です (Megan を含む代理人には書き込みアクセス権限があるため)。
  • owner は Alex に設定されています。

注:

共有相手または代理人は、共有または委任された予定表の name プロパティのみをカスタマイズできます。 その更新内容は自分にのみ表示されます。予定表所有者は、こうした予定表名の変更を確認できません。

Microsoft Graph のアクセス許可

この操作には、必要に応じて、最も特権の少ない委任されたアクセス許可 Calendars.Read.Shared またはアプリケーションのアクセス許可 Calendars.Read を使用します。 詳細については、「予定表のアクセス許可」を参照してください。

GET https://graph.microsoft.com/beta/users/meganb@contoso.com/calendars/AAMkADlAABhbftjAAA=
HTTP/1.1 200 OK
Content-type: application/json

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#users('meganb%40contoso.com')/calendars/$entity",
    "id": "AAMkADlAABhbftjAAA=",
    "name": "Alex Wilber",
    "color": "auto",
    "hexColor": "",
    "changeKey": "E6LznKWmX0KTsAD9qRJjeAAAYWo3EQ==",
    "canShare": false,
    "canViewPrivateItems": true,
    "isShared": false,
    "isSharedWithMe": true,
    "canEdit": true,
    "allowedOnlineMeetingProviders": [
        "teamsForBusiness"
    ],
    "defaultOnlineMeetingProvider": "teamsForBusiness",
    "isTallyingResponses": true,
    "isRemovable": true,
    "owner": {
        "name": "Alex Wilber",
        "address": "AlexW@contoso.com"
    }
}

会議出席依頼と返信を受信するためのメールボックス設定を取得または設定する

このセクションで説明する項目:

予定表所有者が選択する委任のレベルによって、所有者は予定表の会議を管理するために会議出席依頼と返信を受信するユーザーを指定できます。

プログラムによって、予定表所有者の mailboxSettingsdelegateMeetingMessageDeliveryOptions プロパティを取得または設定できます。このプロパティでは、Outlook で eventMessageRequest インスタンスと eventMessageResponse インスタンスを転送する相手を指定します。

  • sendToDelegateOnly

    Outlook は、eventMessageRequest インスタンスと eventMessageResponse インスタンスを代理人にのみ転送します。 これは、既定の設定です。 所有者は、委任した予定表の対応するイベントで会議に対する応答または招待状に対する返信を確認できます。

  • sendToDelegateAndInformationToPrincipal

    Outlook は、eventMessageRequest インスタンスと eventMessageResponse インスタンスを代理人と予定表の所有者に転送します。 会議出席依頼を承諾または辞退するオプションは、代理人にのみ表示されます。所有者への通知は、通常の電子メール メッセージのように表示されます。 委任した予定表のイベントを開いて返信することで、所有者が会議について応答することもできます。

  • sendToDelegateAndPrincipal

    Outlook は、eventMessageRequest インスタンスと eventMessageResponse インスタンスを代理人と予定表所有者に転送します。その両者が、会議出席依頼に返信できます。

これは、メールボックス規模の設定であるため、同じ設定がメールボックス所有者のすべての代理人に適用されます。

ユーザーのメールボックスの委任配信設定を取得する

このセクションの例では、予定表所有者の mailboxSettings を取得します。この所有者は、会議出席依頼と返信を予定表の代理人にのみ転送するように Outlook を設定しています (つまり、delegateMeetingMessageDeliveryOptionssendToDelegateOnly に設定されています)。

Microsoft Graph のアクセス許可

この操作には、必要に応じて、最も特権の少ない委任またはアプリケーションのアクセス許可 MailboxSettings.Read を使用します。 メールボックスのアクセス許可の詳細については、「メールのアクセス許可」を参照してください。

GET https://graph.microsoft.com/beta/users/AlexW@contoso.com/mailboxsettings
HTTP/1.1 200 OK
Content-type: application/json

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#users('64339082-ed84-4b0b-b4ab-004ae54f3747')/mailboxSettings",
    "archiveFolder": "AQMkADAwAGVQAAAKfowAAAA==",
    "timeZone": "Pacific Standard Time",
    "delegateMeetingMessageDeliveryOptions": "sendToDelegateOnly",
    "dateFormat": "M/d/yyyy",
    "timeFormat": "h:mm tt",
    "automaticRepliesSetting": {
        "status": "disabled",
        "externalAudience": "all",
        "internalReplyMessage": "",
        "externalReplyMessage": "",
        "scheduledStartDateTime": {
            "dateTime": "2019-12-24T05:00:00.0000000",
            "timeZone": "UTC"
        },
        "scheduledEndDateTime": {
            "dateTime": "2019-12-25T05:00:00.0000000",
            "timeZone": "UTC"
        }
    },
    "language": {
        "locale": "en-US",
        "displayName": "English (United States)"
    },
    "workingHours": {
        "daysOfWeek": [
            "monday",
            "tuesday",
            "wednesday",
            "thursday",
            "friday"
        ],
        "startTime": "08:00:00.0000000",
        "endTime": "17:00:00.0000000",
        "timeZone": {
            "name": "Pacific Standard Time"
        }
    }
}

ユーザーのメールボックスの委任配信設定を設定する

このセクションの例では、delegateMeetingMessageDeliveryOptions プロパティを sendToDelegateAndPrincipal に更新して、委任した予定表の会議出席依頼と返信がすべての代理人と所有者に転送されるように Outlook を設定します。

Microsoft Graph のアクセス許可

この操作には、必要に応じて、最も特権の少ない委任またはアプリケーションのアクセス許可 MailboxSettings.ReadWrite を使用します。 メールボックスのアクセス許可の詳細については、「メールのアクセス許可」を参照してください。

PATCH https://graph.microsoft.com/beta/users/AlexW@contoso.com/mailboxsettings
Content-type: application/json

{
  "delegateMeetingMessageDeliveryOptions": "sendToDelegateAndPrincipal"
}
HTTP/1.1 200 OK
Content-type: application/json

{
    "@odata.context": "https://graph.microsoft.com/beta/$metadata#users('64339082-ed84-4b0b-b4ab-004ae54f3747')/mailboxSettings",
    "delegateMeetingMessageDeliveryOptions": "sendToDelegateAndPrincipal"
}

予定表の共有相手または代理人を削除する

以下の例では、Alex が「子供たちのパーティー」予定表の共有相手としての Megan を削除します。

Microsoft Graph のアクセス許可

この操作には、必要に応じて、最も特権の少ない委任またはアプリケーションのアクセス許可 Calendars.ReadWrite を使用します。 詳細については、「予定表のアクセス許可」を参照してください。

DELETE https://graph.microsoft.com/beta/users/AlexW@contoso.com/calendars/AAMkADAwAABf02bAAAA=/calendarPermissions/L289RXhjaGFuZ2VMYWJTWVnYW5C
HTTP/1.1 204 No Content