You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将个人日历添加至Service Account遇CalendarList插入错误求助

问题排查与解决步骤

1. 确认共享权限配置是否到位

  • 打开你的个人Google日历,进入「设置和共享」→「与特定人员共享」
  • 找到添加的服务账号邮箱,确保权限至少是「查看所有事件」(若需要修改日历内容则选「更改和管理事件」)
  • 保存设置后等待1-2分钟,Google权限同步可能存在延迟

2. 修正代码中的日历ID

服务账号本身没有自己的primary日历,你之前用primary访问的是服务账号自身的空日历,自然查不到内容。把代码里的primary替换成你的个人邮箱地址:

Dim Request As EventsResource.ListRequest = service2.Events.List("你的个人邮箱@xxx.com")

3. 检查服务账号的API权限范围

  • 打开Google Cloud控制台,找到创建服务账号的对应项目
  • 进入「API和服务」,确认已启用Google Calendar API
  • 检查服务账号密钥文件对应的权限范围,必须包含https://www.googleapis.com/auth/calendar(读写权限)或https://www.googleapis.com/auth/calendar.readonly(只读权限),若未添加则补上后重新生成密钥文件

4. 错误原因说明

  • 「Not found」:大概率是日历ID填写错误,或是共享权限未同步完成,核对个人邮箱是否正确后,多等待几分钟再尝试
  • 「Cannot change your own access level」:这是因为你用服务账号操作它自身的日历(primary对应服务账号自己的日历),服务账号本身就是自身日历的所有者,无法修改自己的权限。你需要操作的是你的个人日历,因此必须使用个人邮箱作为日历ID

5. 验证服务账号可访问的日历列表

可以先调用CalendarList.List接口,查看服务账号能访问的所有日历,确认你的个人日历是否在列表中:

Dim calendarListRequest As CalendarListResource.ListRequest = service2.CalendarList.List()
Dim calendarList As CalendarList = calendarListRequest.Execute()
For Each calendar In calendarList.Items
    MsgBox($"日历ID: {calendar.Id}, 名称: {calendar.Summary}")
Next

如果列表中没有你的个人日历,说明共享配置存在问题,回去重新检查共享步骤。


内容的提问来源于stack exchange,提问作者Eduardo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 01:30:11