Google Calendar API v3 - 仅向新添加的与会者发送电子邮件

问题描述 投票:0回答:1

我正在使用适用于 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();

有办法吗?

c# google-api google-calendar-api google-workspace
1个回答
0
投票

仅向活动中添加的与会者发送电子邮件

根据我的研究,这是 Google 官方问题跟踪器上正在进行的讨论。这是它的链接:Issue,我建议对此线程做出贡献,以便有更好的机会更快地得到答案。

解决方法:

第一个建议:不要通过 Google Calendar API 发送通知,而是利用 GMAIL API 向添加的与会者发送电子邮件。注意:这部分不会完美地提供 UI 结果的复制,但它会足够封闭,具体取决于您将如何创建要发送的电子邮件。

第二个建议:从 Google Calendar API 进行 3 个 API 调用。第一个电话将删除活动中的所有参与者,恕不另行通知。接下来是添加与会者并发出通知。最后是在不通知的情况下添加已删除的与会者。这与 UI 的行为非常接近,但是根据用例,您可能会遇到某种运行时问题。请记住这一点。

建议参考:

GMAIL API。 (消息.发送)

日历API(事件.更新)

© www.soinside.com 2019 - 2024. All rights reserved.