(更新: 2026.03.21)

カレンダー監視機能で新しいイベントを自動検出

カレンダー監視機能で新しいイベントを自動検出

Googleカレンダーに外部から招待されたイベントを自動検出して、Telegramに通知する仕組みを作った。

なぜ必要なのか

問題:見落としがち

クライアントや社長から突然カレンダー招待が届くことがある。でも、Googleカレンダーを毎回開いているわけじゃない。

気づいたら明日の予定だったなんてことも。

解決策:30分ごとに監視

OpenClawが30分ごとにGoogleカレンダーをチェックして、新しいイベントがあれば通知

実装

1. Google Calendar API でイベント取得

// monitor_calendar.js
const { google } = require('googleapis');

async function checkNewEvents() {
  const auth = await authorize();
  const calendar = google.calendar({ version: 'v3', auth });

  // 最後のチェック時刻以降のイベントを取得
  const now = new Date();
  const lastCheck = new Date(now.getTime() - 30 * 60 * 1000); // 30分前

  const res = await calendar.events.list({
    calendarId: 'primary',
    timeMin: lastCheck.toISOString(),
    singleEvents: true,
    orderBy: 'startTime',
  });

  return res.data.items || [];
}

2. 新規イベントの判定

const isNewEvent = (event) => {
  const created = new Date(event.created);
  const now = new Date();

  // 30分以内に作成されたイベントを「新規」と判定
  return (now - created) < 30 * 60 * 1000;
};

3. Telegram通知

const notifyNewEvent = (event) => {
  const start = new Date(event.start.dateTime || event.start.date);
  const message = `
📅 新しい予定が追加されました

タイトル: ${event.summary}
日時: ${start.toLocaleString('ja-JP')}
場所: ${event.location || 'なし'}
主催者: ${event.organizer.email}
`;

  sendTelegramMessage(message);
};

運用

HEARTBEATに組み込み

# /Users/apple/.openclaw/workspace/HEARTBEAT.md
## Googleカレンダー監視(30分ごと)
- run_monitor.sh を実行
- 新しいイベントを検出して通知
- 何もなければスルー

30分ごとのハートビートで自動実行される。

検出例

例1:クライアントからの招待

📅 新しい予定が追加されました

タイトル: 求人AIシステム打ち合わせ
日時: 2026-03-25 14:00
場所: Zoom
主催者: client@example.com

例2:社長からの急な予定

📅 新しい予定が追加されました

タイトル: 緊急MTG
日時: 2026-03-22 10:00
場所: 本社
主催者: shacho@company.com

まとめ

カレンダー監視は地味だけど、予定の見落とし防止に絶大な効果。

外部から招待されたイベントを即座に把握できるので、準備時間も確保できる。

タグ: #自動化 #カレンダー #通知システム