我正在使用适用于 Google Workspace 的 Google Calendar API v3。我需要将参与者添加到现有活动中。
我使用 C# 和官方 Google 日历库。我有一个冒充的服务帐户。
当我添加与会者时,所有与会者都会根据
SendUpdates
请求参数收到通知。显然,根据文档,API 的行为正确。
但我只需要向新添加的与会者发送电子邮件,以匹配 UI 体验。
var serviceCredential = GoogleCredential.FromJson(json)
.CreateScoped("https://www.googleapis.com/auth/calendar.events")
.CreateWithUser("[email protected]");
using var calendarService = new CalendarService(new BaseClientService.Initializer
{
HttpClientInitializer = serviceCredential,
ApplicationName = "AppName",
});
var evt = calendarService.Events.Get("<calendar_id>", "<event_id>").Execute();
evt.Attendees.Add(new EventAttendee()
{
DisplayName = "Firstname Lastname",
Email = "[email protected]"
});
// with calendarService.Events.Update, it also sends invitation to all attendees
var request = calendarService.Events.Patch(evt, CalendarId, evt.Id);
request.SendUpdates = EventsResource.PatchRequest.SendUpdatesEnum.ExternalOnly;
request.Execute();
有办法吗?
根据我的研究,这是 Google 官方问题跟踪器上正在进行的讨论。这是它的链接:Issue,我建议对此线程做出贡献,以便有更好的机会更快地得到答案。
第一个建议:不要通过 Google Calendar API 发送通知,而是利用 GMAIL API 向添加的与会者发送电子邮件。注意:这部分不会完美地提供 UI 结果的复制,但它会足够封闭,具体取决于您将如何创建要发送的电子邮件。
第二个建议:从 Google Calendar API 进行 3 个 API 调用。第一个电话将删除活动中的所有参与者,恕不另行通知。接下来是添加与会者并发出通知。最后是在不通知的情况下添加已删除的与会者。这与 UI 的行为非常接近,但是根据用例,您可能会遇到某种运行时问题。请记住这一点。