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
它被设置为一个我不再使用的过时标签,我也没有更新我的代码。所以它从来没有创建事件提醒本身。
我不好。问题解决了。没有问题。
我对 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
它被设置为一个我不再使用的过时标签,我也没有更新我的代码。所以它从来没有创建事件提醒本身。
我不好。问题解决了。没有问题。