Intelligent free-time search
First Claim
1. A method of performing a free-time search of calendar data, comprising steps of:
- determining, for each of a plurality of meeting invitees, each of at least one allowable participation type for which a meeting scheduler indicates that this meeting invitee is allowed to participate in a meeting to be scheduled, wherein at least one of the plurality of meeting invitees has at least two allowable participation types that each specify a different type of mandatory participation;
using calendar data comprising calendared events of the meeting invitees to programmatically build, for each of the plurality of meeting invitees, at least one busy bar representing calendared events of that meeting invitee, each of the at least one busy bars corresponding to one of the at least one allowable participation types of that meeting invitee, wherein;
each of the busy bars comprises a free-time segment for each time segment when the calendar data indicates that the meeting invitee is available for participation in the meeting in the corresponding allowable participation type and a busy-time segment for each time segment when the calendar data indicates that the meeting invitee is not available for participation in the meeting in the corresponding allowable participation type; and
for at least one of the plurality of meeting invitees, the free-time segments and the busy-time segments in a first one of the busy bars built for that meeting invitee are different from the free-time segments and the busy-time segments in a second one of the busy bars built for that meeting invitee;
for all of the busy bars for which the corresponding allowable participation type is in-person participation, performing steps of;
programmatically changing all of the busy-time segments that represent travel time to free-time segments on the busy bar; and
for each calendared event represented by an existing busy-time segment on the busy bar, computing a first travel time from a location of that calendared event to a location of the meeting and a second travel time from the location of the meeting to a location of the calendared event represented by a next-successive one of the existing busy-time segments, and programmatically adding a first new busy-time segment following the existing busy-time segment and a second new busy-time segment preceding the next calendared event, the first new busy-time segment representing the first travel time and the second new busy-time segment representing the second travel time;
adjusting at least one of the free-time segments in at least one of the busy bars based on one or more context-sensitive criteria which are applicable to this free-time search;
determining, from the busy bars, one or more free-time segments when each of the plurality of meeting invitees is available, in at least one of the at least one allowable participation types for that meeting invitee; and
providing the determined free-time segments as a result of the free-time search.
1 Assignment
0 Petitions
Accused Products
Abstract
Techniques are disclosed for performing free-time searches that exploit information of the type used with electronic calendars. By leveraging advanced calendaring system information and using location, other context information such as corporate policy, legal constraints, and technology constraints, and user-specific preferences to provide a complete picture of a person'"'"'s availability, the functionality (and therefore the value) of scheduling systems in increased, resulting in an ability to schedule meetings with more accuracy and less rework. Various allowable participation types for meeting invitees may be specified, and each invitee'"'"'s availability is determined accordingly. Location-sensitive travel times (including optional user-specific travel time adjustments) are used in preferred embodiments when in-person participation is required.
177 Citations
10 Claims
-
1. A method of performing a free-time search of calendar data, comprising steps of:
-
determining, for each of a plurality of meeting invitees, each of at least one allowable participation type for which a meeting scheduler indicates that this meeting invitee is allowed to participate in a meeting to be scheduled, wherein at least one of the plurality of meeting invitees has at least two allowable participation types that each specify a different type of mandatory participation; using calendar data comprising calendared events of the meeting invitees to programmatically build, for each of the plurality of meeting invitees, at least one busy bar representing calendared events of that meeting invitee, each of the at least one busy bars corresponding to one of the at least one allowable participation types of that meeting invitee, wherein; each of the busy bars comprises a free-time segment for each time segment when the calendar data indicates that the meeting invitee is available for participation in the meeting in the corresponding allowable participation type and a busy-time segment for each time segment when the calendar data indicates that the meeting invitee is not available for participation in the meeting in the corresponding allowable participation type; and for at least one of the plurality of meeting invitees, the free-time segments and the busy-time segments in a first one of the busy bars built for that meeting invitee are different from the free-time segments and the busy-time segments in a second one of the busy bars built for that meeting invitee; for all of the busy bars for which the corresponding allowable participation type is in-person participation, performing steps of; programmatically changing all of the busy-time segments that represent travel time to free-time segments on the busy bar; and for each calendared event represented by an existing busy-time segment on the busy bar, computing a first travel time from a location of that calendared event to a location of the meeting and a second travel time from the location of the meeting to a location of the calendared event represented by a next-successive one of the existing busy-time segments, and programmatically adding a first new busy-time segment following the existing busy-time segment and a second new busy-time segment preceding the next calendared event, the first new busy-time segment representing the first travel time and the second new busy-time segment representing the second travel time; adjusting at least one of the free-time segments in at least one of the busy bars based on one or more context-sensitive criteria which are applicable to this free-time search; determining, from the busy bars, one or more free-time segments when each of the plurality of meeting invitees is available, in at least one of the at least one allowable participation types for that meeting invitee; and providing the determined free-time segments as a result of the free-time search. - View Dependent Claims (2)
-
-
3. A method of programmatically scheduling a meeting for a plurality of meeting invitees, comprising steps of:
-
determining, for each of the plurality of meeting invitees, each of at least one allowable participation type for which a meeting scheduler indicates that this meeting invitee is allowed to participate in the meeting, wherein at least one of the plurality of meeting invitees has at least two allowable participation types for the event, each of which specifies a different type of mandatory participation; using calendar data comprising calendared events of the meeting invitees to programmatically build, for each of the plurality of meeting invitees, at least one busy bar representing calendared events of that meeting invitee, each of the at least one busy bars corresponding to one of the at least one allowable participation types of that meeting invitee, wherein; each of the busy bars comprises a free-time segment for each time segment when the calendar data indicates that the meeting invitee is available for participation in the meeting in the corresponding allowable participation type and a busy-time segment for each time segment when the calendar data indicates that the meeting invitee is not available for participation in the meeting in the corresponding allowable participation type; and for at least one of the plurality of meeting invitees, the free-time segments and the busy-time segments in a first one of the busy bars built for that meeting invitee are different from the free-time segments and the busy-time segments in a second one of the busy bars built for that meeting invitee; for all of the busy bars for which the corresponding allowable participation type is in-person participation, performing steps of; programmatically changing all of the busy-time segments that represent travel time to free-time segments on the busy bar; and for each calendared event represented by an existing busy-time segment on the busy bar, computing a first travel time from a location of that calendared event to a location of the meeting and a second travel time from the location of the meeting to a location of the calendared event represented by a next-successive one of the existing busy-time segments, and programmatically adding a first new busy-time segment following the existing busy-time segment and a second new busy-time segment preceding the next calendared event, the first new busy-time segment representing the first travel time and the second new busy-time segment representing the second travel time; adjusting at least one of the free-time segments in at least one of the busy bars based on one or more context-sensitive criteria which are applicable to the meeting; determining, from the busy bars, one or more free-time segments when each of the plurality of meeting invitees is available, in at least one of the at least one allowable participation types for that meeting invitee; and providing the determined free-time segments as candidate times for scheduling the meeting. - View Dependent Claims (4, 5, 6, 7, 8, 9, 10)
-
Specification