次の方法で共有


先月に変更された受信トレイ アイテムをフィルター処理して表示する

この例では、先月に変更された受信トレイアイテムをフィルター処理して表示する方法を示します。

注:

次のコード例は、『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"]);
    }
}

関連項目