0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Googleカレンダーの繰り返しイベントの仕様を確認する

Posted at

はじめに

表題通り、Googleカレンダーの繰り返しイベントの仕様を確認していきます。
実際にカレンダーにデータを導入して、動かしながら確認します。

事前準備

今回は、Google CalendarのEventListを動かします。その際にGoogle Calendar API Explorerを利用すると面倒な処理なしでレスポンスの結果が確認できます。

image.png
上の図の赤枠のAPIのボタンを押します。

image.png
Executeボタンを押すと、結果が返却されます。

image.png
Googleの認証が走ります

image.png
→実際にResponseのデータが返却されます

Hands-on

毎週月曜日のイベントを設定しました。

image.png

→関係のある箇所だけ抜粋します。繰り返し予約に関係あるのは、itemsのみです。

{
  ....// 省略。
  "items": [
    {
      "id": "4h4t3culk1t1dk3q7mmaoa8gm8_20250609T010000Z",
      "summary": "繰り返しのイベント",
      "start": {
        "dateTime": "2025-06-09T10:00:00+09:00"
      },
      "end": {
        "dateTime": "2025-06-09T10:30:00+09:00"
      },
      "recurringEventId": "4h4t3culk1t1dk3q7mmaoa8gm8",
      "originalStartTime": {
        "dateTime": "2025-06-09T10:00:00+09:00"
      }
    },
    {
      "id": "4h4t3culk1t1dk3q7mmaoa8gm8_20250616T010000Z",
      "summary": "繰り返しのイベント",
      "start": {
        "dateTime": "2025-06-16T10:00:00+09:00"
      },
      "end": {
        "dateTime": "2025-06-16T10:30:00+09:00"
      },
      "recurringEventId": "4h4t3culk1t1dk3q7mmaoa8gm8",
      "originalStartTime": {
        "dateTime": "2025-06-16T10:00:00+09:00"
      }
    },
    {
      "id": "4h4t3culk1t1dk3q7mmaoa8gm8_20250623T010000Z",
      "summary": "繰り返しのイベント",
      "start": {
        "dateTime": "2025-06-23T10:00:00+09:00"
      },
      "end": {
        "dateTime": "2025-06-23T10:30:00+09:00"
      },
      "recurringEventId": "4h4t3culk1t1dk3q7mmaoa8gm8",
      "originalStartTime": {
        "dateTime": "2025-06-23T10:00:00+09:00"
      }
    }
  ]
}

単発のイベントを追加。

繰り返しイベントと単発イベントの比較を実施する。

image.png

{
	"items": [
		{
			"summary": "繰り返しのイベント",
			"start": {
				"dateTime": "2025-06-09T10:00:00+09:00",
				"timeZone": "Asia/Tokyo"
			},
			"end": {
				"dateTime": "2025-06-09T10:30:00+09:00",
				"timeZone": "Asia/Tokyo"
			},
			"recurringEventId": "4h4t3culk1t1dk3q7mmaoa8gm8",
			"originalStartTime": {
				"dateTime": "2025-06-09T10:00:00+09:00",
				"timeZone": "Asia/Tokyo"
			},
			"eventType": "default"
		},
		{
			"summary": "繰り返しのイベント",
			"start": {
				"dateTime": "2025-06-16T10:00:00+09:00",
				"timeZone": "Asia/Tokyo"
			},
			"end": {
				"dateTime": "2025-06-16T10:30:00+09:00",
				"timeZone": "Asia/Tokyo"
			},
			"recurringEventId": "4h4t3culk1t1dk3q7mmaoa8gm8",
			"originalStartTime": {
				"dateTime": "2025-06-16T10:00:00+09:00",
				"timeZone": "Asia/Tokyo"
			},
			"eventType": "default"
		},
		{
			"summary": "繰り返しのイベント",
			"start": {
				"dateTime": "2025-06-23T10:00:00+09:00",
				"timeZone": "Asia/Tokyo"
			},
			"end": {
				"dateTime": "2025-06-23T10:30:00+09:00",
				"timeZone": "Asia/Tokyo"
			},
			"recurringEventId": "4h4t3culk1t1dk3q7mmaoa8gm8",
			"originalStartTime": {
				"dateTime": "2025-06-23T10:00:00+09:00",
				"timeZone": "Asia/Tokyo"
			},
			"eventType": "default"
		},
		{
			"summary": "単発のイベント",
			"start": {
				"date": "2025-06-10"
			},
			"end": {
				"date": "2025-06-11"
			},
			"eventType": "default"
		}
	]
}

単発のイベントの場合は、recurringEventIdがないんですね。

繰り返し予約のイベントの変更(単発の変更)

毎週月曜日の繰り返し予約のイベントの中で、6月16日を6月17日に変更。わかりやすいように名称も変更している

image.png

{
  "items": [
    {
      "summary": "単発のイベント",
      "start": {
        "date": "2025-06-10"
      },
      "end": {
        "date": "2025-06-11"
      },
      "eventType": "default"
    },
    {
      "summary": "繰り返しのイベント",
      "start": {
        "dateTime": "2025-06-09T10:00:00+09:00",
        "timeZone": "Asia/Tokyo"
      },
      "end": {
        "dateTime": "2025-06-09T10:30:00+09:00",
        "timeZone": "Asia/Tokyo"
      },
      "recurringEventId": "4h4t3culk1t1dk3q7mmaoa8gm8",
      "originalStartTime": {
        "dateTime": "2025-06-09T10:00:00+09:00",
        "timeZone": "Asia/Tokyo"
      },
      "eventType": "default"
    },
    {
      "summary": "繰り返しのイベント",
      "start": {
        "dateTime": "2025-06-23T10:00:00+09:00",
        "timeZone": "Asia/Tokyo"
      },
      "end": {
        "dateTime": "2025-06-23T10:30:00+09:00",
        "timeZone": "Asia/Tokyo"
      },
      "recurringEventId": "4h4t3culk1t1dk3q7mmaoa8gm8",
      "originalStartTime": {
        "dateTime": "2025-06-23T10:00:00+09:00",
        "timeZone": "Asia/Tokyo"
      },
      "eventType": "default"
    },
    {
      "summary": "予定変更:繰り返しのイベント",
      "start": {
        "dateTime": "2025-06-17T10:00:00+09:00",
        "timeZone": "Asia/Tokyo"
      },
      "end": {
        "dateTime": "2025-06-17T10:30:00+09:00",
        "timeZone": "Asia/Tokyo"
      },
      "recurringEventId": "4h4t3culk1t1dk3q7mmaoa8gm8",
      "originalStartTime": {
        "dateTime": "2025-06-16T10:00:00+09:00",
        "timeZone": "Asia/Tokyo"
      },
      "eventType": "default"
    }
  ]
}

recurringEventIdは元々のやつと一致しています。

繰り返し予約のイベントの変更(これ以降のすべての予定)

繰り返しイベントの中で、いついつ以降の繰り返しイベントのルールを変更する。
image.png


{
  "items": [
    {
      "summary": "単発のイベント",
      "start": {
        "date": "2025-06-10"
      },
      "end": {
        "date": "2025-06-11"
      },
      "eventType": "default"
    },
    {
      "summary": "繰り返しのイベント",
      "start": {
        "dateTime": "2025-06-09T10:00:00+09:00",
        "timeZone": "Asia/Tokyo"
      },
      "end": {
        "dateTime": "2025-06-09T10:30:00+09:00",
        "timeZone": "Asia/Tokyo"
      },
      "recurringEventId": "4h4t3culk1t1dk3q7mmaoa8gm8",
      "originalStartTime": {
        "dateTime": "2025-06-09T10:00:00+09:00",
        "timeZone": "Asia/Tokyo"
      },
      "eventType": "default"
    },
    {
      "summary": "予定変更:繰り返しのイベント",
      "start": {
        "dateTime": "2025-06-17T10:00:00+09:00",
        "timeZone": "Asia/Tokyo"
      },
      "end": {
        "dateTime": "2025-06-17T10:30:00+09:00",
        "timeZone": "Asia/Tokyo"
      },
      "recurringEventId": "4h4t3culk1t1dk3q7mmaoa8gm8",
      "originalStartTime": {
        "dateTime": "2025-06-16T10:00:00+09:00",
        "timeZone": "Asia/Tokyo"
      },
      "eventType": "default"
    },
    {
      "summary": "繰り返しのイベント",
      "start": {
        "dateTime": "2025-06-25T10:00:00+09:00",
        "timeZone": "Asia/Tokyo"
      },
      "end": {
        "dateTime": "2025-06-25T10:30:00+09:00",
        "timeZone": "Asia/Tokyo"
      },
      "recurringEventId": "9b15hqr7q9ofe8l5emucimhu6l",
      "originalStartTime": {
        "dateTime": "2025-06-25T10:00:00+09:00",
        "timeZone": "Asia/Tokyo"
      },
      "eventType": "default"
    }
  ]
}

→ここで注目なのが、recurringEventIdが元のイベントから切り替わっていますね。繰り返しイベントの中で繰り返しイベントを作成すると、それは元のイベントからは切り離されるのですかね??🤔

→singleEventsをfalseにしてみてみます。

{
  "items": [
    {
      "summary": "単発のイベント",
      "start": {
        "date": "2025-06-10"
      },
      "end": {
        "date": "2025-06-11"
      },
      "eventType": "default"
    },
    {
      "summary": "繰り返しのイベント",
      "start": {
        "dateTime": "2025-06-09T10:00:00+09:00",
        "timeZone": "Asia/Tokyo"
      },
      "end": {
        "dateTime": "2025-06-09T10:30:00+09:00",
        "timeZone": "Asia/Tokyo"
      },
      "recurrence": [
        "RRULE:FREQ=WEEKLY;UNTIL=20250622T145959Z;BYDAY=MO"
      ],
      "eventType": "default"
    },
    {
      "summary": "予定変更:繰り返しのイベント",
      "start": {
        "dateTime": "2025-06-17T10:00:00+09:00",
        "timeZone": "Asia/Tokyo"
      },
      "end": {
        "dateTime": "2025-06-17T10:30:00+09:00",
        "timeZone": "Asia/Tokyo"
      },
      "recurringEventId": "4h4t3culk1t1dk3q7mmaoa8gm8",
      "originalStartTime": {
        "dateTime": "2025-06-16T10:00:00+09:00",
        "timeZone": "Asia/Tokyo"
      },
      "eventType": "default"
    },
    {
      "summary": "繰り返しのイベント",
      "start": {
        "dateTime": "2025-06-25T10:00:00+09:00",
        "timeZone": "Asia/Tokyo"
      },
      "end": {
        "dateTime": "2025-06-25T10:30:00+09:00",
        "timeZone": "Asia/Tokyo"
      },
      "recurrence": [
        "RRULE:FREQ=WEEKLY;BYDAY=WE"
      ],
      "eventType": "default"
    }
  ]
}

→確かに、マスターのイベントが切り替わっていますね。
これはすごく面白いですね。
"RRULE:FREQ=WEEKLY;UNTIL=20250622T145959Z;BYDAY=MO"になっています。
これ以降の予定は変更するって事を入れた事で、UNTILを含めて制御しているんですね。納得。
ちなみに、最初の繰り返しを消すとどうなるのかみてみましょう。

google_calendar.gif
→元の繰り返し予約のイベントを削除した場合でも、派生先の繰り返しイベントは削除されません。
RRULEが切り替わったことで、元のイベントと派生元のイベントは切り離して考えているようですね。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?