Hi All,
I’m writing a script for outlook to pull out certain calendar entries for me. I effectively want to give a list of calendar event IDs to exclude and get everything else.
set exclusionList to {32,33}
set calendarEvents to every calendar event of theCal whose id is not in exclusionList
This doesn’t return anything. Is it possible to use the where clause with this list?
I considered getting all calendar entries and then cycling through but it took a very long time to get all of the calendar entries out.
Thanks,
Pete
The whose clause doesn’t work with lists. So, the short answer is: NO.
This is not entirely true. More often than not, with a large number of elements, the whose clause will run much slower than a well-written repeat loop.
To achieve speed, you can use script objects. As in the following illustrative example without using Microsoft Outlook (because I don’t have it). Working with event IDs instead of events itself improves the speed as well.
set exclusionList to {32, 33}
set idsList to {1, 2, 32, 400, 13}
-- tell application "Microsoft Outlook"
---- set idsList to id of calendar events of theCal
-- end tell
my findMissingItems(idsList, exclusionList)
on findMissingItems(referenceList, testList)
script o -- script object named "o"
property refLst : referenceList
property output : {}
end script
repeat with i from 1 to (count referenceList)
set thisItem to item i of o's refLst
if (thisItem is not in testList) then set end of o's output to thisItem
end repeat
return o's output
end findMissingItems