Google日历活动中缺少弹出式提醒

And*_*kle 6 vb.net reminders google-calendar-api popup

我对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
Run Code Online (Sandbox Code Playgroud)

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

谷歌弹出提醒

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

Google通知

它已经改变了.如果我手动设置通知,它将只允许电子邮件.弹出提醒发生了什么?

根据谷歌日历文档弹出提醒仍然支持.所以我很困惑.

更新

如果查看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
Run Code Online (Sandbox Code Playgroud)

因此,API希望您使用:

  • 电子邮件
  • 弹出
  • 短信

然而,正如我们已经约定,谷歌日历网页浏览器已经改变,它不再显示提醒部分,但一个通知部分.对我来说,它列出:

  • 电子邮件
  • 通知

因此,我仍然不清楚如何在VB.NET中以编程方式创建事件,并使用相应的弹出提醒.

请求帮助

答案仍然无法帮助我.您无法再创建日历事件并将提醒对象方法设置为"弹出窗口".似乎必须使用"通知",我无法弄清楚如何使用V3 API以编程方式执行此操作.

进一步的研究

我手动使用Google Chrome创建了一个日历,并添加了一个活动.然后我添加了一个通知设置为1天.我将此日历导出为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
Run Code Online (Sandbox Code Playgroud)

最后请注意这一点:

BEGIN:VALARM
ACTION:DISPLAY
DESCRIPTION:This is an event reminder
TRIGGER:-P1D
END:VALARM
Run Code Online (Sandbox Code Playgroud)

根据维基百科,它声明事件可以有一些VALARM代码.

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

提醒

然而,当我按照我的预期导出正确的事件时,没有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
Run Code Online (Sandbox Code Playgroud)

他们没有被Google Calendar V3 API所尊重.我认为这里的问题是该功能被破坏了.然后将其从弹出窗口重命名为通知,而不是使用这些弹出警报创建事件的更新支持.我正在使用最新的包管理器下载.几天前我和谷歌提出了一个问题.

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

但如果你知道它,并且可以复制我的问题/或者知道一个实用的解决方案,请告诉我.谢谢.

And*_*kle 2

哦天哪,过了这么久,我必须吃简陋的馅饼......:)

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

If (strEventType = kTagAssignmentsMSA Or strEventType = kTagMidweekMeetingCLM) Then
Run Code Online (Sandbox Code Playgroud)

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

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