カレンダー監視機能で新しいイベントを自動検出
カレンダー監視機能で新しいイベントを自動検出
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
まとめ
カレンダー監視は地味だけど、予定の見落とし防止に絶大な効果。
外部から招待されたイベントを即座に把握できるので、準備時間も確保できる。
タグ: #自動化 #カレンダー #通知システム