Contents
Items コレクションにフィルタをかけ、一致するアイテムのコレクションを返します。
条件式はJetクエリまたはDASLクエリで記述します。
コレクションにフィルタをかけるメソッドとしてItems.Find メソッドもありますが、違いは検索速度くらいで検索対象のアイテムが少ないときに使います。検索対象のアイテムが多いときは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] | 最終更新日時。日時の形式を参照。 |
[ReceivedTime] | 受信日時。日時の形式を参照。 |
[SenderEmailAddress] | 送信元アドレス |
[SenderName] | 送信者名 |
[SentOn] | 送信日時 |
[Size] | メールのサイズ、バイト(Byte)単位。 |
[Subject] | 件名 |
[To] | 宛先 |
[UnRead] | メールの未既読を指定。TRUEなら未読、FALSEなら既読。 |
重要度(Importance)
重要度で絞り込みます。
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]は日時情報も含んでいて日時と日付の比較ではマッチしないので、以下のように範囲で指定します。
Items = Items.Restrict("[ReceivedTime] >= '2023/05/01' AND [ReceivedTime] < '2023/05/02'")
Items = Items.Restrict("[ReceivedTime] >= '2023/05/01 0:00' AND [ReceivedTime] < '2023/05/02 0:00'")
受信日時で絞り込みます。以下は受信日時が2023/05/08 09:00:00~2023/05/08 09:59:59のメール。
Items = Items.Restrict("[ReceivedTime] >= '2023/05/08 09:00 PM' AND [ReceivedTime] < '2023/05/08 10:00 PM'")
受信日時は分単位でしか指定できないため、秒単位で絞ることはできず範囲で絞るしかありません。以下は2023/05/08 21:15:00~2023/05/08 21:15:59に受信したメール。
Items = Items.Restrict("[ReceivedTime] >= '2023/05/08 09:15 PM' AND [ReceivedTime] < '2023/05/08 09:16 PM'")
送信者アドレス(SenderEmailAddress)
送信者アドレスで絞り込みます。以下は送信者アドレスがinfo@example.comのメール。
Items = Items.Restrict("[SenderEmailAddress] = 'info@example.com'")
送信者名(SenderName)
送信者名が空欄ではないメール。
Items = Items.Restrict("[SenderName] <> ''")
件名(Subject)
件名がキーワードに一致するメール。
Items = Items.Restrict("[Subject] = 'キーワード'")
サイズ(Size)
サイズで絞り込みます。以下はサイズが5000バイト以上のメール
Items = Items.Restrict("[Size] >= 5000")
サイズが1000~5000バイトのメール。
Items = Items.Restrict("[Size] >= 1000 AND [Size] <= 5000")
宛先(To)
宛先がinfo@example.comのメール。
Items = Items.Restrict("[To] = 'info@example.com'")
未既読(UnRead)
未読のメール。
Items = Items.Restrict("[UnRead] = TRUE")
既読のメール。
Items = Items.Restrict("[UnRead] = FALSE")
複数条件
複数の条件を指定する場合は条件を論理演算子(AND、OR)で繋げます。
Items = Items.Restrict("[ReceivedTime] >= '2023/05/09' AND [ReceivedTime] < '2023/05/10'")
DASLクエリ
Outlook 2007以降のバージョンで導入されたフィルタ式の記述方法で、SQLに似た構文を使用しています。
@SQL = 名前空間:プロパティ名 = 値
@SQL = 名前空間#フィールド名 = 値
@SQL = 名前空間#フィールド名 = 値1;値2;値3;
@SQL = 名前空間:プロパティ LIKE '%文字列%'
@SQL = 名前空間:プロパティ LIKE '%文字列'
@SQL = 名前空間:プロパティ名 IS NULL
名前空間
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)
重要度が標準のメール。
Items = Items.Restrict("@SQL=urn:schemas:httpmail:importance=1")
受信日時(datereceived)
受信日が2023/05/01のメール。
Items = Items.Restrict("@SQL=urn:schemas:httpmail:datereceived >= '2023/05/01'")
受信日が今日のメール。
Items = Items.Restrict("@SQL=%today(urn:schemas:httpmail:datereceived)%")
受信日が昨日のメール。
Items = Items.Restrict("@SQL=%yesterday(urn:schemas:httpmail:datereceived)%")
受信日が今週のメール。
Items = Items.Restrict("@SQL= %thisweek(urn:schemas:httpmail:datereceived)%")
受信日が先週のメール。
Items = Items.Restrict("@SQL= %lastweek(urn:schemas:httpmail:datereceived)%")
受信日が今月のメール。
Items = Items.Restrict("@SQL=%thismonth(urn:schemas:httpmail:datereceived)%")
受信日が先月のメール。
Items = Items.Restrict("@SQL=%lastmonth(urn:schemas:httpmail:datereceived)%")
SQLで複数の条件を指定する場合は、Restrictメソッドを繰り返し実行します。以下は受信日時が今日で件名に重要を含むメール。
Items = Items.Restrict("@SQL=%today(urn:schemas:httpmail:datereceived)%")
Items = Items.Restrict("@SQL=urn:schemas:httpmail:subject LIKE '%重要%'")
件名(Subject)
件名が重要で始まるメール。
Items = Items.Restrict("@SQL=urn:schemas:httpmail:subject LIKE '重要%'")
件名が重要を含むメール。
Items = Items.Restrict("@SQL=urn:schemas:httpmail:subject LIKE '%重要%'")
件名がRE:で始まるメール。大文字小文字の区別はなし。
Items = Items.Restrict("@SQL=urn:schemas:httpmail:subject like 'RE:%'")
件名がFW:で始まるメール。大文字小文字の区別はなし。
Items = Items.Restrict("@SQL=urn:schemas:httpmail:subject like 'FW:%'")
カテゴリ(Categories)
カテゴリがついていないメール。
Items = Items.Restrict("@SQL=urn:schemas:httpmail:categories like ''")
添付ファイル
添付ファイルがあるメール。
Items = Items.Restrict("@SQL= urn:schemas:httpmail:hasattachment=True")
添付ファイルがないメール。
Items = Items.Restrict("@SQL= urn:schemas:httpmail:hasattachment=False")
送信元アドレス(fromemail)
送信元アドレスに@docomo.ne.jpを含むメール。後方一致ができないので部分一致で行っています。
Items = Items.Restrict("@SQL=urn:schemas:httpmail:fromemail LIKE '%@docomo.ne.jp%'")
複数条件
受信日時が2023/05/01のメール。
Items = Items.Restrict("@SQL=urn:schemas:httpmail:datereceived>='2023/05/01' AND urn:schemas:httpmail:datereceived<'2023/05/02'")
受信日時が2023/01/01以降で添付ファイルがあるメール。
Items = Items.Restrict("@SQL=urn:schemas:httpmail:datereceived>='2023/01/01' AND urn:schemas:httpmail:hasattachment=True")
日時の形式
以下の形式の組み合わせで記述することができます。時刻区分(午前/午後)を指定しなかった場合、時刻は24時間表記となります。
- <日付>
- <日付> <時刻>
- <日付> <時刻><時刻区分>
- <日付> <時刻> <時刻区分>
- <日付> <時刻区分><時刻>
- <日付> <時刻区分> <時刻>
- <時刻区分><時刻> <日付>
- <時刻区分> <時刻> <日付>
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:00、AM12:00は24時間表記の0:00、PM0:00、PM12:00は24時間表記の12:00を指します。
時刻を24時間表記で記述した場合、時刻区分は記述しても無視されます。
以下はどちらも2023/05/10 13:00を指します。
2023/05/10 13:00 AM
2023/05/10 13:00 PM
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 | 否定 |
フィルタにかけたメールの件数を求めるにはItems.Restrict メソッドを使います。以下は未読メールの件数を取得します。
DIM Items = Folder.Items.Restrict("[UnRead] = TRUE")
PRINT Items.Count
ここにはない演算子を使って条件を指定する場合は、MailItemでループするときにIF文を使います。
以下は受信日時が2022/01/01〜2022/01/31の範囲で、件名に
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)
指定期間のメール情報を取得(Outlook)
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)
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)
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)
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
- Items.Restrict メソッド (Outlook) | Microsoft Learn
- 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
- https://vicugna-pacos.github.io/vba/outlook/search-and-filter/
- Get Outlook Mail activity Filter with From AND Subject - Help - UiPath Community Forum
- Compoze Software API Documentation: Class HttpMailProperty
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日間に受信した迷惑メールの受信日時とメールアドレスを取得
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を抽出
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
この記事は役に立ちましたか?
参考文献
関連記事
- 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)を返します。