独自のタスク オブジェクトを Outlook のタスクに同期するプログラムを作成する必要があります。操作中に、Outlook のタスクが作成/更新/削除される場合があります。
最も簡単な方法は、Outlook のすべてのタスク アイテムを反復処理して、更新するアイテムを探すことです。非常に大まかに:
ApplicationClass _app;
NameSpace _nameSpace;
MAPIFolder _folder;
_app = new ApplicationClass();
_nameSpace = _app.GetNamespace("MAPI");
_folder = _nameSpace.GetDefaultFolder(OlDefaultFolders.olFolderTasks);
Dictionary<int,MyTask> data = GetData();
for (int i = 1; i <= _folder.Items.Count; i++)
{
TaskItem taskItem = (TaskItem)_folder.Items.Item(i);
int itemID;
if(ItemNeedsProcessing(taskItem, out itemID))
UpdateItem(taskItem, data[itemID]);
}
ただし、これは、1 つまたは 2 つの変更を行うためだけに、(クライアントの Outlook タスク履歴に応じて)何百ものアイテムを反復処理する可能性があります。
または、タスクを追跡することもできItemID
ます...
string itemID = "00000000873..."; //taken from property on object.
object o = _nameSpace.GetItemFromID(itemID); //ignore possible exceptions for now
TaskItem taskItem = (TaskItem)o;
...そして直接更新します(これにより、アプリケーション側でのタスクの作成/削除が多少複雑になります)。
タスク項目を直接取得する ( GetItemFromID
) のが最も効率的な方法ですか? それとも、私が見逃している落とし穴がありますか?