我对 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,我去查看我的活动,这就是我所看到的:
它已经改变了。如果我手动设置通知,则只允许电子邮件。 弹出提醒发生了什么?
根据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希望您使用:
然而,正如我们已经同意的那样,网络浏览器中的 Google日历现已更改,并且不再显示提醒部分,但通知部分。对我而言,它列出:
因此,我仍然不清楚如何在VB.NET中以编程方式创建事件,并提供相应的弹出提醒。
答案仍然无法帮助我。您无法再创建日历事件并将提醒对象方法设置为&#34;弹出&#34;。似乎必须使用&#34;通知&#34;相反,我无法解决如何使用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
最后注意这一点:
BEGIN:VALARM
ACTION:DISPLAY
DESCRIPTION:This is an event reminder
TRIGGER:-P1D
END:VALARM
根据Wikipedia,它声明事件可以有一些 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
他们没有被 Google Calendar V3 API 所尊重。我认为这里的问题是该功能被破坏了。然后将其从弹出窗口重命名为通知,而不是使用这些弹出警报创建事件的更新支持。我正在使用最新的包管理器下载。几天前我和Google就提出了一个issue。
我不相信这是我的错误。鉴于用户群的沉默,我得出结论,没有人实际上使用API来创建事件和设置提醒。或者,可能有其他用户现在已经影响了代码并且不知道这个问题。
但是如果你知道它,并且可以复制我的问题/或者知道一个实用的解决方案,请告诉我。谢谢。
答案 0 :(得分:2)
我的代码中的事件包含一个if
子句,它必须是:
If (strEventType = kTagAssignmentsMSA Or strEventType = kTagMidweekMeetingCLM) Then
它被设置为一个过时的标签,我不再使用,我没有更新我的代码。所以它永远不会创建事件提醒本身。
我很糟糕。问题解决了。没问题。
答案 1 :(得分:0)