Google 日历事件中缺少弹出式提醒

Missing popup reminders in Google Calendar Events

我对 Google Calendar v3 界面感到困惑。好像有什么变了。

我有一些 VBA 代码可以创建事件并附加 弹出提醒:

If (sEventSettings.bSetReminder) Then
    Dim oReminders As New Data.Event.RemindersData()
    Dim oReminder As New Data.EventReminder()
    Dim listReminders As IList(Of Data.EventReminder) = New List(Of Data.EventReminder)()

    oReminder.Minutes = sEventSettings.iSetReminderTime
    oReminder.Method = "popup"

    listReminders.Add(oReminder)

    oReminders.UseDefault = False
    oReminders.Overrides = listReminders

    oEvent.Reminders = oReminders
End If

多年来它一直有效。我可以在在线日历中看到类似这样的内容:

现在,我正在使用 Windows 10 / Microsoft Edge,我去查看了我的事件,这就是我所看到的:

变了。如果我手动设置通知,它将只允许 email弹出 提醒发生了什么?

根据 Google Calendar Documentation 弹出提醒仍受支持。所以我很困惑。

更新

如果您查看 EventReminder.Method 属性:

的定义
Namespace Google.Apis.Calendar.v3.Data
    Public Class EventReminder
        Implements IDirectResponseSchema

        Public Sub New()

        '
        ' Summary:
        '     The method used by this reminder. Possible values are: - "email" - Reminders
        '     are sent via email. - "sms" - Reminders are sent via SMS. These are only available
        '     for Google Apps for Work, Education, and Government customers. Requests to set
        '     SMS reminders for other account types are ignored. - "popup" - Reminders are
        '     sent via a UI popup.
        <JsonProperty("method")>
        Public Overridable Property Method As String
        '
        ' Summary:
        '     Number of minutes before the start of the event when the reminder should trigger.
        '     Valid values are between 0 and 40320 (4 weeks in minutes).
        <JsonProperty("minutes")>
        Public Overridable Property Minutes As Integer?
        '
        ' Summary:
        '     The ETag of the item.
        Public Overridable Property ETag As String
    End Class
End Namespace

因此,API 希望您使用:

然而,正如我们所同意的,Web 浏览器 中的 Google 日历 现在已经更改,不再显示 Reminders 部分,但显示 Notifications 部分。对我来说,它列出了:

所以我仍然不清楚如何在 VB.NET 中以编程方式创建事件,相当于弹出提醒。

请求帮助

答案仍然对我没有帮助。您不能再创建日历事件并将提醒对象方法设置为 "popup"。似乎必须改用 "notifications" 而我不知道如何使用 V3 API.

以编程方式执行此操作

进一步研究

我用 Google Chrome 手动创建了一个日历,并添加了一个 事件 。然后我添加了一个 notification 设置为 1 day。我将此日历导出为 ICS 格式:

BEGIN:VEVENT
DTSTART:20170420T143000Z
DTEND:20170420T153000Z
DTSTAMP:20170307T102059Z
UID:xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
CREATED:20170307T102022Z
DESCRIPTION:This is a test
LAST-MODIFIED:20170307T102045Z
LOCATION:Home
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:Test
TRANSP:OPAQUE
BEGIN:VALARM
ACTION:DISPLAY
DESCRIPTION:This is an event reminder
TRIGGER:-P1D
END:VALARM
END:VEVENT

注意最后的这一点:

BEGIN:VALARM
ACTION:DISPLAY
DESCRIPTION:This is an event reminder
TRIGGER:-P1D
END:VALARM

根据 Wikipedia 它指出事件可以有一些 VALARM 代码。

如果我将此 ICS 文件导入 Microsoft Outlook 中的新日历,它会正确设置为一天:

然而,当我正确地导出 my 事件时,如我所料,没有 VALARM 对象存在。然而,我已经正确地创建了它们:

If (sEventSettings.bSetReminder) Then
    Dim oReminders As New Data.Event.RemindersData()
    Dim oReminder As New Data.EventReminder()
    Dim listReminders As IList(Of Data.EventReminder) = New List(Of Data.EventReminder)()

    oReminder.Minutes = sEventSettings.iSetReminderTime
    oReminder.Method = "popup"

    listReminders.Add(oReminder)

    oReminders.UseDefault = False
    oReminders.Overrides = listReminders

    oEvent.Reminders = oReminders
End If

Google Calendar V3 API 并未向他们致敬。我认为这里的问题是该功能已损坏。然后将其从弹出窗口重命名为通知,并且未更新对使用这些弹出窗口警报创建事件的支持。我正在使用最新的包管理器下载。几天前我用 Google.

提出了一个关于它的 issue

我认为这不是我的错误。考虑到此处用户群的沉默,我得出的结论是,实际上没有人使用 API 来创建事件和设置提醒。或者,可能有其他用户现在已经影响了代码并且不知道这个问题。

但如果您知道,并且可以重现我的问题/或知道实用的解决方案,请告诉我。谢谢。

您还可以设置Notification。这与弹出窗口的功能相同。

此外,根据此 support page,您需要在浏览器中打开 Google 日历才能在计算机上接收通知。

天哪,这么久了,我得吃个卑微的馅饼了……:)

我代码中的事件用 if 子句包装,它需要是:

If (strEventType = kTagAssignmentsMSA Or strEventType = kTagMidweekMeetingCLM) Then

它被设置为一个我不再使用的过时标签,我也没有更新我的代码。所以它从来没有创建事件提醒本身。

我不好。问题解决了。没有问题。