Items.Restrictリストリクト メソッド

Items コレクションにフィルタをかけ、一致するアイテムのコレクションを返します。

条件式はJetクエリまたはDASLクエリで記述します。

コレクションにフィルタをかけるメソッドとしてItems.Find メソッドもありますが、違いは検索速度くらいで検索対象のアイテムが少ないときに使います。検索対象のアイテムが多いときはItems.Restrict メソッドを使うと良いです。

構文
  1. 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]最終更新日時。日時の形式を参照。
[ReceivedTime]受信日時。日時の形式を参照。
[SenderEmailAddress]送信元アドレス
[SenderName]送信者名
[SentOn]送信日時
[Size]メールのサイズ、バイト(Byte)単位。
[Subject]件名
[To]宛先
[UnRead]メールの未既読を指定。TRUEなら未読、FALSEなら既読。
重要度(Importance)

重要度で絞り込みます。

UWSC
Items = Items.Restrict("[Importance] = 0")        // 低
Items = Items.Restrict("[Importance] = 1")        // 標準
Items = Items.Restrict("[Importance] = 2")        // 高
Items = Items.Restrict("[Importance] <= 1")    // 低~標準
受信日時(ReceivedTime)

受信日時で絞り込みます。以下は受信日が2023/05/01のメール。[ReceivedTime]は日時情報も含んでいて日時と日付の比較ではマッチしないので、以下のように範囲で指定します。

UWSC
Items = Items.Restrict("[ReceivedTime] >= '2023/05/01' AND [ReceivedTime] < '2023/05/02'")
UWSC
Items = Items.Restrict("[ReceivedTime] >= '2023/05/01 0:00' AND [ReceivedTime] < '2023/05/02 0:00'")

受信日時で絞り込みます。以下は受信日時が2023/05/08 09:00:002023/05/08 09:59:59のメール。

UWSC
Items = Items.Restrict("[ReceivedTime] >= '2023/05/08 09:00 PM' AND [ReceivedTime] < '2023/05/08 10:00 PM'")

受信日時は分単位でしか指定できないため、秒単位で絞ることはできず範囲で絞るしかありません。以下は2023/05/08 21:15:002023/05/08 21:15:59に受信したメール。

UWSC
Items = Items.Restrict("[ReceivedTime] >= '2023/05/08 09:15 PM' AND [ReceivedTime] < '2023/05/08 09:16 PM'")
送信者アドレス(SenderEmailAddress)

送信者アドレスで絞り込みます。以下は送信者アドレスがinfo@example.comのメール。

UWSC
Items = Items.Restrict("[SenderEmailAddress] = 'info@example.com'")
送信者名(SenderName)

送信者名が空欄ではないメール。

UWSC
Items = Items.Restrict("[SenderName] <> ''")
件名(Subject)

件名キーワードに一致するメール。

UWSC
Items = Items.Restrict("[Subject] = 'キーワード'")
サイズ(Size)

サイズで絞り込みます。以下はサイズが5000バイト以上のメール

UWSC
Items = Items.Restrict("[Size] >= 5000")

サイズが10005000バイトのメール。

UWSC
Items = Items.Restrict("[Size] >= 1000 AND [Size] <= 5000")
宛先(To)

宛先info@example.comのメール。

UWSC
Items = Items.Restrict("[To] = 'info@example.com'")
未既読(UnRead)

未読のメール。

UWSC
Items = Items.Restrict("[UnRead] = TRUE")

既読のメール。

UWSC
Items = Items.Restrict("[UnRead] = FALSE")
複数条件

複数の条件を指定する場合は条件を論理演算子(ANDOR)で繋げます。

UWSC
Items = Items.Restrict("[ReceivedTime] >= '2023/05/09' AND [ReceivedTime] < '2023/05/10'")

DASLクエリ

Outlook 2007以降のバージョンで導入されたフィルタ式の記述方法で、SQLに似た構文を使用しています。

UWSC
@SQL = 名前空間:プロパティ名 = 値
@SQL = 名前空間#フィールド名 = 値
@SQL = 名前空間#フィールド名 = 値1;値2;値3;
@SQL = 名前空間:プロパティ LIKE '%文字列%'
@SQL = 名前空間:プロパティ LIKE '%文字列'
@SQL = 名前空間:プロパティ名 IS NULL
urn:schemas:httpmail: Namespace | Microsoft Learn
名前空間
urn:schemas:httpmail
プロパティ名 説明
attachmentfilename
bccBCC
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)

重要度標準のメール。

UWSC
Items = Items.Restrict("@SQL=urn:schemas:httpmail:importance=1")
受信日時(datereceived)

受信日2023/05/01のメール。

UWSC
Items = Items.Restrict("@SQL=urn:schemas:httpmail:datereceived >= '2023/05/01'")

受信日が今日のメール。

UWSC
Items = Items.Restrict("@SQL=%today(urn:schemas:httpmail:datereceived)%")

受信日が昨日のメール。

UWSC
Items = Items.Restrict("@SQL=%yesterday(urn:schemas:httpmail:datereceived)%")

受信日が今週のメール。

UWSC
Items = Items.Restrict("@SQL= %thisweek(urn:schemas:httpmail:datereceived)%")

受信日が先週のメール。

UWSC
Items = Items.Restrict("@SQL= %lastweek(urn:schemas:httpmail:datereceived)%")

受信日が今月のメール。

UWSC
Items = Items.Restrict("@SQL=%thismonth(urn:schemas:httpmail:datereceived)%")

受信日が先月のメール。

UWSC
Items = Items.Restrict("@SQL=%lastmonth(urn:schemas:httpmail:datereceived)%")

SQLで複数の条件を指定する場合は、Restrictメソッドを繰り返し実行します。以下は受信日時が今日で件名重要を含むメール。

UWSC
Items = Items.Restrict("@SQL=%today(urn:schemas:httpmail:datereceived)%")
Items = Items.Restrict("@SQL=urn:schemas:httpmail:subject LIKE '%重要%'")
件名(Subject)

件名重要で始まるメール。

UWSC
Items = Items.Restrict("@SQL=urn:schemas:httpmail:subject LIKE '重要%'")

件名重要を含むメール。

UWSC
Items = Items.Restrict("@SQL=urn:schemas:httpmail:subject LIKE '%重要%'")

件名RE:で始まるメール。大文字小文字の区別はなし。

UWSC
Items = Items.Restrict("@SQL=urn:schemas:httpmail:subject like 'RE:%'")

件名FW:で始まるメール。大文字小文字の区別はなし。

UWSC
Items = Items.Restrict("@SQL=urn:schemas:httpmail:subject like 'FW:%'")
カテゴリ(Categories)

カテゴリがついていないメール。

UWSC
Items = Items.Restrict("@SQL=urn:schemas:httpmail:categories like ''")
添付ファイル

添付ファイルがあるメール。

UWSC
Items = Items.Restrict("@SQL= urn:schemas:httpmail:hasattachment=True")

添付ファイルがないメール。

UWSC
Items = Items.Restrict("@SQL= urn:schemas:httpmail:hasattachment=False")
送信元アドレス(fromemail)

送信元アドレス@docomo.ne.jpを含むメール。後方一致ができないので部分一致で行っています。

UWSC
Items = Items.Restrict("@SQL=urn:schemas:httpmail:fromemail LIKE '%@docomo.ne.jp%'")
複数条件

受信日時2023/05/01のメール。

UWSC
Items = Items.Restrict("@SQL=urn:schemas:httpmail:datereceived>='2023/05/01' AND urn:schemas:httpmail:datereceived<'2023/05/02'")

受信日時2023/01/01以降で添付ファイルがあるメール。

UWSC
Items = Items.Restrict("@SQL=urn:schemas:httpmail:datereceived>='2023/01/01' AND urn:schemas:httpmail:hasattachment=True")

日時の形式

以下の形式の組み合わせで記述することができます。時刻区分(午前/午後)を指定しなかった場合、時刻は24時間表記となります。

  • <日付>
  • <日付> <時刻>
  • <日付> <時刻><時刻区分>
  • <日付> <時刻> <時刻区分>
  • <日付> <時刻区分><時刻>
  • <日付> <時刻区分> <時刻>
  • <時刻区分><時刻> <日付>
  • <時刻区分> <時刻> <日付>
UWSC
Items = Items.Restrict("[ReceivedTime] >= '2023/05/01'")
Items = Items.Restrict("[ReceivedTime] >= '2023/05/01 12:00'")
Items = Items.Restrict("[ReceivedTime] >= '2023/05/01 05:00AM'")
Items = Items.Restrict("[ReceivedTime] >= '2023/05/01 05:00 AM'")
Items = Items.Restrict("[ReceivedTime] >= '2023/05/01 AM05:00'")
Items = Items.Restrict("[ReceivedTime] >= '2023/05/01 AM 05:00'")
Items = Items.Restrict("[ReceivedTime] >= 'AM05:00 2023/05/01'")
Items = Items.Restrict("[ReceivedTime] >= 'AM 05:00 2023/05/01'")

日付の形式

  • 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:00AM12:00は24時間表記の0:00PM0:00PM12:00は24時間表記の12:00を指します。

時刻を24時間表記で記述した場合、時刻区分は記述しても無視されます。

以下はどちらも2023/05/10 13:00を指します。

UWSC
2023/05/10 13:00 AM 
2023/05/10 13:00 PM

LIKE句

列(カラム)に対して文字列検索を行うことができます。

クエリ説明
LIKE '<文字列>'完全一致
LIKE '<文字列>%'前方一致
LIKE '%<文字列>%'文字列を含む

比較演算子・論理演算子

演算子意味
a = baとbが等しい
a < baがb未満より小さい
a <= baがb以下
a > baがbより大きい
a >= baがb以上
a <> baとbが等しくない
a AND baかつb
a OR baまたはb
IS NULL否定

フィルタにかけたメールの件数を求めるにはItems.Restrict メソッドを使います。以下は未読メールの件数を取得します。

UWSC
DIM Items = Folder.Items.Restrict("[UnRead] = TRUE")
PRINT Items.Count

ここにはない演算子を使って条件を指定する場合は、MailItemでループするときにIF文を使います。

以下は受信日時が2022/01/012022/01/31の範囲で、件名に重要を含むメールを抽出する例。

UWSC
Items = Items.Restrict("[ReceivedTime] >= '2022/01/01' AND [ReceivedTime] <= '2022/01/31'")

FOR MailItem IN Items
	IFB POS("重要", MailItem.Subject) <> 0 THEN
		
	ENDIF
NEXT

プログラム実行例

指定期間に受信したメールを取得(Outlook)

UWSC
使用関数

指定期間のメール情報を取得(Outlook)

UWSC
CONST olFolderInbox = 6

DIM Outlook = CREATEOLEOBJ("Outlook.Application")
DIM NameSpace = Outlook.GetNameSpace("MAPI")
DIM Folder = NameSpace.GetDefaultFolder(olFolderInbox)
DIM Items = Folder.Items

DIM start = "2022/01/01"
DIM end = "2022/01/31"

Items = Items.Restrict("[ReceivedTime] >= '" + start + "' AND [ReceivedTime] < '" + end + "'")

FOR MailItem IN Items
	WITH MailItem
		PRINT "受信日時:<#TAB>" + .ReceivedTime
		PRINT "件名:<#TAB><#TAB>" + .Subject
		PRINT "----------"
	ENDWITH
NEXT
使用関数

指定期間に受信したメールからURLを抽出(Outlook)

UWSC
CONST olFolderInbox = 6
CONST xlTop = -4160
CONST xlLeft = -4131

DIM Excel = ExcelBoot()

DIM Outlook = CREATEOLEOBJ("Outlook.Application")
DIM NameSpace = Outlook.GetNameSpace("MAPI")
DIM Folder = NameSpace.GetDefaultFolder(olFolderInbox)
DIM Items = Folder.Items

DIM start = "2021/01/01"
DIM end = "2021/01/02"

Items = Items.Restrict("[ReceivedTime] >= '" + start + "' AND [ReceivedTime] < '" + end + "'")

DIM array[][1] = "受信日時", "ReceivedTime", + _
					"送信者メールアドレス", "SenderEmailAddress", + _
					"送信者", "SenderName", + _
					"CC", "CC", + _
					"BCC", "BCC", + _
					"件名", "Subject", + _
					"本文", "Body", + _
					"HTML本文", "HTMLBody"

Excel.Application.ScreenUpdating = FALSE

FOR i = 0 TO UBound(array)
	Excel.Cells(1, i + 1).Value = array[i][0]
NEXT

DIM row = 2

FOR MailItem IN Items
	FUKIDASI(row + "/" + Items.Count)
	WITH MailItem
		FOR i = 0 TO UBound(array)
			Excel.Cells(row, i + 1).Value = EVAL("." + array[i][1])
		NEXT
	ENDWITH
	row = row + 1
NEXT

WITH Excel.Range("A1").CurrentRegion
	.ColumnWidth = 20
	.RowHeight = 30
	.VerticalAlignment = xlTop
	.HorizontalAlignment = xlLeft
ENDWITH

Excel.Application.ScreenUpdating = TRUE

//////////////////////////////////////////////////
// 【引数】
//   path : 開くファイルのパス名 
// 【戻り値】
//   <a href="https://uwsc.jp/com/excel/" >Excel オブジェクト</a> 
//////////////////////////////////////////////////
FUNCTION ExcelBoot(path = "")
	DIM Excel = CREATEOLEOBJ("Excel.Application")
	Excel.Visible = TRUE
	IFB path = "" THEN
		Excel.Workbooks.Add
	ELSE
		DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
		IFB FSO.GetParentFolderName(path) = "" THEN
			path = GET_CUR_DIR + "\" + path
		ENDIF
		Excel.Workbooks.Open(path)
	ENDIF
	RESULT = Excel
FEND

//////////////////////////////////////////////////
// 【引数】
//   inputs : 繰り返す文字列 
//   multiplier : inputsを繰り返す回数 
// 【戻り値】
//   inputsをmultiplier回を繰り返した文字列を返します 
//////////////////////////////////////////////////
FUNCTION strRepeat(inputs, multiplier)
	DIM res = ""
	FOR n = 1 TO multiplier
		res = res + inputs
	NEXT
	RESULT = res
FEND

//////////////////////////////////////////////////
// 【引数】
//   arrayname : 上限値を求める配列の名前 
//   dimension : 返す次元を示す整数 
// 【戻り値】
//   配列の上限値 
//////////////////////////////////////////////////
FUNCTION UBound(arrayname[], dimension = 1)
	RESULT = EVAL("RESIZE(arrayname" + strRepeat("[0]", dimension - 1) + ")")
FEND
使用関数
解説

指定期間に受信したメールの添付ファイルをすべて保存(Outlook)

UWSC
HASHTBL url = HASH_SORT

CONST olFolderInbox = 6

DIM Outlook = CREATEOLEOBJ("Outlook.Application")
DIM NameSpace = Outlook.GetNameSpace("MAPI")
DIM Folder = NameSpace.GetDefaultFolder(olFolderInbox)
DIM Items = Folder.Items

DIM start = "2021/01/01"
DIM end = "2021/01/07"

Items = Items.Restrict("[ReceivedTime] >= '" + start + "' AND [ReceivedTime] <= '" + end + "'")

DIM row = 1

FOR MailItem IN Items
	FUKIDASI(row + "/" + Items.Count)
	DIM Matches = reExecute(MailItem.Body, "https?://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?")
	FOR Match IN Matches
		url[Match.Value] = url[Match.Value] + 1
	NEXT
	row = row + 1
NEXT

FOR i = 0 TO LENGTH(url) - 1
	FUKIDASI(i + "/" + (LENGTH(url) - 1))
	PRINT url[i, HASH_KEY]
NEXT

//////////////////////////////////////////////////
// 【引数】
//   str : 正規表現による検索の対象となる文字列 
//   Pattern : 正規表現で使用するパターンを設定 
//   IgnoreCase : 大文字・小文字を区別しない場合はTrue、区別する場合はFalse 
//   Global : 文字列全体を検索する場合はTrue、しない場合はFalse 
// 【戻り値】
//   正規表現で検索した結果をMatchesコレクションとして返します。 
//////////////////////////////////////////////////
FUNCTION reExecute(str, Pattern, IgnoreCase = TRUE, Global = TRUE)
	DIM re = CREATEOLEOBJ("VBScript.RegExp")
	re.Pattern = Pattern
	re.IgnoreCase = IgnoreCase
	re.Global = Global
	RESULT = re.Execute(str)
FEND
使用関数
解説

指定期間のメールを日毎に集計(Outlook)

UWSC
CONST olFolderInbox = 6

DIM Outlook = CREATEOLEOBJ("Outlook.Application")
DIM NameSpace = Outlook.GetNameSpace("MAPI")
DIM Folder = NameSpace.GetDefaultFolder(olFolderInbox)
DIM Items = Folder.Items

DIM start = "2021/01/01"
DIM end = "2021/01/31"

Items = Items.Restrict("[ReceivedTime] >= '" + start + "' AND [ReceivedTime] <= '" + end + "'")

DIM folderspec = "D:\Desktop\Outlook\"
CreateFolders(folderspec)

DIM row = 1

FOR MailItem IN Items
	FUKIDASI(row + "/" + Items.Count)
	FOR i = 1 TO MailItem.Attachments.Count
		DIM Attachment = MailItem.Attachments.Item(i)
		DIM path = folderspec + Attachment
		path = uniqueFilename(path)
		Attachment.SaveAsFile(path)
		PRINT path
	NEXT
	row = row + 1
NEXT

//////////////////////////////////////////////////
// 【引数】
//   folderspec : 作成するフォルダのパス 
// 【戻り値】
//   
//////////////////////////////////////////////////
PROCEDURE CreateFolders(folderspec)
	WITH CREATEOLEOBJ("Scripting.FileSystemObject")
		folderspec = .GetAbsolutePathName(folderspec)
		IF !.DriveExists(.GetDriveName(folderspec)) THEN EXIT
		DIM parentPath = .GetParentFolderName(folderspec)
		IF !.FolderExists(parentPath) THEN CreateFolders(parentPath)
		IF !.FolderExists(folderspec) THEN .CreateFolder(folderspec)
	ENDWITH
FEND

//////////////////////////////////////////////////
// 【引数】
//   path : ファイルのパス 
// 【戻り値】
//   重複しないファイル名 
//////////////////////////////////////////////////
FUNCTION uniqueFilename(path)
	DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
	IFB FSO.FileExists(path) THEN
		DIM fol = FSO.GetParentFolderName(path)
		DIM filename = FSO.GetBaseName(path)
		DIM extension = FSO.GetExtensionName(path)
		DIM i = 2
		WHILE FSO.FileExists(FSO.BuildPath(fol, filename + " (" + i + ")." + extension))
			i = i + 1
		WEND
		RESULT = FSO.BuildPath(fol, filename + " (" + i + ")." + extension)
	ELSE
		RESULT = path
	ENDIF
FEND
結果
プレーンテキスト
2020/12/05	78
2020/12/06	60
2020/12/07	72
2020/12/08	82
2020/12/09	75
2020/12/10	91
2020/12/11	82
2020/12/12	77
2020/12/13	63
2020/12/14	71
2020/12/15	104
2020/12/16	84
2020/12/17	80
2020/12/18	93
2020/12/19	78
2020/12/20	66
2020/12/21	67
2020/12/22	75
2020/12/23	82
2020/12/24	73
2020/12/25	87
2020/12/26	73
2020/12/27	56
2020/12/28	65
2020/12/29	69
2020/12/30	44
2020/12/31	1
使用関数

過去7日間に受信した迷惑メールの受信日時とメールアドレスを取得

UWSC
CONST olFolderIndex = 6

DIM Outlook = CREATEOLEOBJ("Outlook.Application")
DIM NameSpace = Outlook.GetNameSpace("MAPI")
DIM Folder = NameSpace.GetDefaultFolder(olFolderIndex)
DIM Items = Folder.Items

Items = Items.Restrict("[ReceivedTime] >= '2020/12/01' AND [ReceivedTime] < '2020/12/31'")

HASHTBL dates = HASH_SORT

FOR MailItem IN Items
	DIM datetime = MailItem.ReceivedTime
	GETTIME(0, datetime)
	DIM date = G_TIME_YY4 + "/" + G_TIME_MM2 + "/" + G_TIME_DD2
	dates[date] = dates[date] + 1 
NEXT

FOR i = 0 TO LENGTH(dates) - 1
	PRINT dates[i, HASH_KEY] + "<#TAB>" + dates[i, HASH_VAL]
NEXT
使用関数
解説

未読メールの本文からURLを抽出

UWSC
DIM Outlook = CREATEOLEOBJ("Outlook.Application")
DIM NameSpace = Outlook.GetNameSpace("MAPI")
DIM Folders = NameSpace.Folders("Yahoo!_新").Folders("迷惑メール")
DIM startDate = dateAdd("d", -7, today())
DIM endDate = dateAdd("d", -1, today())
DIM Items = Folders.Items.Restrict("[ReceivedTime] >= '" + startDate + "' AND [ReceivedTime] < '" + endDate + "'")
DIM count = Items.Count

Items.Sort("受信日時")

FOR Index = 1 TO count
	WITH Items.Item(Index)
		PRINT .ReceivedTime + "<#TAB>" + .SenderEmailAddress
	ENDWITH
NEXT

//////////////////////////////////////////////////
// 【引数】
//   interval : 加算する時間間隔を表す文字列式(yyyy:年、m:月、d:日、ww:週、h:時、n:分、s:秒) 
//   num : dateに加算する値。未来は正、過去は負で指定 
//   date : 時間間隔を加算する日付 
// 【戻り値】
//   日時(date)に、指定した単位(interval)の時間(num)を加算して返します 
//////////////////////////////////////////////////
FUNCTION dateAdd(interval, num, date)
	DIM year, month, day, d
	GETTIME(0, date)
	DIM time = G_TIME_HH2 + ":" + G_TIME_NN2 + ":" + G_TIME_SS2
	SELECT interval
		CASE "yyyy"
			d = (G_TIME_YY + num) + "/" + G_TIME_MM2 + "/" + G_TIME_DD2
			IF time <> "00:00:00" THEN d = d + " " + time
		CASE "m"
			IFB num > 0 THEN
				year = G_TIME_YY + INT((G_TIME_MM + num) / 12)
				month = REPLACE(FORMAT(((G_TIME_MM + num) MOD 12), 2), " ", "0")
			ELSE
				year = G_TIME_YY + CEIL((G_TIME_MM + num) / 12 - 1)
				month = REPLACE(FORMAT(G_TIME_MM - (ABS(num) MOD 12), 2), " ", "0")
			ENDIF
			IF month = "00" THEN month = 12
			day = G_TIME_DD2
			d = "" + year + month + day
			IFB !isDate(d) THEN
				d = year + "/" + month + "/" + "01"
				d = getEndOfMonth(d)
			ELSE
				d = year + "/" + month + "/" + day
			ENDIF
			IF time <> "00:00:00" THEN d = d + " " + time
		CASE "d"
			t = GETTIME(num, date)
			d = G_TIME_YY4 + "/" + G_TIME_MM2 + "/" + G_TIME_DD2 + IIF(t MOD 86400, " " + G_TIME_HH2 + ":" + G_TIME_NN2 + ":" + G_TIME_SS2, "")
		CASE "ww"
			t = GETTIME(num * 7, date)
			d = G_TIME_YY4 + "/" + G_TIME_MM2 + "/" + G_TIME_DD2 + IIF(t MOD 86400, " " + G_TIME_HH2 + ":" + G_TIME_NN2 + ":" + G_TIME_SS2, "")
		CASE "h"
			t = GETTIME(num / 24, date)
			d = G_TIME_YY4 + "/" + G_TIME_MM2 + "/" + G_TIME_DD2 + IIF(t MOD 86400, " " + G_TIME_HH2 + ":" + G_TIME_NN2 + ":" + G_TIME_SS2, "")
		CASE "n"
			t = GETTIME(num / 1440, date)
			d = G_TIME_YY4 + "/" + G_TIME_MM2 + "/" + G_TIME_DD2 + IIF(t MOD 86400, " " + G_TIME_HH2 + ":" + G_TIME_NN2 + ":" + G_TIME_SS2, "")
		CASE "s"
			t = GETTIME(num / 86400, date)
			d = G_TIME_YY4 + "/" + G_TIME_MM2 + "/" + G_TIME_DD2 + IIF(t MOD 86400, " " + G_TIME_HH2 + ":" + G_TIME_NN2 + ":" + G_TIME_SS2, "")
	SELEND
	RESULT = d
FEND

//////////////////////////////////////////////////
// 【引数】
//   date : 日付(”YYYYMMDD” or “YYYY/MM/DD” or “YYYY-MM-DD” or “YYYYMMDDHHNNSS” or “YYYY/MM/DD HH:NN:SS”) 
//   m : 第一引数の指定日からプラスマイナスm月とする 
// 【戻り値】
//   dateからm月後の月末の日付 
//////////////////////////////////////////////////
FUNCTION getEndOfMonth(date, m = 0)
	date = dateAdd("m", m + 1, date)
	GETTIME(0, date)
	GETTIME(-G_TIME_DD, date)
	RESULT = G_TIME_YY4 + "/" + G_TIME_MM2 + "/" + G_TIME_DD2
FEND

//////////////////////////////////////////////////
// 【引数】
//   expr : 評価する式 
//   truepart : 評価した式がTrueのときに返す値 
//   falsepart : 評価した式がFalseのときに返す値 
// 【戻り値】
//   truepart : 評価した式がTrueのとき、falsepart : 評価した式がFalseのとき 
//////////////////////////////////////////////////
FUNCTION IIF(expr, truepart, falsepart)
	IFB EVAL(expr) THEN
		RESULT = truepart
	ELSE
		RESULT = falsepart
	ENDIF
FEND

//////////////////////////////////////////////////
// 【引数】
//   date : 存在するかを調べる日付文字列。YYYYMMDD or YYYY/MM/DD or YYYY-MM-DDのいずれかの形式。 
// 【戻り値】
//   TRUE : 日付として認識できる、FALSE : 日付として認識できない 
//////////////////////////////////////////////////
FUNCTION isDate(date)
	TRY
		GETTIME(0, date)
		RESULT = TRUE
	EXCEPT
		RESULT = FALSE
	ENDTRY
FEND

//////////////////////////////////////////////////
// 【引数】
//   
// 【戻り値】
//   今日の日付 
//////////////////////////////////////////////////
FUNCTION today()
	GETTIME()
	RESULT = G_TIME_YY4 + "/" + G_TIME_MM2 + "/" + G_TIME_DD2
FEND
使用関数

この記事は役に立ちましたか?

はい
いいえ
ご協力ありがとうございます。

参考文献

  1. Items.Restrict メソッド (Outlook) | Microsoft Learn
  2. https://platform.kobot.jp/support/solutions/articles/47001150388-outlook%E3%83%A1%E3%83%BC%E3%83%AB%E5%8F%96%E5%BE%97%E6%99%82%E3%81%AE%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6
  3. https://vicugna-pacos.github.io/vba/outlook/search-and-filter/
  4. Get Outlook Mail activity Filter with From AND Subject - Help - UiPath Community Forum
  5. Compoze Software API Documentation: Class HttpMailProperty

関連記事

MailItem オブジェクト
メールメッセージを表します。
MailItem.Attachments プロパティ (Outlook)
メールに添付されているすべての添付ファイルを表すOutlook.Restrictを返します。
MailItem.BodyFormat プロパティ (Outlook)
メール本文の形式を表すOlBodyFormatクラスの定数を取得または設定します。
MailItem.CC プロパティ (Outlook)
メールのカーボンコピー(CC)名の一覧表示を表す文字列を返します。
MailItem.To プロパティ (Outlook)
Outlook アイテムの宛先の受信者の表示名一覧を表す、セミコロン(;)で区切られた文字列型(String) の一覧を設定します。
MailItem.HTMLBody プロパティ (Outlook)
メールのHTML形式の本文を表す文字列型の値を取得または設定します。
MailItem.Importance プロパティ (Outlook)
メールの重要度を取得または設定します。
MailItem.Parent プロパティ (Outlook)
指定したオブジェクトの親オブジェクトを返します。
MailItem.ReceivedTime プロパティ (Outlook)
アイテムを受信した日付と時刻を示す日付型(Date)の値を取得します。
MailItem.SenderEmailAddress プロパティ (Outlook)
Outlookアイテムの送信者の電子メールアドレスを表す文字列(String)を返します。