AI活用

Google カレンダー 繰り返し 設定で「第1月曜の前日」を入れる方法|RRULEで書きにくい日はRDATEで並べる【2026年】

編集責任者佐藤翔太株式会社UrakaTA 代表取締役記事はAIが社内の記録から下書きし、別のAIが公式情報で照合、公開後に編集責任者が確認しています。
日付の欄に黄色の印が飛び飛びに付いた大きな壁のカレンダーと時計の前で、夕方の部屋でごみ袋をまとめる人物と、ノートPCのロボットのアシスタントが印を付けていくイラスト
イラスト:AIで作成

この記事の結論

「第1・3月曜の前日」のような繰り返しは、RRULEをやめて実際の日付をRDATEで並べました。2026年8月21日、ごみ出し準備の予定6件をClaudeでGoogle カレンダーに登録し、月ごとの3件は2036年12月分まで入れています。

目次9項目
  1. Google カレンダーの繰り返し設定は「第◯曜日の前日」を素直には書けない
  2. 2026年8月21日、ごみ出し準備の予定6件をClaudeに登録させた
  3. 毎週の3件は RRULE の終わりのない繰り返しで済んだ
  4. 月ごとの3件は月をまたぐ:第1・3日曜で代用すると年1〜2回ずれる
  5. RDATE で実際の日付を並べた:RRULE・RDATE・EXDATE の違い
  6. Claude Code から Google カレンダー MCP で登録したときに起きたこと
  7. RDATE 方式の弱点:2036年12月で切れるので延長が要る
  8. まとめ
  9. よくある質問

【無料・メールだけ】Claude Code 2daysセミナー(第二の脳構築講座)の次回開催の案内を受け取る →

Google カレンダーの繰り返しで「第1・3月曜の前日」を入れるとき、僕に必要だったのはRRULEの工夫ではなく、実際の日付をRDATEで並べることでした。毎週の予定はRRULEの終わりのない繰り返しに任せ、月をまたぐことがある予定だけを日付の一覧にして、Claudeに登録させています。

2026年8月21日、地域のごみ収集日の看板をもとに、前の夜の準備予定6件をClaudeに登録させました。毎週の3件はRRULE、月ごとの3件はRDATEで2036年12月分まで並べてあります。

RRULEで書けなかった理由、RDATEとEXDATEの違い、登録で起きたこと、約10年後の延長まで書きます。「第2・第4火曜の前日」のような予定、どう入れればいいの?と迷う方への記録です。

Google カレンダーの繰り返し設定は「第◯曜日の前日」を素直には書けない

「第1月曜」は書けても「第1月曜の前日」をそのまま表す書き方は、繰り返しのルールにありません。前日は月をまたぐことがあるためです。

Google カレンダーの API では、予定の繰り返しを recurrence という欄に書きます。中身は RFC 5545(予定表のデータの国際的な決まり)の RRULE・RDATE・EXDATE の行です。

開発者向け文書には、この欄に DTSTART と DTEND の行は書けないとあり、開始と終了は別の欄で指定します。

ここでいうRRULEとは、「毎週月曜」「毎月第1月曜」のような規則で回を作る行です。RFC 5545 では、曜日の前に数字を付けた 1MO が「その月の第1月曜」、-1MO が「その月の最後の月曜」を表します。

ただ、曜日の指定は「その月の中で何番目か」を数えるだけで、「ある日の1日前」という指定はありません。第1月曜が1日の月は、前日が前の月の末日になります。数え方の単位である「月」の外に出てしまうのです。

画面での設定について、公式ヘルプに書かれている手順は「繰り返さない」の横の矢印から、繰り返しの間隔と終了日を選んで保存する流れです。繰り返しの予定は730回までという上限も書かれています。

「第◯曜日の前日」を選べるかどうかの記載は、僕は見つけられませんでした。

2026年8月21日、ごみ出し準備の予定6件をClaudeに登録させた

登録したのは、ごみの収集日の前の夜、18時から18時30分の準備の予定です。2026年8月21日に6件を作り、全件にもう1人を招待しました。

日付・件数・時刻は、どれも僕の会社の作業の記録に残っています。

看板の決まりでは、前の夜に外へ出すのは不可で、当日の朝までに出します。そこで夜の枠は「家の中でまとめる準備用」とし、そのことを予定の説明欄に書かせました。

6件の内訳は、毎週の予定が3件、月ごとの予定が3件です。何を何曜日の夜に準備するかを表に並べます。

準備する夜ごみの種類収集日登録の方法
毎週月曜一般ごみ・有害ごみ火曜RRULE(終わりなし)
毎週木曜一般ごみ・有害ごみ金曜RRULE(終わりなし)
毎週火曜プラスチック製容器包装水曜RRULE(終わりなし)
第1・3月曜の前の日曜びん・かん・金属類第1・3月曜RDATE(2036年12月分まで)
第2・4火曜の前の月曜紙類第2・4火曜RDATE(2036年12月分まで)
第2・4月曜の前の日曜ペットボトル・繊維類第2・4月曜RDATE(2036年12月分まで)

毎週の3件と月ごとの3件で、登録の方法を分けたのが要点です。毎週の方は一度入れれば手入れが要らず、月ごとの方は期限が来る前に日付を足す必要があります。

毎週の3件は RRULE の終わりのない繰り返しで済んだ

毎週の3件は、RRULEに曜日を書くだけで済みました。回数(COUNT)も終了日(UNTIL)も書かなければ、予定は終わりなく続きます。

Google の開発者向け文書には、繰り返しの終わりは COUNT か UNTIL のどちらかで指定すると書かれています。どちらも書かない形が、手入れの要らない予定です。

毎週火曜の朝の収集なら、月曜の夜の予定を次の形で作ります(日付は例です)。

{
  "summary": "ごみ出しの準備(一般ごみ)",
  "start": { "dateTime": "2030-01-07T18:00:00", "timeZone": "Asia/Tokyo" },
  "end":   { "dateTime": "2030-01-07T18:30:00", "timeZone": "Asia/Tokyo" },
  "recurrence": ["RRULE:FREQ=WEEKLY;BYDAY=MO"]
}

繰り返しの予定では、timeZone の欄が必須です。開発者向け文書では、どの時間帯の暦で回を展開するかを決める欄とされています。時刻つきの予定は、ここを Asia/Tokyo にしておけば日本の暦で回ります。

月ごとの3件は月をまたぐ:第1・3日曜で代用すると年1〜2回ずれる

月ごとの3件は、RRULEで素直に書けませんでした。「第1・3月曜の前日」を「第1・3日曜」で代用すると、年に1〜2回ずれるからです。

ずれるのは、1日が月曜の月です。例えば2030年4月は1日が月曜で、第1月曜の前日は3月31日になります。「4月の第1日曜」は4月7日なので、代用した予定は収集日の6日後に入ってしまいます。

第2・4の収集日は月をまたぎません。第2月曜は早くても8日なので、前日は同じ月の中です。それでも「第2・4日曜」とは一致しない月があります。1日が月曜の月は、第2月曜の前日が第1日曜になるからです。

僕の会社では、年1〜2回ずれる近似をやめて、実際の日付を並べると決めました。

なお RFC 5545 の表を読むと、理屈の上では1本のRRULEで書ける形もあります。月の中の日(BYMONTHDAY)で候補の日を広げ、曜日(BYDAY)で日曜に絞る組み合わせです。

RFC の表では、月ごとの繰り返しで両方を書くと、曜日の指定は「絞り込み」として働きます。

RRULE:FREQ=MONTHLY;BYDAY=SU;BYMONTHDAY=1,2,3,4,5,6,14,15,16,17,18,19,20,-1

1〜6日の日曜は第1月曜の前日、14〜20日の日曜は第3月曜の前日です。-1 は月の最後の日で、そこが日曜なら翌月1日の第1月曜の前日に当たります。

ただ、このルールを Google カレンダーに登録して確かめてはいません。読んで意味をつかみにくい形でもあるので、僕は日付を並べる今の形で十分だと考えています。

RDATE で実際の日付を並べた:RRULE・RDATE・EXDATE の違い

月ごとの3件は、RDATEに実際の日付を並べて登録しました。RRULEを書かず、日付の一覧だけで繰り返しの予定を作る形です。

RDATEとは、規則ではなく日付そのもので回を足す行です。Google の開発者向け文書では、回の全体は「RRULEとRDATEで作った回を合わせ、EXDATEで外したものを除いたもの」と説明されています。

RFC 5545 でも同じ考え方で、重なった回は1つに数えます。

3つの行の違いを並べます。

行何を書くか向く予定手入れ
RRULE規則(毎週月曜・毎月第1月曜など)規則どおりに回る予定終わりなしなら不要
RDATE日付そのものの一覧規則で書きにくい予定・飛び飛びの予定一覧の最後の日付の前に足す
EXDATE外す日付休みの回を除く外す日が出るたび

規則で書けるならRRULE、書きにくい予定はRDATE、例外はEXDATEと分けるのが分かりやすいと考えています。EXDATEは、規則が作った回を指す必要があると開発者向け文書にあります。

日付の一覧は、手で打たずに計算で作らせました。記録にある作り方は「第N曜日の前日の18時を python3 で作り、RDATEに入れる」です。考え方を例のコードにすると、次の形になります(年の範囲と時刻は例です)。

from datetime import date, timedelta

def nth_weekday(year, month, weekday, n):
    d = date(year, month, 1)
    d += timedelta(days=(weekday - d.weekday()) % 7)
    return d + timedelta(weeks=n - 1)

dates = []
for y in range(2030, 2032):
    for m in range(1, 13):
        for n in (1, 3):  # 第1・第3
            eve = nth_weekday(y, m, 0, n) - timedelta(days=1)  # 0=月曜の前日
            dates.append(eve.strftime("%Y%m%dT180000"))

print("RDATE;TZID=Asia/Tokyo:" + ",".join(dates))

出てくる行は RDATE;TZID=Asia/Tokyo:20300106T180000,20300120T180000,20300203T180000,... の形です。2030年4月の第1月曜の前日は、ちゃんと3月31日になります。

予定の最初の回(start)には、一覧の最初の日付を入れておきます。

Claude Code から Google カレンダー MCP で登録したときに起きたこと

Claude Code から Google カレンダーのコネクタ(MCP)で登録すると、6件とも登録できました。ただ、頼んでいないものが1つ付いてきました。

作った予定には、オンライン会議の URL が自動で付いていました。僕の会社で使っているコネクタには、それを外す指定がありませんでした。実害はないと記録に残し、そのままにしています。

コネクタで予定を入れるときのつまずきは、ほかにもあります。終日の予定を時刻つきの形で渡すと、時差の変換で1日前に入る件です。僕の会社では12件ずれて、日付だけの形で渡すように直しました。

詳しくはMCPとは?実際につないだ接続先と注意点に書いています。

AIに外部の道具を動かさせると、人が画面で入れたときには起きないずれが出ます。Gmail のコネクタでも、下書きの本文のドメインが別の文字列に化けたことがありました。

その確かめ方はGmail MCPでドメインが化ける原因と確認手順にまとめています。

Google Drive のコネクタでは、50KBを超えるPDFを置けませんでした。その分け方はGoogle Drive MCPで50KB超のPDFが置けない原因に書いています。

僕の会社では、Claudeに予定を入れさせる前に、同じ予定がもう無いかを先に一覧で確かめさせています。ごみ出しの定期予定も、二重に入れないよう確かめる相手として記録に挙がっています。

RDATE 方式の弱点:2036年12月で切れるので延長が要る

RDATEで並べた予定は、一覧の最後の日付で止まります。月ごとの3件は2036年12月分までなので、2036年の後半に日付を足す必要があります。

延長の手順は記録に残してあります。同じ計算で「第N曜日の前日18時」の日付を作り直し、3件の繰り返しの欄を書き換える(update)だけです。新しく予定を作り直さないので、招待や説明欄はそのまま残ります。

約10年後の作業なので、延長が要ることは僕の会社の記録の要約の行にも書いてあります。計算の手順も同じ記録にあるため、記録を読めば同じやり方で延長できます。

公式ヘルプにある730回の上限が、RDATEで並べた日付にも当てはまるかは、公式の記載を見つけられていません。10年以上先まで並べたいときは、上限に近づかない長さで区切り、延長で足していく方が安全だと考えています。

まとめ

  • Google カレンダーの繰り返し(RRULE)は「第1月曜」は書けても、「第1月曜の前日」をそのまま表す指定はない
  • 「第1・3日曜」で代用すると、1日が月曜の月にずれる。僕の会社の記録では年1〜2回
  • 2026年8月21日に6件を登録し、毎週の3件はRRULEの終わりのない繰り返し、月ごとの3件はRDATEで2036年12月分まで並べた
  • RDATEは一覧の最後で止まるので、延長の手順と期限を記録に残しておく
  • 僕なら、規則で書ける予定はRRULEに任せ、書きにくい予定だけをRDATEの日付の一覧にするところから始めます

よくある質問

Google カレンダーの画面の繰り返し設定だけで「第1月曜の前日」は入れられますか?

公式ヘルプには「繰り返しの間隔と終了日を選ぶ」とあるだけで、「第◯曜日の前日」を選べるという記載は見つけられませんでした。僕の会社では、Claudeにカレンダーの API の形で実際の日付を並べて登録させています。

RDATEで並べた予定は、あとから日付を足せますか?

足せます。予定の繰り返しの欄(recurrence)を、日付を足した一覧で書き換えます。僕の会社では2036年12月分まで入れてあり、2036年の後半に同じ計算で日付を作り直して書き換える予定です。

1回だけ休みにしたいときは、どうすればいいですか?

その回だけを取り消すか、EXDATEで外します。Google の開発者向け文書では、EXDATEは繰り返しのルールが作った回を指す必要があるとされています。RDATEで並べた予定なら、一覧からその日付を消して書き換える方法もあります。

引用元・参考にした記事

  1. Recurring events出典Google for Developers参照
  2. Calendars and events出典Google for Developers参照
  3. Events (Calendar API reference)出典Google for Developers参照
  4. RFC 5545: Internet Calendaring and Scheduling Core Object Specification (iCalendar)出典RFC Editor参照
  5. 定期的な予定を作成する出典Google カレンダー ヘルプ参照