I'm working on a room-booking app but my problem is that out of 10-ish rooms, only one room returns suggestions even though all the rooms are free.
I have a dropdown list with rooms with the OnChange of:
ClearCollect(times,Office365Outlook.FindMeetingTimesV2({
Start:DateAdd(Now(),-30,Minutes),
End:DateAdd(Now(),30,Minutes),
MeetingDuration:1,
RequiredAttendees: User().Email,
ResourceAttendees:
ComboBox.Selected.address
}).meetingTimeSuggestions); Sort(times,meetingTimeSlot.start.dateTime)
In Outlook I can see the calendars of all the rooms however all the rooms that do not return suggestions are greyed out even though I have no problems scheduling a meeting with any room and they all show up in Outlook's Room Finder:
The solution was a combination of user error and lacking documentation.
So first of all, all the room calendars were set on using the PST time zone (not my time zone). Use Set-MailboxCalendarConfiguration to set the correct time zone and possibly other relevant settings.
Adding to this: If I just specified a start parameter it would not always suggest times starting at that time but a time from the next 30 minute increment. Example: Current time: 10:04, Used start time: 10:00, got times from 10:30. However, when I used both Start AND End parameters I got the excepted response.
Hi @v-siky-msft,
Maybe I'm not being clear enough. I don't want to check against all the rooms at the same time. I only what to see the available times, one room at a time. That means that I want run the FindMeetingTimes against a single room, then another different room, and so on, for all the rooms in the room list. So I'm doing this by having the function in the OnChange-property of the drop down list containing different rooms. So the RecouseAttendee changes every time.
EDIT: I tried sending all the rooms in the room list to findmeetingtime and I get this response (note that all room calendars are in reality empty):
"emptySuggestionsReason": "",
"meetingTimeSuggestions": [
{
"confidence": 8.333333333333334,
"organizerAvailability": "free",
"attendeeAvailability": [
{
"availability": "busy",
"attendee": {
"emailAddress": {
"address": "room-08@example.com"
}
}
},
{
"availability": "free",
"attendee": {
"emailAddress": {
"address": "room-07@example.com"
}
}
},
{
"availability": "busy",
"attendee": {
"emailAddress": {
"address": "room-11@example.com"
}
}
},
...
],
"locations": [],
"meetingTimeSlot": {
"start": {
"dateTime": "2020-07-16T14:30:00.0000000",
"timeZone": "UTC"
},
"end": {
"dateTime": "2020-07-16T15:00:00.0000000",
"timeZone": "UTC"
}
}
},
{
"confidence": 100,
"organizerAvailability": "busy",
"attendeeAvailability": [
{
"availability": "free",
"attendee": {
"emailAddress": {
"address": "room-08@example.com"
}
}
},
{
"availability": "free",
"attendee": {
"emailAddress": {
"address": "room-07@example.com"
}
}
},
{
"availability": "free",
"attendee": {
"emailAddress": {
"address": "room-11@example.com"
}
}
},
...
],
"locations": [],
"meetingTimeSlot": {
"start": {
"dateTime": "2020-07-16T15:00:00.0000000",
"timeZone": "UTC"
},
"end": {
"dateTime": "2020-07-16T15:30:00.0000000",
"timeZone": "UTC"
}
}
},
Something is wrong with the room calendars. I looked into it maybe being a time zone thing but all calendars look the same.
Another problem is once I schedule a meeting with the "free" room (07), it doesn't change to busy. It always responds with "free".
Hi @Anonymous ,
The meeting time is find based on the ResourceAttendees, and since there is only one selected room address, only one room suggestion is returned.
I suggest you refer to Book A Room template.
Sik
No, that's not it. I want to individually check the availability of each room, room for room.
I have two drop down lists, one to select the room list and one to select the room. It's on the second drop down list (ComboBox in the above code) that the OnChange is run so the ResourceAttendees will be changed every time I change room in the "Room" drop down list. The result is then displayed elsewhere.
Hi @Anonymous ,
That's because there are only one selected room address in ResourceAttendees part code.
Please try to add all rooms address separated by semicolons using the following code.
Concat(FirstN(Office365Outlook.GetRoomsV2().value,20), address & ";")
ClearCollect(times,Office365Outlook.FindMeetingTimesV2({
Start:DateAdd(Now(),-30,Minutes),
End:DateAdd(Now(),30,Minutes),
MeetingDuration:1,
RequiredAttendees: User().Email,
ResourceAttendees:
Concat(FirstN(Office365Outlook.GetRoomsV2().value,20), address & ";")
}).meetingTimeSuggestions); Sort(times,meetingTimeSlot.start.dateTime)
Hope this helps.
Sik
WarrenBelz
44
Most Valuable Professional
mmbr1606
41
Super User 2025 Season 1
MS.Ragavendar
36