outlook-calendar-automation について
outlook-calendar-automationは、Rube MCPとComposioのOutlookツールキットでOutlook Calendarを自動化するスキルです。予定の作成・検索・更新・削除に加え、参加者の空き時間も調べられます。
主な機能
- 01カレンダー予定の作成と更新
- 02予定の絞り込みと表示
- 03予定の削除と招待の辞退
- 04会議時間の検索
- 05スケジュールの空き状況確認
- 06オンライン会議の設定
活用シーン
- 01参加者を含む予定の登録
- 02期間や件名による予定検索
- 03会議の変更やキャンセル
- 04参加者間での会議時間の調整
MCP 対応
クライアントでRube MCPに接続し、最初にRUBE_SEARCH_TOOLSで最新のツールスキーマを取得します。ComposioのOutlookツールキットを通じて、カレンダー予定やスケジュールを操作します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ composiohq/ awesome-claude-skills --skill outlook-calendar-automationインストール後、Claude Code で/outlook-calendar-automationを入力して読み込まれたか確認します。
詳細
Rube MCP による Outlook カレンダーの自動化
Rube MCP を通じて Composio の Outlook ツールキットを利用し、Outlook カレンダーの操作を自動化します。
ツールキットのドキュメント:composio.dev/toolkits/outlook
前提条件
- Rube MCP が接続されていること(
RUBE_SEARCH_TOOLSを利用可能であること) outlookツールキットを指定したRUBE_MANAGE_CONNECTIONSによる Outlook 接続が有効であること- 現在のツールスキーマを取得するため、必ず最初に
RUBE_SEARCH_TOOLSを呼び出してください
セットアップ
Rube MCP を入手する:クライアント設定で https://rube.app/mcp を MCP サーバーとして追加します。API キーは不要です。エンドポイントを追加するだけで動作します。
RUBE_SEARCH_TOOLSが応答することを確認し、Rube MCP が利用可能であることを確かめます- ツールキット
outlookを指定してRUBE_MANAGE_CONNECTIONSを呼び出します - 接続が ACTIVE でない場合は、返された認証リンクに従って Microsoft OAuth を完了します
- ワークフローを実行する前に、接続ステータスが ACTIVE であることを確認します
主なワークフロー
1. カレンダーイベントの作成
使用する場合:Outlook カレンダーに新しいイベントを登録したいとき
ツールの順序:
OUTLOOK_LIST_CALENDARS- 利用可能なカレンダーを一覧表示します[任意]OUTLOOK_CALENDAR_CREATE_EVENT- イベントを作成します[必須]
主なパラメーター:
subject:イベントのタイトルstart_datetime:開始時刻(ISO 8601 形式。例:'2025-01-03T10:00:00')end_datetime:終了時刻(ISO 8601 形式。開始時刻より後である必要があります)time_zone:IANA または Windows のタイムゾーン(例:'America/New_York'、'Pacific Standard Time')attendees_info:メールアドレス文字列または出席者オブジェクトの配列body:イベントの説明(プレーンテキストまたは HTML)is_html:本文に HTML が含まれる場合は true に設定しますlocation:物理的な場所を示す文字列is_online_meeting:Teams 会議のリンクを設定する場合は true にしますonline_meeting_provider:Teams 連携の場合は 'teamsForBusiness'show_as:'free'、'tentative'、'busy'、'oof'
注意点:
- start_datetime は end_datetime よりも時系列で前である必要があります
- time_zone は必須で、有効な IANA または Windows のタイムゾーン名を指定する必要があります
- 出席者を追加すると、招待メールが直ちに送信される場合があります
- Teams 会議のリンクを生成するには、is_online_meeting=true と online_meeting_provider='teamsForBusiness' の両方を設定します
- user_id のデフォルトは 'me' です。他のユーザーのカレンダーには、メールアドレスまたは UUID を使用します
2. イベントの一覧表示と検索
使用する場合:自分のカレンダーにあるイベントを見つけたいとき
ツールの順序:
OUTLOOK_GET_MAILBOX_SETTINGS- 正確なクエリのためにユーザーのタイムゾーンを取得します[前提条件]OUTLOOK_LIST_EVENTS- フィルターを使用してイベントを検索します[必須]OUTLOOK_GET_EVENT- 特定のイベントの詳細を取得します[任意]OUTLOOK_GET_CALENDAR_VIEW- 指定した期間中に有効なイベントを取得します[代替手段]
主なパラメーター:
filter:OData フィルター文字列(例:"start/dateTime ge '2024-07-01T00:00:00Z'")select:返すプロパティの配列orderby:並べ替え条件(例:['start/dateTime desc'])top:ページあたりの結果数(1~999)timezone:結果の表示に使用するタイムゾーンstart_datetime/end_datetime:CALENDAR_VIEW の期間指定用(末尾に Z を付けた UTC)
注意点:
- OData フィルターの日時値には、シングルクォートと Z サフィックスが必要です
- イベントの開始時刻をフィルターするには 'start/dateTime' を使用します。メール用の 'receivedDateTime' は使用しないでください
- 'createdDateTime' は orderby/select では使用できますが、フィルタリングには使用できません
- ページネーションでは、すべてのページを取得するまで @odata.nextLink をたどります
- 「今日のカレンダーの予定は?」というクエリには CALENDAR_VIEW の方が適しています(期間をまたぐイベントも含まれます)
- キーワードやカテゴリでのフィルタリングには LIST_EVENTS の方が適しています
- レスポンスのイベントでは、開始時刻と終了時刻がそれぞれ start.dateTime と end.dateTime にネストされています
3. イベントの更新
使用するタイミング:ユーザーが既存のカレンダーイベントの変更を希望する場合
ツールの順序:
OUTLOOK_LIST_EVENTS- 更新するイベントを検索します[前提条件]OUTLOOK_UPDATE_CALENDAR_EVENT- イベントを更新します[必須]
主なパラメーター:
event_id:イベントの一意の識別子(LIST_EVENTS から取得)subject:新しいイベントタイトル(任意)start_datetime/end_datetime:新しい日時(任意)time_zone:新しい日時のタイムゾーンattendees:更新後の出席者リスト(指定すると既存のリストを置き換えます)body:contentType と content を含む更新後の説明location:更新後の場所
注意点:
- UPDATE は指定されたフィールドを既存のイベントに統合します。指定されていないフィールドは保持されます
- attendees を指定すると、出席者リスト全体が置き換えられます。希望する出席者をすべて含めてください
- categories を指定すると、カテゴリリスト全体が置き換えられます
- 日時を更新すると、出席者に招待が再送信される場合があります
- event_id は必須です。先に LIST_EVENTS から取得してください
4. イベントの削除と招待の辞退
使用するタイミング:ユーザーがイベントの削除または会議への招待の辞退を希望する場合
ツールの順序:
OUTLOOK_DELETE_EVENT- イベントを削除します[任意]OUTLOOK_DECLINE_EVENT- 会議への招待を辞退します[任意]
主なパラメーター:
event_id:削除または辞退するイベントsend_notifications:出席者にキャンセル通知を送信します(デフォルトは true)comment:辞退の理由(DECLINE_EVENT 用)proposedNewTime:辞退時に代替日時を提案します
注意点:
- send_notifications=true で削除すると、キャンセルメールが送信されます
- 辞退時には、ISO 8601 形式の開始日時と終了日時を指定して、新しい日時を提案できます
- 定期イベントのマスターを削除すると、すべての予定が削除されます
- DECLINE_EVENT の sendResponse は、主催者に通知するかどうかを制御します
5. 会議の空き時間を検索
使用するタイミング:ユーザーが複数の人にとって最適な会議時間枠を検索したい場合
ツールの順序:
OUTLOOK_FIND_MEETING_TIMES- 会議時間の候補を取得します[必須]OUTLOOK_GET_SCHEDULE- 特定の人の空き時間/予定ありを確認します[代替手段]
主なパラメーター:
attendees:メールアドレスと種類を含む出席者オブジェクトの配列meetingDuration:ISO 8601 形式の期間(例:1 時間は 'PT1H'、30 分は 'PT30M')timeConstraint:検索する時間枠minimumAttendeePercentage:最低信頼度しきい値(0~100)Schedules:GET_SCHEDULE 用のメールアドレス配列StartTime/EndTime:予定を検索する時間帯(最大 62 日間)
注意点:
- FIND_MEETING_TIMES はデフォルトで勤務時間内を検索します。24 時間対応にするには activityDomain='unrestricted' を使用してください
- 時間制約の時間枠では、開始と終了の両方に dateTime と timeZone が必要です
- GET_SCHEDULE の期間は 62 日を超えられません
- 会議の候補は出席者の空き状況を考慮しますが、複雑なグループでは最適でない時間が返される場合があります
一般的なパターン
イベント ID の解決
1. Call OUTLOOK_LIST_EVENTS with time-bound filter
2. Find target event by subject or other criteria
3. Extract event id (e.g., 'AAMkAGI2TAAA=')
4. Use in UPDATE, DELETE, or GET_EVENT calls
カレンダー用の OData フィルター構文
時間範囲フィルター:
filter: "start/dateTime ge '2024-07-01T00:00:00Z' and start/dateTime le '2024-07-31T23:59:59Z'"
件名に次の文字列を含む場合:
filter: "contains(subject, 'Project Review')"
複合条件:
filter: "contains(subject, 'Review') and categories/any(c:c eq 'Work')"
タイムゾーンの処理
- ユーザーのタイムゾーンを取得します:select=['timeZone'] を指定して
OUTLOOK_GET_MAILBOX_SETTINGSを使用します - フィルターの日時値には一貫したタイムゾーンを使用します
- Calendar View では、Z 接尾辞付きの UTC タイムスタンプが必要です
- LIST_EVENTS のフィルターでは、日時値にタイムゾーンを指定できます
オンライン会議の作成
1. Set is_online_meeting: true
2. Set online_meeting_provider: 'teamsForBusiness'
3. Create event with OUTLOOK_CALENDAR_CREATE_EVENT
4. Teams join link available in response onlineMeeting field
5. Or retrieve via OUTLOOK_GET_EVENT for the full join URL
既知の落とし穴
DateTime の形式:
- ISO 8601 形式が必要です:'2025-01-03T10:00:00'
- カレンダービューでは Z を付けた UTC が必要です:'2025-01-03T10:00:00Z'
- フィルター値は単一引用符で囲む必要があります:" '2025-01-03T00:00:00Z' "
- タイムゾーンの不一致によりイベントの境界時刻がずれるため、まずユーザーのタイムゾーンを必ず確認してください
OData フィルターエラー:
- 400 Bad Request は通常、フィルター構文に問題があることを示します
- すべてのイベントプロパティがフィルターに対応しているわけではありません(createdDateTime は非対応です)
- 400 エラーが発生した場合は、構文や境界値を調整して再試行してください
- 有効なフィルターフィールド:start/dateTime、end/dateTime、subject、categories、isAllDay
参加者の管理:
- 参加者を追加すると招待メールが送信されます
- 参加者を更新するとリスト全体が置き換えられるため、追加したい参加者をすべて含めてください
- 参加者の種類:'required'、'optional'、'resource'
- カレンダーの委任設定は、アクセスできるカレンダーに影響します
レスポンスの構造:
- イベントは response.data.value にネストされています
- イベントの時刻は event.start.dateTime および event.end.dateTime にあります
- カレンダービューは data.results[i].response.data.value にネストされている場合があります
- ネストの深さが異なる場合に備え、フォールバックを使用して慎重に解析してください
クイックリファレンス
| タスク | ツールスラッグ | 主なパラメーター |
|---|---|---|
| イベントを作成 | OUTLOOK_CALENDAR_CREATE_EVENT | subject, start_datetime, end_datetime, time_zone |
| イベントを一覧表示 | OUTLOOK_LIST_EVENTS | filter, select, top, timezone |
| イベントの詳細を取得 | OUTLOOK_GET_EVENT | event_id |
| カレンダービュー | OUTLOOK_GET_CALENDAR_VIEW | start_datetime, end_datetime |
| イベントを更新 | OUTLOOK_UPDATE_CALENDAR_EVENT | event_id, subject, start_datetime |
| イベントを削除 | OUTLOOK_DELETE_EVENT | event_id, send_notifications |
| イベントを辞退 | OUTLOOK_DECLINE_EVENT | event_id, comment |
| 会議の時間を検索 | OUTLOOK_FIND_MEETING_TIMES | attendees, meetingDuration |
| スケジュールを取得 | OUTLOOK_GET_SCHEDULE | Schedules, StartTime, EndTime |
| カレンダーを一覧表示 | OUTLOOK_LIST_CALENDARS | user_id |
| メールボックスの設定 | OUTLOOK_GET_MAILBOX_SETTINGS | select |
Composio を利用