# Google Calendar Skill ## 功能说明 为 OpenClaw 提供 Google Calendar 集成,支持: - ✅ 读取日历事件(今日/明日/本周) - ✅ 创建新事件 - ✅ 删除事件 - ✅ 多时区支持 - ✅ 服务账号认证 ## 安装 ### 1. 安装 Python 依赖 ```bash pip install google-auth google-api-python-client ``` 或在 skill 目录执行: ```bash cd /root/.openclaw/workspace/skills/google-calendar pip install -r requirements.txt ``` ### 2. 配置凭证 凭证文件位置:`/root/.openclaw/credentials/google-calendar-life.json` **获取凭证步骤:** 1. 访问 https://console.cloud.google.com/ 2. 创建或选择 Google Cloud 项目 3. 启用 Google Calendar API 4. 创建服务账号 (Service Account) 5. 下载 JSON 密钥文件 6. 将内容保存到凭证文件 7. 共享目标日历给服务账号邮箱(格式:`xxx@xxx.iam.gserviceaccount.com`) ### 3. 启用 Skill 编辑 `/root/.openclaw-life/openclaw.json`(张大师配置)或 `/root/.openclaw/openclaw.json`(主配置): ```json { "skills": { "entries": { "google-calendar": { "enabled": true } } } } ``` ## 配置 编辑 `config.yaml`: ```yaml credentials_path: /root/.openclaw/credentials/google-calendar-life.json timezone: Asia/Shanghai calendar_id: primary # 或具体日历 ID ``` ## 命令 | 命令 | 说明 | 示例 | |------|------|------| | `/calendar today` | 查看今日日程 | `/calendar today` | | `/calendar tomorrow` | 查看明日日程 | `/calendar tomorrow` | | `/calendar week` | 查看本周日程 | `/calendar week` | | `/calendar status` | 检查连接状态 | `/calendar status` | | `/calendar add` | 添加新事件 | `/calendar add 明天 14:00 开会` | | `/calendar help` | 显示帮助 | `/calendar help` | ## 编程接口 ```python from google_calendar import GoogleCalendarClient client = GoogleCalendarClient( credentials_path='/root/.openclaw/credentials/google-calendar-life.json', timezone='Asia/Shanghai' ) # 获取今日事件 events = client.get_today_events() # 创建事件 from datetime import datetime client.create_event( summary='团队会议', start_time=datetime(2026, 2, 24, 14, 0), description='讨论项目进度' ) # 测试连接 status = client.test_connection() print(f"Connected: {status['connected']}") ``` ## 依赖 - Python 3.8+ - google-auth - google-api-python-client ## 故障排查 ### 错误:Credentials file not found 检查凭证文件路径是否正确,文件是否存在。 ### 错误:Failed to initialize Google Calendar service - 确认凭证 JSON 格式正确 - 确认服务账号有 Calendar API 访问权限 - 确认目标日历已共享给服务账号 ### 错误:googleapiclient.errors.HttpError: Forbidden 服务账号没有访问目标日历的权限。请在 Google Calendar 中共享日历给服务账号邮箱。 ## 安全提示 - ⚠️ 凭证文件包含私钥,请妥善保管 - ⚠️ 不要将凭证文件提交到版本控制 - ✅ 使用服务账号而非个人账号进行自动化操作 - ✅ 定期轮换服务账号密钥