予定表リストをクエリすると「削除済み: 」というデータが返る
予定表リストをWebサービス等でクエリすると「削除済み: (予定のタイトル)」という、存在しないデータが返される事があります。これは、繰り返しイベントの中のひとつの予定を、個別に削除した跡です。
SharePoint の「定期的なイベント」は、実際にはその最初のデータだけが存在して、それ以降は計算でつくられています。つまりアイテムとして実体が存在しません。そのため、そのままでは個別の削除はできません。
しかし、実際にはGUIから個別削除は可能です。このとき、どうやら SharePoint は裏側で「削除済み: (予定のタイトル)」というアイテムを作成して、同日同時刻に予定が存在する場合には、その予定を非表示にする、という処理をしているようです。
しかし、あくまで表示上の処理なので、Webサービスなどを経由してクエリをかけた場合、この隠しデータまで拾ってしまう訳ですね。
だから、「定期的なイベント」は個別に削除してもごみ箱に入りませんし、また「定期的なイベント」の本体(最初に登録したアイテム)を編集して(2010の場合はリボンから「定期的なアイテムの編集」をクリック)、予定時刻を変更すると、
このイベントの定期的なパターンを変更した場合、元の定期的なパターンに対する例外が失われます。処理を続行してもよろしいですか?
これをOKすると、削除した筈の個別予定が復活してしまう、という挙動になります。ちなみに、タイトルを変更した場合もこの警告が表示されますが、こちらは大丈夫でした。どうやらマッチングは予定時刻だけで行われているようです。
正直、あまりスマートな実装とは言えませんが…(苦笑)あくまでリスト、という仕組みありきであり、その亜種としての予定表リストなので、これは仕方ないのかもしれません。
なお、クエリ結果自体は SharePoint 2007 でしか確認していないのですが(スイマセン)、基本的な挙動が完全に同じなので、2010でもそうなる筈…もし違ったら教えて下さい(笑)
参考:
SharePoint Lists.asmx: query returns “deleted” Calendar items?
login