The default functionality in that button is as follows:
Set(IsBooking, true);
Navigate(ConfirmationScreen, Cover)
What you'll want to do is change the ConfirmationScreen reference to your additional screen. On that screen, you'll need to have text inputs that collect the additional data you want to be stored in the booking. The OnChange properties of those inputs will need to Set() a global variable value to your data entries for use in the confirmation screen.
You'll need a button in your custom screen that eventually Navigate()s the user to the ConfirmationScreen, like the default formula of the Book button.
Next, let's look at the Confirmation Screen. The screen's OnVisible property fires off the meeting request.
See below:
If(IsBooking,
UpdateContext({ShowLoading: true});
If(!BookForMeeting,
Office365.V2CalendarPostItem(MyCalendar, User().FullName & "'s Booking", StartDateTimeUTC, EndDateTimeUTC,
{RequiredAttendees:RoomsGallery.Selected.Email, Location: RoomsGallery.Selected.Name, Importance: "Normal", ShowAs: "Busy"}),
ClearCollect(RequiredAttendeesNoRoom, Split(MeetingsGallery.Selected.RequiredAttendees, ";"));
ForAll(AllRooms, RemoveIf(RequiredAttendeesNoRoom, Address = Result));
ClearCollect(RequiredAttendeesNoRoom, Concat(RequiredAttendeesNoRoom, Result & ";"));
ClearCollect(RequiredAttendeesNoRoom, Split(First(RequiredAttendeesNoRoom).Value, ";;"));
Set(RequiredAttendeesFinal, First(RequiredAttendeesNoRoom).Result);
Set(RequiredAttendeesTrue, RoomsGallery.Selected.Email & ";" & RequiredAttendeesFinal);
Office365.V2CalendarPatchItem(MyCalendar, MeetingsGallery.Selected.Id, If(MeetingsGallery.Selected.Subject = User().FullName & "'s Skype Meeting", User().FullName & "'s Booking", MeetingsGallery.Selected.Subject), StartDateTimeUTC, EndDateTimeUTC, {RequiredAttendees: RequiredAttendeesTrue, OptionalAttendees: MeetingsGallery.Selected.OptionalAttendees, Body: "Room has been updated to " & RoomsGallery.Selected.Name, Location: RoomsGallery.Selected.Name, Importance: "Normal", ShowAs: "Busy"})
);
UpdateContext({ShowLoading: false})
);
Set(IsBooking, false)
Here, we'll need to inject the custom data elements you want to display by altering the Office365.V2CalendarPostItem call. For example, you can use Body for the meeting description like this (note the inclusion of varYourDescription):
If(IsBooking,
UpdateContext({ShowLoading: true});
If(!BookForMeeting,
Office365.V2CalendarPostItem(MyCalendar, User().FullName & "'s Booking", StartDateTimeUTC, EndDateTimeUTC,
{RequiredAttendees:RoomsGallery.Selected.Email, Location: RoomsGallery.Selected.Name, Importance: "Normal", ShowAs: "Busy"
,Body:varYourDescription
}),
ClearCollect(RequiredAttendeesNoRoom, Split(MeetingsGallery.Selected.RequiredAttendees, ";"));
ForAll(AllRooms, RemoveIf(RequiredAttendeesNoRoom, Address = Result));
ClearCollect(RequiredAttendeesNoRoom, Concat(RequiredAttendeesNoRoom, Result & ";"));
ClearCollect(RequiredAttendeesNoRoom, Split(First(RequiredAttendeesNoRoom).Value, ";;"));
Set(RequiredAttendeesFinal, First(RequiredAttendeesNoRoom).Result);
Set(RequiredAttendeesTrue, RoomsGallery.Selected.Email & ";" & RequiredAttendeesFinal);
Office365.V2CalendarPatchItem(MyCalendar, MeetingsGallery.Selected.Id, If(MeetingsGallery.Selected.Subject = User().FullName & "'s Skype Meeting", User().FullName & "'s Booking", MeetingsGallery.Selected.Subject), StartDateTimeUTC, EndDateTimeUTC, {RequiredAttendees: RequiredAttendeesTrue, OptionalAttendees: MeetingsGallery.Selected.OptionalAttendees, Body: "Room has been updated to " & RoomsGallery.Selected.Name, Location: RoomsGallery.Selected.Name, Importance: "Normal", ShowAs: "Busy"})
);
UpdateContext({ShowLoading: false})
);
Set(IsBooking, false)
It appears attendees is already built out, and you'll need to do some testing to see where your other data elements may fit, but that's the high level of how it would be done.