Items コレクションにフィルタをかけ、一致するアイテムのコレクションを返します。
条件式はJetクエリまたはDASLクエリで記述します。
コレクションにフィルタをかけるメソッドとしてItems.Restrict メソッドもありますが、違いは検索速度くらいで検索対象のアイテムが少ないときに使います。検索対象のアイテムが多いときはItems.Restrict メソッドを使うと良いです。
- 構文
- Items = Items.Restrict( Filter )
- 引数
- Filter 省略可
- 適用するフィルター文字列式
- 戻り値
- Items コレクションにフィルターを適用し、フィルターに一致するアイテムを含む新しいItems コレクションを返します。
Items オブジェクトを返すメソッド・プロパティ
- Items.Restrict メソッド
- Items コレクションにフィルタを適用し、フィルタに一致する元のすべてのアイテムを含む新しいItems コレクションを返します。
フィルタ
Jetクエリ
Outlook 2003以前のバージョンで使用されていたフィルタ式の記述方法で、AccessのJetデータベースエンジンと同じ構文を使用しています。
Jetクエリで使えるカラム([ ]で囲まれた名前)はMailItem オブジェクトのプロパティと同じと考えて大丈夫だと思います。
| フィルタ | 説明 |
|---|---|
| [BCC] | ブラインド・カーボン・コピー(Blind Carbon Copy) |
| [CC] | カーボン・コピー(Carbon Copy) |
| [Importance] | 重要度。0:低、1:標準、2:高。 |
| [LastModificationTime] | 最終更新日時。#time-formatを参照。 |
| [ReceivedTime] | 受信日時。#time-formatを参照。 |
| [SenderEmailAddress] | 送信元アドレス |
| [SenderName] | 送信者名 |
| [SentOn] | 送信日時 |
| [Size] | メールのサイズ、バイト(Byte)単位。 |
| [Subject] | 件名 |
| [To] | 宛先 |
| [UnRead] | メールの未既読を指定。TRUEなら未読、FALSEなら既読。 |
重要度(Importance)
重要度で絞り込みます。
受信日時(ReceivedTime)
受信日時で絞り込みます。以下は受信日が2023/05/01のメール。[ReceivedTime]は日時情報も含んでいて日時と日付の比較ではマッチしないので、以下のように範囲で指定します。
受信日時で絞り込みます。以下は受信日時が2023/05/08 09:00:00~2023/05/08 09:59:59のメール。
受信日時は分単位でしか指定できないため、秒単位で絞ることはできず範囲で絞るしかありません。以下は2023/05/08 21:15:00~2023/05/08 21:15:59に受信したメール。
送信者アドレス(SenderEmailAddress)
送信者アドレスで絞り込みます。以下は送信者アドレスが[email protected]のメール。
送信者名(SenderName)
送信者名が空欄ではないメール。
件名(Subject)
件名がキーワードに一致するメール。
サイズ(Size)
サイズで絞り込みます。以下はサイズが5000バイト以上のメール
サイズが1000~5000バイトのメール。
宛先(To)
宛先が[email protected]のメール。
未既読(UnRead)
未読のメール。
既読のメール。
複数条件
複数の条件を指定する場合は条件を論理演算子(AND、OR)で繋げます。
DASLクエリ
Outlook 2007以降のバージョンで導入されたフィルタ式の記述方法で、SQLに似た構文を使用しています。
名前空間
urn:schemas:httpmail
| プロパティ名 | 説明 |
|---|---|
| attachmentfilename | |
| bcc | BCC |
| calendar | |
| contacts | |
| content-disposition-type | |
| content-media-type | |
| date | |
| datereceived | 受信日時 |
| deleteditems | |
| displaybcc | |
| displaycc | |
| displayto | |
| drafts | |
| expiry-date | |
| flagcompleted | |
| from | |
| fromemail | 送信元アドレス |
| fromname | |
| hasattachment | 添付ファイル True:あり、False:なし |
| htmldescription | |
| importance | 重要度 0:低、1:標準、2:高 |
| inbox | |
| journal | |
| messageflag | |
| msgfolderroot | |
| normalizedsubject | |
| notes | |
| outbox | |
| priority | |
| read | 未既読。0:未読、1:既読 |
| reply-by | |
| reply-to | |
| savedestination | |
| saveinsent | |
| sendmsg | |
| sender | |
| senderemail | |
| sendername | |
| sentitems | |
| subject | 件名 |
| submitted | |
| tasks | |
| textdescription | 本文 |
| thread-topic | |
| to | |
| unreadcount |
| urn:schemas-microsoft-com:office:office | Keywords | 分類項目 |
重要度(Importance)
重要度が標準のメール。
受信日時(datereceived)
受信日が2023/05/01のメール。
受信日が今日のメール。
受信日が昨日のメール。
受信日が今週のメール。
受信日が先週のメール。
受信日が今月のメール。
受信日が先月のメール。
SQLで複数の条件を指定する場合は、Restrictメソッドを繰り返し実行します。以下は受信日時が今日で件名に重要を含むメール。
件名(Subject)
件名が重要で始まるメール。
件名が重要を含むメール。
件名がRE:で始まるメール。大文字小文字の区別はなし。
件名がFW:で始まるメール。大文字小文字の区別はなし。
カテゴリ(Categories)
カテゴリがついていないメール。
添付ファイル
添付ファイルがあるメール。
添付ファイルがないメール。
送信元アドレス(fromemail)
送信元アドレスに@docomo.ne.jpを含むメール。後方一致ができないので部分一致で行っています。
複数条件
受信日時が2023/05/01のメール。
受信日時が2023/01/01以降で添付ファイルがあるメール。
日時の形式
以下の形式の組み合わせで記述することができます。時刻区分(午前/午後)を指定しなかった場合、時刻は24時間表記となります。
- <日付>
- <日付> <時刻>
- <日付> <時刻><時刻区分>
- <日付> <時刻> <時刻区分>
- <日付> <時刻区分><時刻>
- <日付> <時刻区分> <時刻>
- <時刻区分><時刻> <日付>
- <時刻区分> <時刻> <日付>
日付の形式
- YYYY/MM/DD
- MM/DD/YYYY
- YYYY/M/D
- M/D/YYYY
- YYYY年MM月DD日
- MM月DD日YYYY年
時刻の形式
- HH:MM
- H:M
時刻区分
- 午前/午後
- AM/PM
- A/P
AM0:00、AM12:00は24時間表記の0:00、PM0:00、PM12:00は24時間表記の12:00を指します。
時刻を24時間表記で記述した場合、時刻区分は記述しても無視されます。
以下はどちらも2023/05/10 13:00を指します。
LIKE句
列(カラム)に対して文字列検索を行うことができます。
| クエリ | 説明 |
|---|---|
| LIKE '<文字列>' | 完全一致 |
| LIKE '<文字列>%' | 前方一致 |
| LIKE '%<文字列>%' | 文字列を含む |
比較演算子・論理演算子
| 演算子 | 意味 |
|---|---|
| a = b | aとbが等しい |
| a < b | aがb未満より小さい |
| a <= b | aがb以下 |
| a > b | aがbより大きい |
| a >= b | aがb以上 |
| a <> b | aとbが等しくない |
| a AND b | aかつb |
| a OR b | aまたはb |
| IS NULL | 否定 |
フィルタにかけたメールの件数を求めるには自作関数.dateAdd (Outlook)を使います。以下は未読メールの件数を取得します。
ここにはない演算子を使って条件を指定する場合は、MailItemでループするときにIF文を使います。
以下は受信日時が2022/01/01〜2022/01/31の範囲で、件名に
プログラム実行例
指定期間に受信したメールを取得(Outlook)
指定期間のメール情報を取得(Outlook)
指定期間に受信したメールからURLを抽出(Outlook)
指定期間に受信したメールの添付ファイルをすべて保存(Outlook)
指定期間のメールを日毎に集計(Outlook)
過去7日間に受信した迷惑メールの受信日時とメールアドレスを取得
未読メールの本文からURLを抽出
参考文献
関連記事
- MailItem オブジェクト
- メールメッセージを表します。
- MailItem.Attachments プロパティ (Outlook)
- メールに添付されているすべての添付ファイルを表すOutlook.HTMLBodyを返します。
- MailItem.BodyFormat プロパティ (Outlook)
- メール本文の形式を表すOlBodyFormatクラスの定数を取得または設定します。
- MailItem.To プロパティ (Outlook)
- Outlook アイテムの宛先の受信者の表示名一覧を表す、セミコロン(;)で区切られた文字列型(String) の一覧を設定します。
- MailItem.HTMLBody プロパティ (Outlook)
- メールのHTML形式の本文を表す文字列型の値を取得または設定します。
- MailItem.Parent プロパティ (Outlook)
- 指定したオブジェクトの親オブジェクトを返します。
- MailItem.ReceivedTime プロパティ (Outlook)
- アイテムを受信した日付と時刻を示す日付型(Date)の値を取得します。
- CDO.From プロパティ
- メッセージの差出人(From)を指定します。
- AppointmentItem オブジェクト
- 新しい予定を表すAppointmentItemオブジェクトを作成します。
- Folder オブジェクト
