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

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

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

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

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

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

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

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

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

注:

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

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

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

各予定表は、 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 の role は delegateWithPrivateEventAccess です (Alex による設定)。
    • allowedRoles には、委任をサポートするロールの種類 delegateWithoutPrivateEventAccess と delegateWithPrivateEventAccess が含まれています。
    • emailAddress は Megan を指定しています。
  • 2 番目の calendarPermission オブジェクトは、"自分の所属組織" に関連付けられている既定のオブジェクトであり、次のプロパティ値が設定されています。

    • isRemovable は false に設定されています (プライマリ予定表は、常に所有者の組織に関連付けられているため)。
    • isInsideOrganization は true です。
    • role は freeBusyRead です ("自分の所属組織" の既定の設定)。
    • 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"
            }
        }
    ]
}

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

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

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

このセクションの例では、 ロール プロパティを更新し、既存の共有受信者である Adele のカスタム カレンダー "キッズ パーティー" に対するアクセス許可を read から write に変更します。

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 の予定表であるため)。
  • Megan はこの予定表の所有者ではないため、canShare は false です。
  • 代理人の 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"
    }
}

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

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

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

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

  • sendToDelegateOnly

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

  • sendToDelegateAndInformationToPrincipal

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

  • sendToDelegateAndPrincipal

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

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

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

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

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