7

Exchange を別のカレンダー プログラムと接続するための ews アプリケーションを作成しようとしています。Exchange で削除される予定を確認するにはどうすればよいですか? 伝える方法はありますか?API とドキュメントでそれを見つけることができませんでした。

前もって感謝します。

4

2 に答える 2

7

ユーザーが予定 (またはアイテム) を削除する方法に応じて、さまざまなことが行われます。

  • Soft-Delete: アイテムはメールボックスのごみ箱に移動されます。
  • Hard-Delete: アイテムは即座に削除されます。

削除済みアイテムに関する情報を取得するには、複数の方法があります。

  • FindItems 呼び出しを使用してフォルダーを照会し、ItemView の Traversal プロパティで ItemTraversal.Associated を選択します。注: これには Exchange 2010 が必要です。
  • 一度に SyncFolderItems を使用し、同期 Cookie をどこかに保存します。後で、以前に保存した Cookie を使用して SyncFolderItems を再度実行します。Exchange は、フォルダに発生した変更の詳細なリストを表示します。
  • 予定のごみ箱を照会します。ほとんどの場合、ユーザーの既定のカレンダーから取得されたものです。
于 2011-09-15T10:10:26.787 に答える
0

EWS カレンダーの予定を SQL テーブルに同期するサービスを作成しました。

データベースに行があり、EWS にない場合、変更の挿入/更新後に削除する場合は、Exchange で削除されたことを意味するため、削除します。GUID を使用して、データベースと交換で予定を追跡します。Exchange Web サービス: ItemId が一定でないのはなぜですか? 【続き】

ほんの数十の予定でパフォーマンスはまともです。もっと大きなデータセットで試してみます。

Dim appointmentGuid As New List(Of String)
For Each appointment In appointments 'appointments is IEnumerable(Of Appointment) from EWS
Dim guid As String = GetGuidForAppointment(appointment)
If String.IsNullOrEmpty(guid) Then
    SetGuidForAppointment(appointment)
    guid = GetGuidForAppointment(appointment)
End If
appointmentGuid.Add(guid)

 'Upsert rows
 ...
Next

'Delete orphaned rows 
Using sqlConnection As New SqlConnection(ConnectionString)
Dim deleteScript As New StringBuilder()
Using sqlCmd As New SqlCommand("SELECT ID FROM Appointments", sqlConnection)
    Using sqlDataReader As SqlDataReader = sqlCmd.ExecuteReader()
        sqlConnection.Open()
        While sqlDataReader.Read()
            Dim guid As String = sqlDataReader.GetString(0)
            If Not appointmentGuid.Contains(guid) Then
                deleteScript.AppendFormat("DELETE FROM Appointments WHERE ID = '{0}'; ", guid)
            End If
        End While
    End Using
End Using
If deleteScript.Length > 0 Then
    Using sqlCmd As New SqlCommand(deleteScript.ToString(), sqlConnection)
        sqlCmd.ExecuteNonQuery()
    End Using
End If
End Using
于 2014-05-13T18:42:02.567 に答える