予定表リストをクエリすると「削除済み: 」というデータが返る

予定表リストをWebサービス等でクエリすると「削除済み: (予定のタイトル)」という、存在しないデータが返される事があります。これは、繰り返しイベントの中のひとつの予定を、個別に削除した跡です。

SharePoint の「定期的なイベント」は、実際にはその最初のデータだけが存在して、それ以降は計算でつくられています。つまりアイテムとして実体が存在しません。そのため、そのままでは個別の削除はできません。

しかし、実際にはGUIから個別削除は可能です。このとき、どうやら SharePoint は裏側で「削除済み: (予定のタイトル)」というアイテムを作成して、同日同時刻に予定が存在する場合には、その予定を非表示にする、という処理をしているようです。

しかし、あくまで表示上の処理なので、Webサービスなどを経由してクエリをかけた場合、この隠しデータまで拾ってしまう訳ですね。

だから、「定期的なイベント」は個別に削除してもごみ箱に入りませんし、また「定期的なイベント」の本体(最初に登録したアイテム)を編集して(2010の場合はリボンから「定期的なアイテムの編集」をクリック)、予定時刻を変更すると、

このイベントの定期的なパターンを変更した場合、元の定期的なパターンに対する例外が失われます。処理を続行してもよろしいですか?

これをOKすると、削除した筈の個別予定が復活してしまう、という挙動になります。ちなみに、タイトルを変更した場合もこの警告が表示されますが、こちらは大丈夫でした。どうやらマッチングは予定時刻だけで行われているようです。

正直、あまりスマートな実装とは言えませんが…(苦笑)あくまでリスト、という仕組みありきであり、その亜種としての予定表リストなので、これは仕方ないのかもしれません。

なお、クエリ結果自体は SharePoint 2007 でしか確認していないのですが(スイマセン)、基本的な挙動が完全に同じなので、2010でもそうなる筈…もし違ったら教えて下さい(笑)

参考:
SharePoint Lists.asmx: query returns “deleted” Calendar items?


Author

中村 和彦(シンプレッソ・コンサルティング株式会社 代表)が「ユーザ視点の SharePoint 情報」を発信します。元大手製造業 SharePoint 運用担当。現SharePoint コンサルタント。お仕事のお問い合わせはこちらまでお願いします。当ブログにおける発信内容は個人に帰属し所属組織の公式発信/見解ではありません。
Twitter : @saruhiko
FB : 中村 和彦
MS MVP SharePoint 2009/10-2011/9
MS MVP Office 365 2012/10-

FaceBook Activity