先月に変更された受信トレイ アイテムをフィルター処理して表示する
この例では、先月に変更された受信トレイアイテムをフィルター処理して表示する方法を示します。
例
注:
次のコード例は、『Programming Applications for Microsoft Office Outlook 2007』からの抜粋です。
DAV Search and Locating (DASL) は、Outlook における Microsoft Exchange の DASL 実装に基づくクエリ言語です。 表オブジェクトに示されるように、フォルダーのデータ内のプロパティに基づくアイテム レベルの検索結果などを戻すのに使用することができます。 DASL フィルターは、等号 (=) 演算子による文字列の比較 (同値、接頭辞、語句、部分文字列の一致) をサポートしています。 DASL クエリを使用して、日付と時刻の比較とフィルター処理を行うことができます。
DASL クエリは常に協定世界時 (UTC) で DateTime 比較を実行するため、クエリを正しく動作させるには、ローカル時刻の値を UTC に変換する必要があります。 DASL フィルターでは文字列比較がサポートされているため、 DateTime 値を文字列表現に変換する必要もあります。 DateTime 変換は、Row オブジェクトの LocalTimeToUTC(Object) メソッドを使用するか、Outlook DateTime マクロを使用して変換する 2 つの方法で行うことができます。
次のコードは、 LocalTimeToUTC メソッドを使用して LastModificationTime プロパティ (すべての Item オブジェクトにある既定の列) の値を UTC に変換する方法を示しています。
DateTime modified = nextRow.LocalTimeUTC(“LastModificationTime”);
次の表は、 DateTime プロパティの値と UTC の相対日時を比較して文字列をフィルター処理するための DateTime マクロです。 SchemaName のプロパティの値は、名前空間で参照される有効な DateTime プロパティを表します。
マクロ |
構文 |
説明 |
---|---|---|
today |
%today(“SchemaName”)% |
抽出対象を SchemaName プロパティの値が今日と等しいアイテムに制限します。 |
tomorrow |
%tomorrow(“SchemaName”)% |
抽出対象を SchemaName プロパティの値が明日と等しいアイテムに制限します。 |
yesterday |
%yesterday(“SchemaName”)% |
抽出対象を SchemaName プロパティの値が昨日と等しいアイテムに制限します。 |
next7days |
%next7days(“SchemaName”)% |
抽出対象を SchemaName プロパティの値の範囲が次の 7 日間と等しいアイテムに制限します。 |
last7days |
%last7days(“SchemaName”)% |
抽出対象を SchemaName プロパティの値の範囲が今日までの 7 日間と等しいアイテムに制限します。 |
nextweek |
%nextweek(“SchemaName”)% |
抽出対象を SchemaName プロパティ値の範囲が来週と等しいアイテムに制限します。 |
thisweek |
%thisweek(“SchemaName”)% |
抽出対象を SchemaName プロパティ値の範囲が今週と等しいアイテムに制限します。 |
lastweek |
%lastweek(“SchemaName”)% |
抽出対象を SchemaName プロパティ値の範囲が先週と等しいアイテムに制限します。 |
nextmonth |
%nextmonth(“SchemaName”)% |
抽出対象を SchemaName プロパティ値の範囲が来月と等しいアイテムに制限します。 |
thismonth |
%thismonth(“SchemaName”)% |
抽出対象を SchemaName プロパティ値の範囲が今月と等しいアイテムに制限します。 |
lastmonth |
%lastmonth(“SchemaName”)% |
抽出対象を SchemaName プロパティ値の範囲が先月と等しいアイテムに制限します。 |
次の例では、DemoDASLDateMacro が lastmonthDateTimeマクロを使用する DASL クエリを作成し、先月変更されたユーザーの受信トレイ内のアイテムをフィルター処理します。 次に、作成、表オブジェクトをフィルターと共に作成、列挙し、制限されたテーブルオブジェクトの行を表示します。
Visual Studio を使用してこのコード例をテストする場合、Microsoft.Office.Interop.Outlook 名前空間をインポートするときに、まず Microsoft Outlook 15.0 オブジェクト ライブラリ コンポーネントへの参照を追加し、Outlook 変数を指定します。 using ステートメントは、コード例の関数の前に直接置くことはできません。パブリッククラス宣言の前に追加する必要があります。 次のコード行は、C# でインポートおよび割り当てを行う方法を示しています。
using Outlook = Microsoft.Office.Interop.Outlook;
private void DemoDASLDateMacro()
{
string filter = "@SQL=" + "%lastmonth(" + "\"" +
"DAV:getlastmodified" + "\"" + ")%";
Outlook.Table table = Application.Session.GetDefaultFolder(
Outlook.OlDefaultFolders.olFolderInbox).GetTable(
filter, Outlook.OlTableContents.olUserItems);
while (!table.EndOfTable)
{
Outlook.Row row = table.GetNextRow();
Debug.WriteLine(row["Subject"]);
}
}