如何用C#及Google Calendar API创建日历事件?代码报错求助
解决Google Calendar API C#创建事件失败的问题
首先,我帮你梳理几个常见导致这段代码运行失败的原因,以及对应的修复方案:
1. 检查依赖包是否正确安装
确保你已经通过NuGet安装了所有必要的Google API相关包:
Google.Apis.Calendar.v3Google.Apis.AuthGoogle.Apis.Core
如果使用Package Manager Console,可以运行以下命令安装:
Install-Package Google.Apis.Calendar.v3 Install-Package Google.Apis.Auth Install-Package Google.Apis.Core
2. 修正事件时间的时区与格式问题
你的代码里End时间的时区偏移和Start不一致(Start是-07:00,End是-07:30),这可能导致API返回时间逻辑错误。另外,建议用DateTimeOffset处理带时区的时间,避免解析异常:
替换原代码中Start和End的定义:
Start = new EventDateTime() { DateTime = new DateTimeOffset(2024, 6, 28, 9, 0, 0, TimeSpan.FromHours(-7)).DateTime, TimeZone = "America/Los_Angeles", }, End = new EventDateTime() { DateTime = new DateTimeOffset(2024, 6, 28, 17, 0, 0, TimeSpan.FromHours(-7)).DateTime, TimeZone = "America/Los_Angeles", },
(注意把年份改成当前或未来的年份,避免创建已过期的无效事件)
3. 移除可能不支持的提醒方式
sms提醒需要用户预先在Google账户中配置好短信通知服务,否则API会直接报错。可以先注释掉sms提醒,先测试基础的事件创建功能:
Overrides = new EventReminder[] { new EventReminder() { Method = "email", Minutes = 24 * 60 }, // new EventReminder() { Method = "sms", Minutes = 10 }, }
4. 确认文件路径与权限
- 确保
credentials.json已经复制到项目的输出目录(右键文件→属性→复制到输出目录:选择「如果较新则复制」) - 首次运行授权后生成的
token.json会保存在项目目录下,确保程序对该目录有读写权限
5. 捕获并查看具体错误信息
添加异常捕获逻辑,这样你能看到API返回的具体错误详情,方便进一步排查:
try { Event createdEvent = request.Execute(); Console.WriteLine("Event created: {0}", createdEvent.HtmlLink); } catch (Exception ex) { Console.WriteLine($"Error creating event: {ex.Message}"); if (ex is Google.GoogleApiException apiEx) { Console.WriteLine($"API Error Details: {apiEx.Error.Message}"); Console.WriteLine($"API Error Code: {apiEx.Error.Code}"); } }
按照上面的步骤逐一排查,应该能解决大部分问题。如果捕获到具体的API错误代码,可以再针对性分析处理。
内容的提问来源于stack exchange,提问作者Igor Osipov
相关产品推荐
相关产品推荐

