使用Google Calendar V3 API删除日期范围的日历活动

时间:2018-01-14 22:05:54

标签: vb.net google-calendar-api

我有一个用 VB.Net 编写的命令行实用程序,它使用 Google v3 Calendar API 。我的一位用户在日期范围 删除日历活动时出现问题。

这是我的删除代码:

Private Function DeleteCalendarEvents(ByRef oBatchRequest As Google.Apis.Requests.BatchRequest,
                                      strCalendarID As String,
                                      strTag1 As String, strTag2 As String,
                                      strStartDate As String, strEndDate As String,
                                      bDeleteFurtureDates As Boolean) As Boolean

    Dim oEvents As Events
    Dim oQuery As New ListRequest(m_Service, strCalendarID) With {
        .TimeMin = strStartDate & "T00:00:00Z"
    }

    If (Not bDeleteFurtureDates) Then
        oQuery.TimeMax = strEndDate & "T23:59:59Z"
    End If

    oQuery.SingleEvents = True
    oQuery.OrderBy = ListRequest.OrderByEnum.StartTime

    If (strTag2 <> "") Then
        oQuery.SharedExtendedProperty = {String.Format("TruckleSoft1={0}", strTag1),
                                         String.Format("TruckleSoft2={0}", strTag2)}
    Else
        oQuery.SharedExtendedProperty = String.Format("TruckleSoft1={0}", strTag1)
    End If
    oEvents = oQuery.Execute()

    ' Let us try to get all the entries
    For Each oEvent As Data.[Event] In oEvents.Items
        ' We try to add it to the batch
        If (oBatchRequest.Count < 1000) Then
            oBatchRequest.Queue(Of Data.[Event]) _
                (m_Service.Events.Delete(strCalendarID, oEvent.Id), AddressOf OnEventDelete)
        Else
            ' This should never happen!
            ' We reached 1000 delete events!

            ' We must set the progress max variable now for calculations to be correct in the event handler
            m_iProgressMax = oBatchRequest.Count
            Dim oTaskDelete = oBatchRequest.ExecuteAsync()
            oTaskDelete.Wait()

            ' Start again
            oBatchRequest = New Google.Apis.Requests.BatchRequest(m_Service)
            oBatchRequest.Queue(Of Data.[Event]) _
                (m_Service.Events.Delete(strCalendarID, oEvent.Id), AddressOf OnEventDelete)
        End If
    Next

    Return True
End Function

您可以看到我如何设置TimeMinTimeMax属性。

查看我的 Nuget 包,它会显示:

Google Calendar Info

我可以看到我不再使用最新版本的软件包了。我的IDE是 VS2017社区版,我的项目以 4.6.2框架为目标。

现在,在我的计算机上,当我将数据发送到日历并删除所选日期范围的现有条目时,我没有遇到任何问题。但是对于我的一位用户,他们告诉我上一个日历事件会重复。就好像它没有被删除一样,因此会重复。

他们的日历是 -6:00中央时区。我是 GMT时区,但我尝试创建一个设置为-6:00中央时区的日历,并通过我的实用程序更新日历,我不会遇到问题。

他已经确认他的计算机上有 4.7框架。我不知道如何解决他的问题。有什么可以暗示我没有正确选择要删除的日历事件吗?

我只是重新检查了文档,我认为我正确地遵循了它:

API Info

谢谢。

0 个答案:

没有答案