我使用以下代码提取今天的约会:
$olFolderCalendar = 9
$ol = New-Object -ComObject Outlook.Application
$ns = $ol.GetNamespace('MAPI')
$Start = (Get-Date).AddDays(-1).ToShortDateString() + " 00:00"
$End = (Get-Date).AddDays(+1).ToShortDateString() + " 00:00"
$Filter = "[MessageClass]='IPM.Appointment' AND [Start] > '$Start' AND [End] < '$End'"
$Appointments = $ns.GetDefaultFolder($olFolderCalendar).Items
$Appointments.Sort("[Start]")
$Appointments.IncludeRecurrences = $false
foreach ($Appointment in $Appointments.Restrict($Filter) ) {
...
}
Run Code Online (Sandbox Code Playgroud)
列出了今天的所有约会,但也列出了今天没有发生的许多重复约会(生日、每周约会……)。知道如何避免这种情况吗?
编辑:似乎所有这些不需要的约会最初都是从我的手机同步到 Outlook 的。我将在“干净”的电脑上尝试该脚本。
编辑:我在另一台没有同步元素的电脑上尝试了该脚本,结果是一样的:所有重复出现的元素都会显示,无论它们是否是今天。AND [IsRecurring] = '$False' 也没有帮助。
通过将自定义函数传递给filter方法,可以在 Javascript 中过滤数组:
const bigArray = [1, 2, 3, 4, 5, 6, 7, 8, 9];
const filteredArray = bigArray.filter(item => item < 5);
Run Code Online (Sandbox Code Playgroud)
也可以将函数作为“引用”传递:
function largerThanFive(item) {
return item => item < 5;
}
const bigArray = [1, 2, 3, 4, 5, 6, 7, 8, 9];
const filteredArray = bigArray.filter(largerThanFive);
Run Code Online (Sandbox Code Playgroud)
我尝试使用它通过以下方式将两个数组相交:
const bigArray = [1, 2, 3, 4, 5, 6, 7, 8, 9];
const smallArray = [0, 1, 2];
const filteredArray = bigArray.filter(smallArray.includes);
Run Code Online (Sandbox Code Playgroud)
但我收到错误:
TypeError: Cannot convert undefined …